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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -132
  12. package/dist/index.js +41 -100
  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,255 +0,0 @@
1
- /**
2
- * Deterministic signal-intake stage logic.
3
- *
4
- * The fast intake path is a fixed funnel, so stages are driven here rather than
5
- * by an agent loop: round 1 comes from the precomputed pack, round 2 is one
6
- * structured call, round 3 is a deterministic client-side picker, and synthesis
7
- * is one structured call. This module owns no I/O.
8
- */
9
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
10
- import { z } from "zod";
11
- import { createStructuredModel } from "../../shared/agent/model.config.js";
12
- import { normalizeIntakePack } from "./intake.pack.generator.js";
13
- const optionSchema = z.object({
14
- label: z.string().min(1),
15
- description: z.string(),
16
- });
17
- const answerFirstQuestionSchema = z.object({
18
- missingAxis: z
19
- .enum(["purpose", "desired_attributes", "exchange", "constraint"])
20
- .describe("The unanswered decision axis selected only from the answered intake rounds."),
21
- title: z.string(),
22
- prompt: z.string().min(1),
23
- answerGroundedOptions: z
24
- .array(optionSchema)
25
- .min(2)
26
- .max(3)
27
- .describe("Two or three distinct choices derived only from the answered intake rounds."),
28
- multiSelect: z.boolean(),
29
- });
30
- const followUpPlanSchema = z.object({
31
- questions: z.array(answerFirstQuestionSchema),
32
- plannedFollowUpCount: z.number().int().min(0),
33
- });
34
- const profileBridgePlanSchema = z.object({
35
- bridges: z.array(z.object({
36
- questionIndex: z.number().int().min(0),
37
- profileBridgeOption: optionSchema
38
- .nullable()
39
- .describe("One natural profile intersection, or null when the bridge would be forced."),
40
- })),
41
- });
42
- const synthesisSchema = z.object({
43
- description: z.string().min(1),
44
- lookingFor: z.string().min(1),
45
- youBring: z.string().min(1),
46
- });
47
- /** Static round-1 question used only when pack generation fails outright. */
48
- export const FALLBACK_WHO_QUESTION = {
49
- title: "Question 1",
50
- prompt: "Who do you want to meet right now?",
51
- options: [
52
- { label: "A collaborator", description: "Someone to build or work on something with" },
53
- { label: "A customer or user", description: "Someone who has the problem you solve" },
54
- { label: "An expert", description: "Someone who has done this before" },
55
- { label: "A peer", description: "Someone at a similar stage to compare notes with" },
56
- ],
57
- multiSelect: false,
58
- };
59
- /** Static round-2 question used when live generation fails. */
60
- export const FALLBACK_BRING_QUESTION = {
61
- title: "Question 2",
62
- prompt: "What would you bring, and what gap should they fill?",
63
- options: [
64
- { label: "Hands-on expertise", description: "You can do the work with them" },
65
- { label: "Introductions and reach", description: "You can open doors for them" },
66
- { label: "Funding or resources", description: "You can back what they are doing" },
67
- { label: "A mutual exchange", description: "You each cover the other's gap" },
68
- ],
69
- multiSelect: false,
70
- };
71
- const PLAN_SYSTEM_PROMPT = `You plan and write answer-first follow-up intake questions for a networking product.
72
-
73
- You receive ONLY the answered intake rounds. Use them to choose the next missing
74
- axis, write a standalone prompt that names the newly stated person or domain, and
75
- create 2-3 meaningfully distinct answerGroundedOptions. Choose the most useful
76
- unanswered axis from: purpose, desired_attributes, exchange, or constraint. Never
77
- re-ask an axis the rounds already answer. Do not infer a professional background,
78
- industry, capability, or commercial goal that the rounds do not state.
79
-
80
- Every answerGroundedOption must be visibly anchored to the stated person or domain
81
- in its label or description and represent a concrete, distinct path. Generic labels
82
- such as "Learn", "Share", "Collaborate", or "Networking" are invalid when they do
83
- not say what the user would learn, share, collaborate on, or network about.
84
- - Scuba divers: "Learn diving techniques", "Find dive buddies", "Share dive stories".
85
- - Climate founders: "Compare climate sectors", "Find climate peers", "Discuss adaptation".
86
-
87
- Each option needs a short label and a one-line description. Set multiSelect true
88
- only when several options can genuinely apply together. Never expose raw JSON,
89
- IDs, or internal vocabulary. plannedFollowUpCount is the TOTAL number of follow-up
90
- questions the interview should contain, including any returned now; when the input
91
- already fixes it, echo that value unchanged.`;
92
- const PROFILE_BRIDGE_SYSTEM_PROMPT = `You may append one optional profile bridge to each already-written signal-intake question.
93
-
94
- The question, missing axis, and answer-grounded options are immutable. For each
95
- questionIndex, compare them with the profile brief and return either one genuinely
96
- useful profileBridgeOption or null. A bridge is useful only when it creates a
97
- natural additional path that is not already represented. Never rewrite, replace,
98
- remove, or reclassify a core option. Never return more than one bridge per question.
99
- When the profile theme is unrelated or the intersection would feel forced, return
100
- null. Running club + investor may support one sponsorship bridge; scuba divers +
101
- pianist should return null.`;
102
- const SYNTHESIS_SYSTEM_PROMPT = `You write one clear signal for a networking product.
103
-
104
- Combine the brief and the person's answers into a specific description of who they
105
- want to meet, what they bring or need, and any stated constraint. Write it in the
106
- person's own voice, first person, 1-3 sentences, concrete and free of hype. Also
107
- return short "lookingFor" and "youBring" summaries for the confirmation card.
108
- When revision feedback is present, it is the person correcting a draft they
109
- already read: apply it to the whole signal rather than treating it as a place or
110
- community constraint. Never invent facts beyond the brief and the answers.`;
111
- /**
112
- * Render an answer as a human-readable label.
113
- *
114
- * @param answer - Selected options plus optional free text
115
- * @returns Comma-joined non-empty parts
116
- */
117
- export function answerLabel(answer) {
118
- return [...answer.selectedOptions, answer.freeText?.trim() ?? ""].filter(Boolean).join(", ");
119
- }
120
- function normalizeFollowUpQuestion(question, profileBridge, brief) {
121
- const seen = new Set();
122
- const normalizeOption = (option) => {
123
- const label = option.label.trim();
124
- const key = label.toLocaleLowerCase();
125
- if (!label || seen.has(key))
126
- return null;
127
- seen.add(key);
128
- return { label, description: option.description.trim() };
129
- };
130
- const answerGroundedOptions = question.answerGroundedOptions
131
- .map(normalizeOption)
132
- .filter((option) => option !== null)
133
- .slice(0, 3);
134
- if (answerGroundedOptions.length < 2) {
135
- throw new Error("Follow-up question needs at least two answer-grounded options.");
136
- }
137
- const profileBridgeOption = profileBridge ? normalizeOption(profileBridge) : null;
138
- return normalizeIntakePack({
139
- brief,
140
- question: {
141
- title: question.title,
142
- prompt: question.prompt,
143
- options: [
144
- ...answerGroundedOptions,
145
- ...(profileBridgeOption ? [profileBridgeOption] : []),
146
- ],
147
- multiSelect: question.multiSelect,
148
- },
149
- }).question;
150
- }
151
- /** Runs the two live stages of the fast intake funnel: follow-up planning and synthesis. */
152
- export class SignalIntakeOrchestrator {
153
- /**
154
- * @param models - Optional injected structured models. Tests pass stubs.
155
- */
156
- constructor(models) {
157
- this.plannerModel = models?.planner
158
- ?? createStructuredModel("signalIntakePack", followUpPlanSchema);
159
- this.profileBridgeModel = models?.profileBridge
160
- ?? createStructuredModel("signalIntakePack", profileBridgePlanSchema, { name: "signal_intake_profile_bridges" });
161
- this.synthesisModel = models?.synthesis
162
- ?? createStructuredModel("signalIntakePack", synthesisSchema);
163
- }
164
- /**
165
- * Plan and write follow-up questions from the brief and answered rounds.
166
- *
167
- * @param input - Brief, answered rounds, per-call cap, and any locked plan
168
- * @returns Up to `maxFollowUps` renderable questions plus the total plan;
169
- * the static fallback question with count 1 when generation fails
170
- */
171
- async generateFollowUps(input) {
172
- const roundsText = input.rounds
173
- .map((round, index) => `Round ${index + 1} — Q: ${round.prompt}\nA: ${answerLabel(round.answer)}`)
174
- .join("\n\n");
175
- const lockedLine = input.plannedFollowUpCount !== undefined
176
- ? `\n\nThe interview plan is fixed at ${input.plannedFollowUpCount} follow-up question(s) in total; ${input.rounds.length - 1} already asked. Echo that count unchanged.`
177
- : "";
178
- try {
179
- const raw = await this.plannerModel.invoke([
180
- new SystemMessage(PLAN_SYSTEM_PROMPT),
181
- new HumanMessage(`ANSWERED ROUNDS:\n${roundsText}\n\nWrite up to ${input.maxFollowUps} follow-up question(s).${lockedLine}`),
182
- ]);
183
- const coreQuestions = raw.questions.slice(0, input.maxFollowUps);
184
- const bridgeByQuestion = new Map();
185
- if (coreQuestions.length > 0 && input.brief.trim()) {
186
- try {
187
- const bridgePlan = await this.profileBridgeModel.invoke([
188
- new SystemMessage(PROFILE_BRIDGE_SYSTEM_PROMPT),
189
- new HumanMessage(`ANSWERED ROUNDS:\n${roundsText}\n\nPROFILE BRIEF:\n${input.brief}\n\nIMMUTABLE CORE QUESTIONS:\n${JSON.stringify(coreQuestions, null, 2)}\n\nReturn one bridge decision for each questionIndex.`),
190
- ]);
191
- for (const bridge of bridgePlan.bridges) {
192
- if (bridge.questionIndex < coreQuestions.length
193
- && !bridgeByQuestion.has(bridge.questionIndex)) {
194
- bridgeByQuestion.set(bridge.questionIndex, bridge.profileBridgeOption);
195
- }
196
- }
197
- }
198
- catch {
199
- // Profile personalization is optional. A bridge-model failure must not
200
- // discard valid answer-grounded questions from the primary model.
201
- }
202
- }
203
- const questions = coreQuestions.map((question, index) => normalizeFollowUpQuestion(question, bridgeByQuestion.get(index) ?? null, input.brief));
204
- // Backstop: while budget remains, a successful empty plan must not
205
- // silently shrink the interview; serve the static fallback instead.
206
- if (questions.length === 0 && input.maxFollowUps > 0) {
207
- return {
208
- questions: [FALLBACK_BRING_QUESTION],
209
- plannedFollowUpCount: input.plannedFollowUpCount ?? 1,
210
- };
211
- }
212
- return {
213
- questions,
214
- plannedFollowUpCount: input.plannedFollowUpCount
215
- ?? Math.max(raw.plannedFollowUpCount, questions.length),
216
- };
217
- }
218
- catch {
219
- if (input.maxFollowUps <= 0)
220
- return { questions: [], plannedFollowUpCount: 0 };
221
- return {
222
- questions: [FALLBACK_BRING_QUESTION],
223
- plannedFollowUpCount: input.plannedFollowUpCount ?? 1,
224
- };
225
- }
226
- }
227
- /**
228
- * Write the signal from every answered round, any where-constraint, and any
229
- * revision feedback.
230
- *
231
- * @param input - Brief, ordered rounds, optional where constraint, optional feedback
232
- * @returns Description plus card summary fields
233
- * @throws Propagates model failure so the caller can mark the run failed
234
- */
235
- async synthesize(input) {
236
- const roundsText = input.rounds
237
- .map((round) => `Q: ${round.prompt}\nA: ${answerLabel(round.answer)}`)
238
- .join("\n\n");
239
- const whereLine = input.whereText?.trim()
240
- ? `\n\nWhere constraint: ${input.whereText.trim()}`
241
- : "";
242
- const feedbackLine = input.feedback?.trim()
243
- ? `\n\nRevision feedback on the previous draft: ${input.feedback.trim()}`
244
- : "";
245
- const result = await this.synthesisModel.invoke([
246
- new SystemMessage(SYNTHESIS_SYSTEM_PROMPT),
247
- new HumanMessage(`Brief:\n${input.brief}\n\n${roundsText}${whereLine}${feedbackLine}\n\nWrite the signal.`),
248
- ]);
249
- return {
250
- description: result.description.trim(),
251
- lookingFor: result.lookingFor.trim(),
252
- youBring: result.youBring.trim(),
253
- };
254
- }
255
- }
@@ -1,57 +0,0 @@
1
- /**
2
- * Signal intake pack generator.
3
- *
4
- * Produces the offline half of the fast intake path: a prose brief written for
5
- * the intake task and a ready round-1 question. Both are stored per user and
6
- * refreshed in the background, so `/i/new` can render round 1 with no model call.
7
- */
8
- import type { BaseLanguageModelInput } from "@langchain/core/language_models/base";
9
- import type { Runnable } from "@langchain/core/runnables";
10
- /** One selectable option on the round-1 question. */
11
- export interface IntakePackQuestionOption {
12
- label: string;
13
- description: string;
14
- }
15
- /** Round-1 question, shaped exactly like the frontend `QuestionPayload`. */
16
- export interface IntakePackQuestion {
17
- title: string;
18
- prompt: string;
19
- options: IntakePackQuestionOption[];
20
- multiSelect: boolean;
21
- }
22
- /** Everything the generator needs about a user. */
23
- export interface IntakePackInput {
24
- premises: Array<{
25
- text: string;
26
- }>;
27
- networkTitles: string[];
28
- globalContext: string | null;
29
- }
30
- /** Stored artifact: the brief plus the ready round-1 question. */
31
- export interface IntakePack {
32
- brief: string;
33
- question: IntakePackQuestion;
34
- }
35
- /** Generates and normalizes the per-user intake pack. */
36
- export declare class SignalIntakePackGenerator {
37
- private readonly model;
38
- /**
39
- * @param model - Optional injected structured model. Tests pass a stub.
40
- */
41
- constructor(model?: Runnable<BaseLanguageModelInput, IntakePack>);
42
- /**
43
- * Generate the intake pack for one user.
44
- *
45
- * @param input - Active premises, membership titles, and the global context paragraph
46
- * @returns Normalized brief and round-1 question
47
- */
48
- generate(input: IntakePackInput): Promise<IntakePack>;
49
- }
50
- /**
51
- * Clamp a generated pack into the shape the frontend can render.
52
- *
53
- * @param pack - Raw model output
54
- * @returns Normalized pack
55
- * @throws When the question has fewer than 2 usable options
56
- */
57
- export declare function normalizeIntakePack(pack: IntakePack): IntakePack;
@@ -1,90 +0,0 @@
1
- /**
2
- * Signal intake pack generator.
3
- *
4
- * Produces the offline half of the fast intake path: a prose brief written for
5
- * the intake task and a ready round-1 question. Both are stored per user and
6
- * refreshed in the background, so `/i/new` can render round 1 with no model call.
7
- */
8
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
9
- import { z } from "zod";
10
- import { createStructuredModel } from "../../shared/agent/model.config.js";
11
- const packSchema = z.object({
12
- brief: z.string().min(1),
13
- question: z.object({
14
- title: z.string(),
15
- prompt: z.string().min(1),
16
- options: z.array(z.object({ label: z.string().min(1), description: z.string() })),
17
- multiSelect: z.boolean(),
18
- }),
19
- });
20
- const SYSTEM_PROMPT = `You prepare a person's signal-intake pack for a networking product.
21
-
22
- Produce two things:
23
-
24
- 1. "brief": 4-8 sentences of prose, third person, written specifically to help a
25
- small model run an intake interview with this person. Cover who they are, what
26
- they plausibly need from a connection, what they can offer in return, and which
27
- communities they belong to. Be concrete. Never invent facts beyond the input.
28
-
29
- 2. "question": the opening intake question asking who they want to meet right now.
30
- Give 3-4 concrete, distinct recipient profiles grounded in the person's actual
31
- background (for example a design partner, a technical co-founder, an early
32
- customer, a specific expertise gap) — never generic choices like "anyone".
33
- Each option needs a short label and a one-line description. Set multiSelect false.
34
-
35
- Never expose raw JSON, IDs, or internal vocabulary in either field.`;
36
- /** Generates and normalizes the per-user intake pack. */
37
- export class SignalIntakePackGenerator {
38
- /**
39
- * @param model - Optional injected structured model. Tests pass a stub.
40
- */
41
- constructor(model) {
42
- this.model = model ?? createStructuredModel("signalIntakePack", packSchema);
43
- }
44
- /**
45
- * Generate the intake pack for one user.
46
- *
47
- * @param input - Active premises, membership titles, and the global context paragraph
48
- * @returns Normalized brief and round-1 question
49
- */
50
- async generate(input) {
51
- const premiseBlock = input.premises.map((p) => `- ${p.text}`).join("\n");
52
- const networkBlock = input.networkTitles.length > 0
53
- ? input.networkTitles.join(", ")
54
- : "none";
55
- const contextBlock = input.globalContext?.trim() ? input.globalContext.trim() : "none";
56
- const raw = await this.model.invoke([
57
- new SystemMessage(SYSTEM_PROMPT),
58
- new HumanMessage(`Communities: ${networkBlock}\n\nGlobal context:\n${contextBlock}\n\nPremises:\n${premiseBlock}\n\nWrite the intake pack.`),
59
- ]);
60
- return normalizeIntakePack(raw);
61
- }
62
- }
63
- /**
64
- * Clamp a generated pack into the shape the frontend can render.
65
- *
66
- * @param pack - Raw model output
67
- * @returns Normalized pack
68
- * @throws When the question has fewer than 2 usable options
69
- */
70
- export function normalizeIntakePack(pack) {
71
- const options = pack.question.options
72
- .filter((option) => option.label.trim().length > 0)
73
- .slice(0, 4)
74
- .map((option) => ({
75
- label: option.label.trim().slice(0, 120),
76
- description: option.description.trim().slice(0, 280),
77
- }));
78
- if (options.length < 2) {
79
- throw new Error("Intake pack question needs at least 2 options.");
80
- }
81
- return {
82
- brief: pack.brief.trim(),
83
- question: {
84
- title: pack.question.title.trim() || "Question 1",
85
- prompt: pack.question.prompt.trim().slice(0, 400),
86
- options,
87
- multiSelect: pack.question.multiSelect,
88
- },
89
- };
90
- }
@@ -1,51 +0,0 @@
1
- import { z } from "zod";
2
- declare const clarificationSchema: z.ZodDiscriminatedUnion<"needsClarification", [z.ZodObject<{
3
- needsClarification: z.ZodLiteral<false>;
4
- reason: z.ZodString;
5
- suggestedDescription: z.ZodNullable<z.ZodString>;
6
- clarificationMessage: z.ZodNullable<z.ZodString>;
7
- underspecificationType: z.ZodNull;
8
- }, "strip", z.ZodTypeAny, {
9
- reason: string;
10
- underspecificationType: null;
11
- needsClarification: false;
12
- suggestedDescription: string | null;
13
- clarificationMessage: string | null;
14
- }, {
15
- reason: string;
16
- underspecificationType: null;
17
- needsClarification: false;
18
- suggestedDescription: string | null;
19
- clarificationMessage: string | null;
20
- }>, z.ZodObject<{
21
- needsClarification: z.ZodLiteral<true>;
22
- reason: z.ZodString;
23
- suggestedDescription: z.ZodString;
24
- clarificationMessage: z.ZodString;
25
- underspecificationType: z.ZodEnum<["missing_constituent", "missing_constraint", "open_alternative_set"]>;
26
- }, "strip", z.ZodTypeAny, {
27
- reason: string;
28
- underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set";
29
- needsClarification: true;
30
- suggestedDescription: string;
31
- clarificationMessage: string;
32
- }, {
33
- reason: string;
34
- underspecificationType: "missing_constituent" | "missing_constraint" | "open_alternative_set";
35
- needsClarification: true;
36
- suggestedDescription: string;
37
- clarificationMessage: string;
38
- }>]>;
39
- export type IntentClarifierOutput = z.infer<typeof clarificationSchema>;
40
- export declare class IntentClarifier {
41
- private readonly model;
42
- private readonly suggestionModel;
43
- private readonly clarificationDraftModel;
44
- constructor();
45
- /** Build the shared user prompt with intent, profile, and active-intent context. */
46
- private buildPrompt;
47
- invoke(description: string, profileContext: string, activeIntentsContext: string): Promise<IntentClarifierOutput>;
48
- private generateSuggestion;
49
- private generateClarificationDraft;
50
- }
51
- export {};
@@ -1,201 +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
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
11
- import { z } from "zod";
12
- import { createStructuredModel } from "../shared/agent/model.config.js";
13
- import { invokeWithAbortSignal } from "../shared/agent/model-signal.js";
14
- import { protocolLogger } from "../shared/observability/protocol.logger.js";
15
- import { Timed } from "../shared/observability/performance.js";
16
- import { UnderspecificationTypeSchema } from "../shared/schemas/underspecification.schema.js";
17
- const logger = protocolLogger("IntentClarifier");
18
- const clarificationSchema = z.discriminatedUnion("needsClarification", [
19
- z.object({
20
- needsClarification: z.literal(false),
21
- reason: z.string(),
22
- suggestedDescription: z.string().nullable(),
23
- clarificationMessage: z.string().nullable(),
24
- underspecificationType: z.null(),
25
- }),
26
- z.object({
27
- needsClarification: z.literal(true),
28
- reason: z.string(),
29
- suggestedDescription: z.string().trim().min(1),
30
- clarificationMessage: z.string().trim().min(1),
31
- underspecificationType: UnderspecificationTypeSchema,
32
- }),
33
- ]);
34
- const suggestionSchema = z.object({
35
- suggestedDescription: z.string(),
36
- });
37
- const clarificationDraftSchema = z.object({
38
- suggestedDescription: z.string(),
39
- clarificationMessage: z.string(),
40
- });
41
- const systemPrompt = `
42
- You evaluate whether one focused clarification would materially improve an intent before discovery.
43
-
44
- Set needsClarification=true only when the intent has a consequential unresolved Question Under Discussion (QUD): the answer would materially change which people or opportunities should surface. Do not ask for merely nice-to-have detail, procedural confirmation, or information already inferable from the user profile or active intents.
45
-
46
- Classify the single highest-impact QUD repair in underspecificationType:
47
- - missing_constituent: an absent core participant, entity, or outcome (who/what). Example: "I need help with something" does not identify what help or outcome is sought.
48
- - missing_constraint: the core target exists, but an explicitly unresolved or discovery-blocking ranking boundary is missing (where/when/how/how much). Example: a concrete hiring target whose location, timing, or engagement boundary is explicitly undecided.
49
- - open_alternative_set: an unresolved choice among materially different interpretations or scopes. Example: seeking either a technical co-founder or a sales channel partner, which would surface different people.
50
-
51
- An intent does NOT need every possible constraint. A concrete target with enough boundaries to run a useful search is specific even if it omits optional preferences such as compensation, budget, exact seniority, or secondary skills. For example, "a senior ML engineer in Berlin for a full-time role building production LLM evaluation systems this quarter" requires no clarification; do not invent a missing budget or other unstated requirement.
52
-
53
- Set needsClarification=false when the intent already fixes its core target and enough material ranking boundaries for actionable discovery, or when remaining omissions are optional. When false, underspecificationType MUST be null. When true, it MUST be exactly one category above.
54
-
55
- Rules when needsClarification=true:
56
- - Ask about the selected QUD category rather than proposing an arbitrary refinement.
57
- - User Profile is the primary source for a grounded suggestedDescription; Active Intents are secondary.
58
- - You MUST provide a concrete suggestedDescription and short clarificationMessage.
59
- - Do not include JSON in clarificationMessage.
60
- `;
61
- const suggestionPrompt = `
62
- You generate one concrete, specific intent rewrite.
63
-
64
- Rules:
65
- - Output only a concise intent sentence in suggestedDescription.
66
- - Use profile as primary source of personalization.
67
- - Use active intents as secondary context for consistency.
68
- - Keep user intent meaning, but make it actionable and specific.
69
- - Never return an empty suggestion.
70
- `;
71
- const clarificationDraftPrompt = `
72
- You draft one concise clarification response for an underspecified intent.
73
-
74
- Return both:
75
- 1) suggestedDescription: one concrete rewrite representing a plausible interpretation.
76
- 2) clarificationMessage: one direct question that resolves the supplied QUD category.
77
-
78
- Question rules by category:
79
- - missing_constituent: ask which participant, entity, or outcome the user means.
80
- - missing_constraint: ask for the unresolved ranking boundary (where/when/how/how much).
81
- - open_alternative_set: name the materially different alternatives and ask the user to choose; never collapse them into a generic yes/no confirmation.
82
-
83
- The question may mention suggestedDescription when useful, but do not force every category into "Did you mean...?". Keep it short. No bullet lists. No JSON.
84
- `;
85
- export class IntentClarifier {
86
- constructor() {
87
- this.model = createStructuredModel("intentClarifier", clarificationSchema, {
88
- name: "intent_clarifier",
89
- });
90
- this.suggestionModel = createStructuredModel("intentClarifier", suggestionSchema, {
91
- name: "intent_clarifier_suggestion",
92
- });
93
- this.clarificationDraftModel = createStructuredModel("intentClarifier", clarificationDraftSchema, { name: "intent_clarifier_message" });
94
- }
95
- /** Build the shared user prompt with intent, profile, and active-intent context. */
96
- buildPrompt(description, profileContext, activeIntentsContext) {
97
- return `
98
- # User Input Intent
99
- ${description}
100
-
101
- # User Profile
102
- ${profileContext || "none"}
103
-
104
- # Active Intents
105
- ${activeIntentsContext || "none"}
106
- `;
107
- }
108
- async invoke(description, profileContext, activeIntentsContext) {
109
- try {
110
- const prompt = this.buildPrompt(description, profileContext, activeIntentsContext);
111
- const result = await invokeWithAbortSignal(this.model, [
112
- new SystemMessage(systemPrompt),
113
- new HumanMessage(prompt),
114
- ]);
115
- const parsed = clarificationSchema.parse(result);
116
- if (parsed.needsClarification) {
117
- // Always prefer a dedicated rewrite pass for vague inputs so we avoid generic follow-up text.
118
- const draft = await this.generateClarificationDraft(description, profileContext, activeIntentsContext, parsed.underspecificationType);
119
- if (draft) {
120
- return {
121
- ...parsed,
122
- suggestedDescription: draft.suggestedDescription,
123
- clarificationMessage: draft.clarificationMessage,
124
- };
125
- }
126
- }
127
- return parsed;
128
- }
129
- catch (error) {
130
- logger.warn("invoke: clarification failed", { error });
131
- return {
132
- needsClarification: false,
133
- reason: "fallback_on_model_error",
134
- suggestedDescription: null,
135
- clarificationMessage: null,
136
- underspecificationType: null,
137
- };
138
- }
139
- }
140
- async generateSuggestion(description, profileContext, activeIntentsContext) {
141
- try {
142
- const prompt = this.buildPrompt(description, profileContext, activeIntentsContext);
143
- const output = await invokeWithAbortSignal(this.suggestionModel, [
144
- new SystemMessage(suggestionPrompt),
145
- new HumanMessage(prompt),
146
- ]);
147
- const parsed = suggestionSchema.parse(output);
148
- const suggestion = parsed.suggestedDescription.trim();
149
- return suggestion.length > 0 ? suggestion : null;
150
- }
151
- catch (error) {
152
- logger.warn("generateSuggestion: failed", { error });
153
- return null;
154
- }
155
- }
156
- async generateClarificationDraft(description, profileContext, activeIntentsContext, underspecificationType) {
157
- try {
158
- const prompt = [
159
- this.buildPrompt(description, profileContext, activeIntentsContext),
160
- "# QUD Repair Category",
161
- underspecificationType,
162
- ].join("\n");
163
- const output = await invokeWithAbortSignal(this.clarificationDraftModel, [
164
- new SystemMessage(clarificationDraftPrompt),
165
- new HumanMessage(prompt),
166
- ]);
167
- const parsed = clarificationDraftSchema.parse(output);
168
- const suggestedDescription = parsed.suggestedDescription.trim();
169
- const clarificationMessage = parsed.clarificationMessage.trim();
170
- if (!suggestedDescription || !clarificationMessage)
171
- return null;
172
- return { suggestedDescription, clarificationMessage };
173
- }
174
- catch (error) {
175
- logger.warn("generateClarificationDraft: failed", { error });
176
- const suggestion = await this.generateSuggestion(description, profileContext, activeIntentsContext);
177
- if (!suggestion)
178
- return null;
179
- const clarificationMessage = (() => {
180
- switch (underspecificationType) {
181
- case "missing_constituent":
182
- return "Who or what should this intent focus on?";
183
- case "missing_constraint":
184
- return "Which location, timing, format, or range should constrain this intent?";
185
- case "open_alternative_set":
186
- return `Your intent names different alternatives — "${description}". Which one should take priority?`;
187
- }
188
- })();
189
- return {
190
- suggestedDescription: suggestion,
191
- clarificationMessage,
192
- };
193
- }
194
- }
195
- }
196
- __decorate([
197
- Timed(),
198
- __metadata("design:type", Function),
199
- __metadata("design:paramtypes", [String, String, String]),
200
- __metadata("design:returntype", Promise)
201
- ], IntentClarifier.prototype, "invoke", null);