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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -134
  12. package/dist/index.js +41 -105
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,5 +0,0 @@
1
- /**
2
- * Negotiation graph, stage 4: persist the outcome and fan out follow-ups.
3
- */
4
- import type { NegotiationGraphDeps, NegotiationState } from "./negotiation.graph.shared.js";
5
- export declare function finalizeNode(state: NegotiationState, deps: NegotiationGraphDeps): Promise<{}>;
@@ -1,403 +0,0 @@
1
- /**
2
- * Negotiation graph, stage 4: persist the outcome and fan out follow-ups.
3
- */
4
- import { requestContext } from "../shared/observability/request-context.js";
5
- import { isRejectLikeAction, isTerminalAction, negotiationAskRoundsCap } from "./negotiation.protocol.js";
6
- import { blocksNegotiationBeforeFirstTurn } from "./negotiation.screen.js";
7
- import { NEGOTIATION_QUESTION_GENERIC_COUNTERPARTY, NEGOTIATION_QUESTION_GENERIC_NETWORK, isSafeAuthoredNegotiationQuestion } from './negotiation.question-safety.js';
8
- import { NEGOTIATION_PARK_REASONING } from './negotiation.stall-gap.js';
9
- import { isNegotiationTurnCapReached } from "./negotiation.turn-cap.js";
10
- import { countNegotiationAskRounds, finalizeLog, retrieveClientDm, turnsFromMessages } from "./negotiation.graph.shared.js";
11
- export async function finalizeNode(state, deps) {
12
- const traceEmitter = requestContext.getStore()?.traceEmitter;
13
- const emitWide = (event) => traceEmitter?.(event);
14
- const pauseReceipt = (outcome) => state.continuationExecution
15
- ? {
16
- continuationReceipt: {
17
- priorTaskId: state.continuationExecution.taskId,
18
- settlementId: state.continuationExecution.settlementId,
19
- successorTaskId: state.continuationExecution.successorTaskId,
20
- fence: state.continuationExecution.fence,
21
- outcome,
22
- },
23
- }
24
- : undefined;
25
- if (state.status === 'waiting_for_agent') {
26
- if (state.opportunityId) {
27
- emitWide({
28
- type: "negotiation_outcome",
29
- opportunityId: state.opportunityId,
30
- outcome: "waiting_for_agent",
31
- turnCount: state.turnCount,
32
- isContinuation: state.isContinuation,
33
- });
34
- }
35
- return pauseReceipt('waiting_for_agent') ?? {};
36
- }
37
- // ask_user pause: no outcome, no completed state — the task stays
38
- // input_required until the client answers or the window expires.
39
- if (state.status === 'input_required') {
40
- if (state.opportunityId) {
41
- emitWide({
42
- type: "negotiation_outcome",
43
- opportunityId: state.opportunityId,
44
- outcome: "input_required",
45
- turnCount: state.turnCount,
46
- isContinuation: state.isContinuation,
47
- });
48
- }
49
- return pauseReceipt('input_required') ?? {};
50
- }
51
- // Init can fail closed before an attempt owns a task. Such a rejection is
52
- // not a completed negotiation and must not write through an empty task ID,
53
- // create an artifact, or advance the opportunity lifecycle.
54
- if (!state.taskId) {
55
- finalizeLog.info('Skipping outcome persistence because no negotiation task was claimed', {
56
- opportunityId: state.opportunityId || undefined,
57
- error: state.error || undefined,
58
- });
59
- return {};
60
- }
61
- const history = turnsFromMessages(state.messages);
62
- const lastTurn = state.lastTurn;
63
- const hasOpportunity = lastTurn?.action === "accept";
64
- // P2.2: the client's own outreach gate declined before any turn — the
65
- // negotiation never happened from the counterparty's perspective.
66
- // IND-564: an opening-move `withdraw` blocked before any message was
67
- // persisted is the same quiet screen-out outcome (no in-task outreach to
68
- // retract), reached from the turn node rather than the screen node.
69
- // Two DISTINCT routes reach the same quiet `screened_out` outcome, and
70
- // they disagree about who authored the decision:
71
- // - the screen node blocked before any turn was drafted → the screen
72
- // decision is the reason;
73
- // - the acting agent refused on its opening turn (IND-611) → the
74
- // withdrawing TURN is the reason.
75
- // They are collapsed into `screenedOut` for status/lifecycle purposes but
76
- // must stay separate when attributing `outcome.reasoning` below.
77
- const blockedByScreenNode = blocksNegotiationBeforeFirstTurn(state.screenDecision, state.turnCount);
78
- const refusedAtOpeningTurn = state.firstTurnScreenedOut === true;
79
- const screenedOut = blockedByScreenNode || refusedAtOpeningTurn;
80
- const atCap = !screenedOut && isNegotiationTurnCapReached(state.turnCount, state.maxTurns) && !isTerminalAction(lastTurn?.action);
81
- let agreedRoles = [];
82
- if (hasOpportunity && history.length >= 2) {
83
- const acceptTurn = history[history.length - 1];
84
- const precedingTurn = history[history.length - 2];
85
- const accepterIsSource = state.currentSpeaker === "candidate";
86
- const [sourceRole, candidateRole] = accepterIsSource
87
- ? [acceptTurn.assessment.suggestedRoles.ownUser, precedingTurn.assessment.suggestedRoles.ownUser]
88
- : [precedingTurn.assessment.suggestedRoles.ownUser, acceptTurn.assessment.suggestedRoles.ownUser];
89
- agreedRoles = [
90
- { userId: state.sourceUser.id, role: sourceRole },
91
- { userId: state.candidateUser.id, role: candidateRole },
92
- ];
93
- }
94
- const outcome = {
95
- hasOpportunity,
96
- agreedRoles,
97
- // IND-611: attribute the reasoning to whoever actually made the
98
- // decision. Before the turn-0 refusal path existed, `screenedOut`
99
- // implied the screen node, so preferring `screenDecision.reasoning`
100
- // was always right. It is now wrong for an opening-turn refusal taken
101
- // while the screen said `reach_out`: that record argues FOR the match,
102
- // and surfacing it as the reason the agent did NOT reach out is exactly
103
- // the dishonesty this work removes (IND-610 renders this string in the
104
- // owner-only gate-decision card). The screen-node branch is unchanged.
105
- reasoning: blockedByScreenNode
106
- ? (state.screenDecision?.reasoning ?? lastTurn?.assessment?.reasoning ?? "")
107
- : refusedAtOpeningTurn
108
- ? (lastTurn?.assessment?.reasoning ?? state.screenDecision?.reasoning ?? "")
109
- : (lastTurn?.assessment.reasoning ?? ""),
110
- turnCount: state.turnCount,
111
- ...(screenedOut
112
- ? { reason: "screened_out" }
113
- : atCap
114
- ? { reason: "turn_cap" }
115
- : {}),
116
- };
117
- // Unconcluded end: no opportunity, no explicit reject, and turns actually
118
- // happened — turn cap, timeout, or a plain stall. Feeds both the post-stall
119
- // park below and the legacy questioner enqueue further down.
120
- const endedUnconcluded = !hasOpportunity && !screenedOut && !isRejectLikeAction(lastTurn?.action) && state.turnCount > 0;
121
- const stallReason = atCap
122
- ? 'turn_cap'
123
- : (state.error && /timeout/i.test(state.error))
124
- ? 'timeout'
125
- : 'stalled';
126
- // ─── Post-stall park (conversational-questions plan) ──────────────────
127
- // Instead of ending silently, an unconcluded negotiation parks carrying
128
- // the ONE question that would let a retry conclude — authored by the
129
- // negotiator from this negotiation's transcript and the signal's client
130
- // DM, exactly the grounding the mid-flight consult uses. The gap is
131
- // persisted as an `ask_user` message in the negotiation's own record: the
132
- // parked negotiation is the only durable record of the information need,
133
- // the same substrate the per-side ration reads, and an `ask_user` last
134
- // message keeps the floor with the asking side on retry.
135
- //
136
- // Bounded per negotiation: past the ask-rounds cap the negotiation stalls
137
- // TERMINALLY — no authoring call, no park — so two agents cannot
138
- // ping-pong their humans indefinitely. Runs on continuations too (a
139
- // resumed negotiation may park again); the cap is what bounds the loop.
140
- //
141
- // Every failure — authoring, safety gate, persistence — degrades to
142
- // today's terminal stall. A park is additive state, never a new way for
143
- // finalize to fail.
144
- if (endedUnconcluded
145
- && deps.stallGapAuthor
146
- && state.opportunityId
147
- && state.sourceIntentId
148
- && state.indexContext.networkId) {
149
- const askRounds = countNegotiationAskRounds(state.messages);
150
- const askRoundsCap = negotiationAskRoundsCap();
151
- if (askRounds >= askRoundsCap) {
152
- finalizeLog.info('negotiation_ask_cap_terminal', {
153
- taskId: state.taskId,
154
- opportunityId: state.opportunityId,
155
- askRounds,
156
- askRoundsCap,
157
- stallReason,
158
- });
159
- emitWide({
160
- type: 'negotiation_ask_cap_terminal',
161
- opportunityId: state.opportunityId,
162
- askRounds,
163
- askRoundsCap,
164
- });
165
- }
166
- else {
167
- try {
168
- const clientDm = await retrieveClientDm(deps, state.sourceUser.id, state.sourceIntentId);
169
- const parkIntent = state.sourceUser.intents.find((intent) => intent.id === state.sourceIntentId);
170
- const gap = await deps.stallGapAuthor.author({
171
- userName: state.sourceUser.profile.name ?? 'your user',
172
- signal: parkIntent
173
- ? { title: parkIntent.title, description: parkIntent.description }
174
- : { title: 'Signal', description: 'the signal attached to this match' },
175
- seedReasoning: state.seedAssessment.reasoning,
176
- history,
177
- stallReason,
178
- ...(clientDm.length > 0 && { clientDm }),
179
- });
180
- // Same identifier-aware gate as the mid-flight authored question, with
181
- // the same inputs in hand: the counterparty's name and the evaluator's
182
- // reasoning. An unsafe question never parks — there is no enum-only
183
- // downgrade here because a park without its gap records nothing.
184
- const counterpartyName = state.candidateUser.profile?.name?.trim();
185
- const seedReasoning = state.seedAssessment?.reasoning?.trim();
186
- const safeGap = gap && isSafeAuthoredNegotiationQuestion(gap.question, {
187
- ...(counterpartyName ? { forbiddenIdentifiers: [counterpartyName] } : {}),
188
- ...(seedReasoning ? { forbiddenSourceText: [seedReasoning] } : {}),
189
- });
190
- if (safeGap) {
191
- const parkTurn = {
192
- action: 'ask_user',
193
- assessment: {
194
- reasoning: NEGOTIATION_PARK_REASONING,
195
- suggestedRoles: lastTurn?.assessment.suggestedRoles ?? { ownUser: 'peer', otherUser: 'peer' },
196
- },
197
- message: null,
198
- askUser: { reason: gap.reason, question: gap.question },
199
- };
200
- await deps.database.createMessage({
201
- conversationId: state.conversationId,
202
- senderId: `agent:${state.sourceUser.id}`,
203
- role: 'agent',
204
- parts: [{ kind: 'data', data: parkTurn }],
205
- taskId: state.taskId,
206
- ...(state.continuationExecution ? { continuationExecution: state.continuationExecution } : {}),
207
- });
208
- finalizeLog.info('negotiation_parked', {
209
- taskId: state.taskId,
210
- opportunityId: state.opportunityId,
211
- recipientUserId: state.sourceUser.id,
212
- recipientIntentId: state.sourceIntentId,
213
- askRounds: askRounds + 1,
214
- askRoundsCap,
215
- stallReason,
216
- });
217
- emitWide({
218
- type: 'negotiation_parked',
219
- opportunityId: state.opportunityId,
220
- negotiationConversationId: state.conversationId,
221
- askRounds: askRounds + 1,
222
- askRoundsCap,
223
- stallReason,
224
- });
225
- }
226
- else if (gap) {
227
- finalizeLog.warn('Dropping unsafe post-stall gap question; negotiation stalls without a park', {
228
- taskId: state.taskId,
229
- opportunityId: state.opportunityId,
230
- });
231
- }
232
- }
233
- catch (err) {
234
- finalizeLog.error('Failed to park stalled negotiation with its gap', {
235
- taskId: state.taskId,
236
- opportunityId: state.opportunityId,
237
- error: err,
238
- });
239
- }
240
- }
241
- }
242
- try {
243
- await deps.database.updateTaskState(state.taskId, "completed", undefined, state.continuationExecution);
244
- await deps.database.createArtifact({
245
- taskId: state.taskId,
246
- name: "negotiation-outcome",
247
- parts: [{ kind: "data", data: outcome }],
248
- metadata: {
249
- hasOpportunity,
250
- turnCount: state.turnCount,
251
- ...(state.continuationExecution ? {
252
- continuationOutcome: hasOpportunity
253
- ? 'accepted'
254
- : (screenedOut || isRejectLikeAction(lastTurn?.action)) ? 'rejected' : 'stalled',
255
- } : {}),
256
- },
257
- ...(state.continuationExecution ? { continuationExecution: state.continuationExecution } : {}),
258
- });
259
- finalizeLog.info('Session complete', {
260
- conversationId: state.conversationId,
261
- taskId: state.taskId,
262
- isContinuation: state.isContinuation,
263
- turnsAdded: state.turnCount,
264
- priorTurnCount: state.priorTurnCount,
265
- outcome: hasOpportunity ? 'accepted' : screenedOut ? 'screened_out' : (atCap ? 'turn_cap' : (lastTurn?.action ?? 'unknown')),
266
- opportunityId: state.opportunityId || undefined,
267
- });
268
- if (state.opportunityId) {
269
- // screened_out → 'rejected': quiet terminal status (hidden from
270
- // default lists), never 'stalled' — with zero turns the generic
271
- // mapping would misfile the client's own gate decision.
272
- const nextStatus = lastTurn?.action === 'accept'
273
- ? 'pending'
274
- : (screenedOut || isRejectLikeAction(lastTurn?.action))
275
- ? 'rejected'
276
- : 'stalled';
277
- await deps.database.updateOpportunityStatus(state.opportunityId, nextStatus, undefined, state.continuationExecution).catch((err) => {
278
- finalizeLog.error("Failed to update opportunity status", { opportunityId: state.opportunityId, nextStatus, error: err });
279
- });
280
- }
281
- }
282
- catch (err) {
283
- finalizeLog.error("Failed to persist outcome", { error: err });
284
- }
285
- if (state.opportunityId) {
286
- const emittedOutcome = hasOpportunity
287
- ? "accepted"
288
- : screenedOut
289
- ? "screened_out"
290
- : atCap
291
- ? "turn_cap"
292
- : state.error && /timeout/i.test(state.error)
293
- ? "timed_out"
294
- : "rejected_stalled";
295
- emitWide({
296
- type: "negotiation_outcome",
297
- opportunityId: state.opportunityId,
298
- outcome: emittedOutcome,
299
- turnCount: state.turnCount,
300
- isContinuation: state.isContinuation,
301
- turnsAdded: state.turnCount,
302
- priorTurnCount: state.priorTurnCount,
303
- ...(outcome.reasoning && { reasoning: outcome.reasoning }),
304
- ...(hasOpportunity && agreedRoles.length >= 2 && {
305
- agreedRoles: {
306
- ownUser: agreedRoles[0]?.role,
307
- otherUser: agreedRoles[1]?.role,
308
- },
309
- }),
310
- });
311
- }
312
- if (state.consultationPolicyReason) {
313
- // Stable, content-free terminal funnel telemetry. This executes only
314
- // after a fenced continuation has reached its terminal outcome.
315
- finalizeLog.info('negotiation_consultation_policy', {
316
- stage: 'terminal_outcome',
317
- reason: state.consultationPolicyReason,
318
- outcome: hasOpportunity ? 'accepted' : (screenedOut || isRejectLikeAction(lastTurn?.action)) ? 'rejected' : 'stalled',
319
- });
320
- emitWide({
321
- type: 'negotiation_consultation_policy',
322
- stage: 'terminal_outcome',
323
- reason: state.consultationPolicyReason,
324
- outcome: hasOpportunity ? 'accepted' : (screenedOut || isRejectLikeAction(lastTurn?.action)) ? 'rejected' : 'stalled',
325
- });
326
- }
327
- // Enqueue post-negotiation reflection (P5.2 memory write path) — fire
328
- // and forget: a reflection failure must never affect the outcome. Only
329
- // sessions that actually exchanged turns teach anything; init/turn
330
- // errors with turnCount 0 are skipped.
331
- if (deps.reflectEnqueue && state.turnCount > 0 && !state.continuationExecution) {
332
- deps.reflectEnqueue({
333
- negotiationId: state.taskId,
334
- conversationId: state.conversationId,
335
- ...(state.opportunityId && { opportunityId: state.opportunityId }),
336
- sourceUser: {
337
- id: state.sourceUser.id,
338
- ...(state.sourceUser.profile.name && { name: state.sourceUser.profile.name }),
339
- ...(state.sourceUser.profile.bio && { bio: state.sourceUser.profile.bio }),
340
- },
341
- candidateUser: {
342
- id: state.candidateUser.id,
343
- ...(state.candidateUser.profile.name && { name: state.candidateUser.profile.name }),
344
- ...(state.candidateUser.profile.bio && { bio: state.candidateUser.profile.bio }),
345
- },
346
- initiatorUserId: state.initiatorUserId ?? state.sourceUser.id,
347
- outcome: { hasOpportunity, reasoning: outcome.reasoning, turnCount: state.turnCount },
348
- }).catch((err) => finalizeLog.error('Failed to enqueue negotiation reflection', {
349
- taskId: state.taskId,
350
- error: err,
351
- }));
352
- }
353
- // Enqueue question generation for stalled/capped negotiations (not accepted or explicitly rejected).
354
- // Require turnCount > 0 so early init/turn errors don't enqueue with empty context.
355
- // Kept alongside the post-stall park above until the conversational-questions
356
- // delivery lane retires the blind questioner path.
357
- if (endedUnconcluded && state.opportunityId && state.sourceIntentId && state.indexContext.networkId && deps.questionerEnqueue && !state.continuationExecution) {
358
- const userContext = (await deps.database.getUserContext(state.sourceUser.id, null))?.text ?? '';
359
- const sourceIntent = state.sourceUser.intents.find((intent) => intent.id === state.sourceIntentId);
360
- deps.questionerEnqueue({
361
- mode: 'negotiation',
362
- purpose: 'stalled_followup',
363
- userId: state.sourceUser.id,
364
- sourceType: 'opportunity',
365
- sourceId: state.opportunityId,
366
- negotiation: {
367
- purpose: 'stalled_followup',
368
- recipientUserId: state.sourceUser.id,
369
- recipientIntentId: state.sourceIntentId,
370
- opportunityId: state.opportunityId,
371
- taskId: state.taskId,
372
- networkId: state.indexContext.networkId,
373
- },
374
- context: {
375
- negotiationId: state.taskId,
376
- counterpartyHint: NEGOTIATION_QUESTION_GENERIC_COUNTERPARTY,
377
- indexContext: NEGOTIATION_QUESTION_GENERIC_NETWORK,
378
- outcomeReason: stallReason,
379
- recipientIntent: sourceIntent
380
- ? `${sourceIntent.title}: ${sourceIntent.description}`
381
- : 'the signal attached to this match',
382
- userContext,
383
- },
384
- }).catch((err) => finalizeLog.error('Failed to enqueue negotiation question generation', {
385
- opportunityId: state.opportunityId,
386
- error: err,
387
- }));
388
- }
389
- const terminalReceipt = state.continuationExecution
390
- ? {
391
- continuationReceipt: {
392
- priorTaskId: state.continuationExecution.taskId,
393
- settlementId: state.continuationExecution.settlementId,
394
- successorTaskId: state.continuationExecution.successorTaskId,
395
- fence: state.continuationExecution.fence,
396
- outcome: hasOpportunity
397
- ? 'accepted'
398
- : (screenedOut || isRejectLikeAction(lastTurn?.action)) ? 'rejected' : 'stalled',
399
- },
400
- }
401
- : undefined;
402
- return { outcome, status: 'completed', ...terminalReceipt };
403
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * Negotiation graph, stage 1: claim the conversation, task and seat.
3
- */
4
- import { type NegotiationConsultationReason } from "./negotiation.consultation-policy.js";
5
- import type { NegotiationProtocolVersion } from "../shared/schemas/negotiation-state.schema.js";
6
- import type { NegotiationGraphDeps, NegotiationState } from "./negotiation.graph.shared.js";
7
- export declare function initNode(state: NegotiationState, deps: NegotiationGraphDeps): Promise<{
8
- error: string;
9
- } | {
10
- messages?: {
11
- id: string;
12
- senderId: string;
13
- role: "agent";
14
- parts: unknown[];
15
- createdAt: Date;
16
- taskId: string | null;
17
- }[] | undefined;
18
- privateConsultation?: import("../shared/interfaces/database.negotiation.js").NegotiationPrivateConsultation | undefined;
19
- userAnswers?: import("../shared/interfaces/database.negotiation.js").NegotiationUserAnswer[] | undefined;
20
- priorAttribution?: import("./negotiation.attribution.js").SeededAttribution | undefined;
21
- conversationId: string;
22
- taskId: string;
23
- currentSpeaker: "source" | "candidate";
24
- turnCount: number;
25
- maxTurns: number;
26
- isContinuation: boolean;
27
- initiatorUserId: string;
28
- protocolVersion: NegotiationProtocolVersion;
29
- priorTurnCount: number;
30
- error?: undefined;
31
- } | {
32
- messages?: {
33
- id: string;
34
- senderId: string;
35
- role: "agent";
36
- parts: unknown[];
37
- createdAt: Date;
38
- taskId: string | null;
39
- }[] | undefined;
40
- consultationPolicyReason: NegotiationConsultationReason;
41
- privateConsultation?: import("../shared/interfaces/database.negotiation.js").NegotiationPrivateConsultation | undefined;
42
- userAnswers?: import("../shared/interfaces/database.negotiation.js").NegotiationUserAnswer[] | undefined;
43
- priorAttribution?: import("./negotiation.attribution.js").SeededAttribution | undefined;
44
- conversationId: string;
45
- taskId: string;
46
- currentSpeaker: "source" | "candidate";
47
- turnCount: number;
48
- maxTurns: number;
49
- isContinuation: boolean;
50
- initiatorUserId: string;
51
- protocolVersion: NegotiationProtocolVersion;
52
- priorTurnCount: number;
53
- error?: undefined;
54
- }>;