@indexnetwork/protocol 22.0.0-rc.499.1 → 64.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -134
  12. package/dist/index.js +41 -105
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,159 +0,0 @@
1
- /**
2
- * Read the centralized consultation-policy switch. Invalid, absent, and empty
3
- * values deliberately roll back to off.
4
- */
5
- export function negotiationConsultationPolicyMode() {
6
- const raw = process.env.NEGOTIATION_CONSULTATION_POLICY_MODE;
7
- return raw === "shadow" || raw === "on" ? raw : "off";
8
- }
9
- /**
10
- * Pure IND-508 eligibility policy. It intentionally never sees user text,
11
- * evaluator output, profiles, IDs, prompts, or messages; only safe protocol
12
- * enums and the exact binding/lifecycle booleans supplied by the graph.
13
- */
14
- export function assessConsultationEligibility(input) {
15
- if (input.protocolVersion !== "v2"
16
- || input.isFinalTurn
17
- || input.screenedOut
18
- || input.previouslyConsulted
19
- || !input.hasExactResumeCoordinate
20
- || !input.lifecycleValid
21
- || isObviousTerminal(input.action))
22
- return { eligible: false };
23
- // ─── Pre-contact consultation (the opening turn) ──────────────────────────
24
- // Before this branch the opening turn was a blanket exclusion, so the
25
- // initiator's turn-0 vocabulary was binary: reach out, or pass with the
26
- // counterparty never contacted. A third verdict is admissible when the
27
- // blocking doubt is one only the client can settle — how their own criteria
28
- // bound the search — and the pause costs the counterparty nothing, because
29
- // nothing has been sent.
30
- //
31
- // The admission is deliberately NARROW, and narrower than the mid-flight
32
- // rules below:
33
- //
34
- // - INITIATOR ONLY. A turn-0 counterparty seat (tie-break inheritance) is
35
- // responding to an outreach, so its client's criteria are not what is
36
- // blocking; there is no pre-contact position to protect either.
37
- // - A MODEL-AUTHORED `ask_user` ONLY. Every rule below infers a
38
- // consultation from a draft that asked for something else, which needs
39
- // history to be a safe inference — and at turn 0 there is none. The
40
- // acting agent is the only party that has read the client's own signal,
41
- // so the pre-contact case is the one where volunteering the pause is the
42
- // evidence, not a substitute for it. This also keeps the distinction the
43
- // graph prompt draws — client-resolvable scope doubt consults;
44
- // counterparty evidence that contradicts the match passes silently —
45
- // resolvable HERE only as "the agent did not ask", which is exactly what
46
- // a contradiction-shaped doubt produces.
47
- //
48
- // The category is fixed rather than read off the draft: a pre-contact pause
49
- // is by construction an unresolved constraint the OWNER controls. The
50
- // consult counts as an ordinary ask round (the graph reads the same
51
- // `negotiationAskRoundsCap` substrate before granting the action at all).
52
- if (input.isOpeningTurn) {
53
- return input.seat === "initiator" && input.action === "ask_user"
54
- ? { eligible: true, reason: "unresolved_owner_constraint" }
55
- : { eligible: false };
56
- }
57
- // A patient-side counter is a schema-constrained, source-safe signal that
58
- // the owner must decide whether a consequential disclosure or permission is
59
- // acceptable. This is reachable under the normal v2 action vocabulary; it
60
- // deliberately does not inspect or depend on a model-produced `ask_user`.
61
- if (input.ownSuggestedRole === "patient" && input.action === "counter") {
62
- return { eligible: true, reason: "consequential_disclosure_permission" };
63
- }
64
- // Preserve observability for a valid legacy ask_user draft; production
65
- // policy admission no longer depends on this action because the patient-side
66
- // counter rule above is schema-constrained and independently reachable.
67
- if (input.action === "ask_user") {
68
- return { eligible: true, reason: "consequential_disclosure_permission" };
69
- }
70
- // A repeated run of safe counter/question action enums means the parties are
71
- // not converging. This precedes action-local rules so the policy is stable.
72
- const trailingActions = [...input.priorActions, input.action].slice(-3);
73
- const trailingNonConvergent = trailingActions.length === 3
74
- && trailingActions.every((action) => action === "counter" || action === "question");
75
- if (trailingNonConvergent) {
76
- return { eligible: true, reason: "repeated_non_convergence" };
77
- }
78
- if (input.ownSuggestedRole === "agent" && input.action === "counter") {
79
- return { eligible: true, reason: "insufficient_commitment_authority" };
80
- }
81
- if (input.action === "question") {
82
- return { eligible: true, reason: "unresolved_owner_constraint" };
83
- }
84
- return { eligible: false };
85
- }
86
- /** Fixed source-safe inputs that still traverse the existing questioner guard. */
87
- export function consultationPromptFor(reason) {
88
- switch (reason) {
89
- case "consequential_disclosure_permission":
90
- return { disclosureSubject: "your permission", draftQuestion: "May I share the information needed to explore this collaboration?" };
91
- case "repeated_non_convergence":
92
- return { disclosureSubject: "your priorities", draftQuestion: "Which trade-off matters most as I decide how to proceed?" };
93
- case "insufficient_commitment_authority":
94
- return { disclosureSubject: "your decision authority", draftQuestion: "What commitments may I make on your behalf?" };
95
- case "unresolved_owner_constraint":
96
- return { disclosureSubject: "your preferences", draftQuestion: "What outcome would you prefer?" };
97
- }
98
- }
99
- function isObviousTerminal(action) {
100
- return action === "accept" || action === "reject" || action === "withdraw" || action === "decline";
101
- }
102
- // ─── Pre-contact consultation: bounds and recognition ────────────────────────
103
- /**
104
- * How many pre-contact consultations one intent may hold OPEN at once.
105
- *
106
- * A vague signal can surface many candidates in a batch, and the doubt that
107
- * blocks the first ("does 'academic linguistics' strictly bound this, or is
108
- * adjacent depth in scope?") is usually the same doubt that blocks all of
109
- * them. One answer generalizes: it lands in the signal's DM, and the DM is
110
- * injected into every later turn-0 decision on that signal. The cap exists
111
- * for the agent that does not internalize that and would interrogate its
112
- * client candidate-by-candidate.
113
- *
114
- * Two, not one: a second genuinely different question about the same signal
115
- * is plausible, a third is a pattern. Past the cap the action is simply not
116
- * offered and the seat falls back to today's binary reach-out-or-pass.
117
- */
118
- export const MAX_OPEN_PRE_CONTACT_CONSULTS_PER_INTENT = 2;
119
- /**
120
- * Whether a negotiation's own turns show it has never contacted the
121
- * counterparty — every turn it holds is a client-consultation park.
122
- *
123
- * This is what makes a post-consult resume still-the-opening. A mid-flight
124
- * consult always has an `outreach` behind it (the counterparty seat cannot
125
- * even speak before one), so this is false for every park the pre-contact
126
- * verdict did not create, and the resume rules it gates stay off the
127
- * mid-flight path by construction rather than by a flag.
128
- */
129
- export function isPreContactConsultResume(turns) {
130
- return turns.length > 0 && turns.every((turn) => turn.action === "ask_user");
131
- }
132
- /**
133
- * Turn-context key stamped on a pre-contact park. Written at park time beside
134
- * the ask-user binding, read back by {@link countOpenPreContactConsults} — the
135
- * park row is the only durable record of the consultation, so the marker lives
136
- * with it rather than in a separate counter that could drift.
137
- */
138
- export const PRE_CONTACT_CONSULT_MARKER = "preContactConsult";
139
- /**
140
- * Count the pre-contact consultations currently open for one `(user, intent)`
141
- * scope, from the user's own negotiation tasks.
142
- *
143
- * "Open" is derived from the durable park itself — an `input_required` task
144
- * whose captured ask-user binding names this recipient pair and whose turn
145
- * context carries the pre-contact stamp — so answering, expiry, and resume all
146
- * retire a park from the count with no counter to keep in step. Mid-flight
147
- * consults carry no stamp and never count.
148
- */
149
- export function countOpenPreContactConsults(tasks, scope) {
150
- return tasks.filter((task) => {
151
- if (task.state !== "input_required" || task.id === scope.excludeTaskId)
152
- return false;
153
- const turnContext = task.metadata?.turnContext;
154
- if (turnContext?.[PRE_CONTACT_CONSULT_MARKER] !== true)
155
- return false;
156
- const binding = turnContext.askUserBinding;
157
- return binding?.recipientUserId === scope.userId && binding.recipientIntentId === scope.intentId;
158
- }).length;
159
- }
@@ -1,10 +0,0 @@
1
- /** Internal-only metadata persisted when a deadlock causes a stance shift. */
2
- export interface DeadlockShiftRecord {
3
- reason: "consecutive_non_convergent";
4
- consecutiveNonConvergent: number;
5
- threshold: number;
6
- /** Zero-based session turn index at which the shifted draft happened. */
7
- shiftedAtTurn: number;
8
- seat: "initiator" | "counterparty";
9
- detectedAt: string;
10
- }
@@ -1,87 +0,0 @@
1
- /**
2
- * Deadlock detection + persuasion→bargaining mode shift (IND-428, backlog item 6).
3
- *
4
- * Grounding: Wells & Reed (2006), *Knowing When to Bargain* — a persuasion
5
- * dialogue (arguing the merits) that reaches a stalemate may execute a *legal
6
- * shift* into a negotiation dialogue (offering concessions). See
7
- * `docs/design/negotiation-dialogue-game.md` for the formal framing of the
8
- * turn protocol as a dialogue game.
9
- *
10
- * Design constraints (hard):
11
- * - **Deterministic**: deadlock is decided by pure inspection of the persisted
12
- * turn history — never by an LLM.
13
- * - **Stance, not rules**: a detected deadlock changes the system agent's
14
- * *drafting stance* only. Locutions, seat vocabularies (`allowedActionsFor`),
15
- * termination, and turn-cap semantics are untouched.
16
- * - **Default-off**: gated on `NEGOTIATION_DEADLOCK_SHIFT_ENABLED === "true"`
17
- * (strict literal) and applied only to v2 negotiations, checked alongside the
18
- * protocol-version plumbing. When off, the legacy path is byte-identical.
19
- * - **Fail-open**: any detection error means "no deadlock" — advisory
20
- * infrastructure never blocks a negotiation.
21
- */
22
- import { type NegotiatorStance } from "./negotiation.stance.contracts.js";
23
- export type { DeadlockShiftRecord } from "./negotiation.deadlock.contracts.js";
24
- /**
25
- * Whether the deadlock→bargaining mode shift is enabled, from the
26
- * `NEGOTIATION_DEADLOCK_SHIFT_ENABLED` env switch. Strict literal `"true"`
27
- * only — the deployment is byte-for-byte unchanged until the flag is flipped,
28
- * and rolling back is the same single switch.
29
- */
30
- export declare function configuredDeadlockShiftEnabled(): boolean;
31
- /**
32
- * Default deadlock threshold: 4 consecutive non-convergent turns. Sized
33
- * against the ambient turn cap (6): an outreach plus 4 unbroken counters
34
- * leaves exactly the closing turns to draft in the bargaining stance.
35
- */
36
- export declare const DEFAULT_DEADLOCK_THRESHOLD = 4;
37
- /**
38
- * Lower bound on the configurable threshold. Below 2 the "stalemate" signal is
39
- * meaningless — a single counter is ordinary dialogue, not a deadlock.
40
- */
41
- export declare const MIN_DEADLOCK_THRESHOLD = 2;
42
- /**
43
- * Consecutive non-convergent turns that constitute a deadlock, from
44
- * `NEGOTIATION_DEADLOCK_THRESHOLD`. Must be an integer >= 2; invalid,
45
- * non-integer, or out-of-range values fall back to the default (fail-open
46
- * toward the documented behavior, mirroring `askUserAnswerWindowMs`).
47
- */
48
- export declare function configuredDeadlockThreshold(): number;
49
- export interface DeadlockAssessment {
50
- /** True when the trailing non-convergent run has reached the threshold. */
51
- deadlocked: boolean;
52
- /** Length of the maximal trailing run of counter/question turns. */
53
- consecutiveNonConvergent: number;
54
- /** The threshold the run was compared against. */
55
- threshold: number;
56
- }
57
- /**
58
- * Deterministic stalemate detector: measures the maximal *trailing* run of
59
- * non-convergent turns (`counter`/`question`) in the persisted history and
60
- * compares it against the threshold. Continuation histories are included by
61
- * construction — the caller passes the full turn list, so a deadlock spanning
62
- * sessions still counts.
63
- *
64
- * Pure state inspection; no LLM, no I/O, no clock.
65
- */
66
- export declare function assessDeadlock(history: ReadonlyArray<{
67
- action?: string;
68
- }>, threshold?: number): DeadlockAssessment;
69
- /**
70
- * Renders the deadlock-stance prompt section. Returns the empty string when
71
- * the shift is not active, so the rendered system prompt is byte-identical to
72
- * the legacy build on every non-shifted turn (mirrors
73
- * `renderNegotiatorMemorySection`). The `ask_user` escalation line renders
74
- * only when the caller already legally holds the action (`canAskUser`) — the
75
- * shift never invents a locution.
76
- *
77
- * IND-611: `stance` selects which resolution the shift drafts toward —
78
- * bargaining (`advocate`/`evaluator`, the default and today's behavior) or
79
- * stalemate (`skeptic`). Omitted → bargaining, byte-identical to before.
80
- */
81
- export declare function renderBargainingShiftSection(input: {
82
- active: boolean;
83
- userName: string;
84
- canAskUser: boolean;
85
- consecutiveNonConvergent: number;
86
- stance?: NegotiatorStance;
87
- }): string;
@@ -1,150 +0,0 @@
1
- /**
2
- * Deadlock detection + persuasion→bargaining mode shift (IND-428, backlog item 6).
3
- *
4
- * Grounding: Wells & Reed (2006), *Knowing When to Bargain* — a persuasion
5
- * dialogue (arguing the merits) that reaches a stalemate may execute a *legal
6
- * shift* into a negotiation dialogue (offering concessions). See
7
- * `docs/design/negotiation-dialogue-game.md` for the formal framing of the
8
- * turn protocol as a dialogue game.
9
- *
10
- * Design constraints (hard):
11
- * - **Deterministic**: deadlock is decided by pure inspection of the persisted
12
- * turn history — never by an LLM.
13
- * - **Stance, not rules**: a detected deadlock changes the system agent's
14
- * *drafting stance* only. Locutions, seat vocabularies (`allowedActionsFor`),
15
- * termination, and turn-cap semantics are untouched.
16
- * - **Default-off**: gated on `NEGOTIATION_DEADLOCK_SHIFT_ENABLED === "true"`
17
- * (strict literal) and applied only to v2 negotiations, checked alongside the
18
- * protocol-version plumbing. When off, the legacy path is byte-identical.
19
- * - **Fail-open**: any detection error means "no deadlock" — advisory
20
- * infrastructure never blocks a negotiation.
21
- */
22
- import { stanceResolvesDeadlockByStalemate } from "./negotiation.stance.contracts.js";
23
- // ─── Configuration ───────────────────────────────────────────────────────────
24
- /**
25
- * Whether the deadlock→bargaining mode shift is enabled, from the
26
- * `NEGOTIATION_DEADLOCK_SHIFT_ENABLED` env switch. Strict literal `"true"`
27
- * only — the deployment is byte-for-byte unchanged until the flag is flipped,
28
- * and rolling back is the same single switch.
29
- */
30
- export function configuredDeadlockShiftEnabled() {
31
- return process.env.NEGOTIATION_DEADLOCK_SHIFT_ENABLED === "true";
32
- }
33
- /**
34
- * Default deadlock threshold: 4 consecutive non-convergent turns. Sized
35
- * against the ambient turn cap (6): an outreach plus 4 unbroken counters
36
- * leaves exactly the closing turns to draft in the bargaining stance.
37
- */
38
- export const DEFAULT_DEADLOCK_THRESHOLD = 4;
39
- /**
40
- * Lower bound on the configurable threshold. Below 2 the "stalemate" signal is
41
- * meaningless — a single counter is ordinary dialogue, not a deadlock.
42
- */
43
- export const MIN_DEADLOCK_THRESHOLD = 2;
44
- /**
45
- * Consecutive non-convergent turns that constitute a deadlock, from
46
- * `NEGOTIATION_DEADLOCK_THRESHOLD`. Must be an integer >= 2; invalid,
47
- * non-integer, or out-of-range values fall back to the default (fail-open
48
- * toward the documented behavior, mirroring `askUserAnswerWindowMs`).
49
- */
50
- export function configuredDeadlockThreshold() {
51
- const raw = process.env.NEGOTIATION_DEADLOCK_THRESHOLD;
52
- if (raw) {
53
- const parsed = Number(raw);
54
- if (Number.isInteger(parsed) && parsed >= MIN_DEADLOCK_THRESHOLD)
55
- return parsed;
56
- }
57
- return DEFAULT_DEADLOCK_THRESHOLD;
58
- }
59
- // ─── Detection ───────────────────────────────────────────────────────────────
60
- /**
61
- * The locutions that count toward a stalemate: challenges and information
62
- * requests that keep the dialogue open without converging. Everything else —
63
- * openings (`propose`/`outreach`: a fresh case is on the table), terminal
64
- * actions (the game is deciding, not stalling), and `ask_user` (new principal
65
- * input is about to arrive) — RESETS the run to zero. Unknown/missing actions
66
- * also reset (conservative: never manufacture a deadlock from unreadable data).
67
- */
68
- const NON_CONVERGENT_ACTIONS = new Set(["counter", "question"]);
69
- /**
70
- * Deterministic stalemate detector: measures the maximal *trailing* run of
71
- * non-convergent turns (`counter`/`question`) in the persisted history and
72
- * compares it against the threshold. Continuation histories are included by
73
- * construction — the caller passes the full turn list, so a deadlock spanning
74
- * sessions still counts.
75
- *
76
- * Pure state inspection; no LLM, no I/O, no clock.
77
- */
78
- export function assessDeadlock(history, threshold = DEFAULT_DEADLOCK_THRESHOLD) {
79
- const effectiveThreshold = Number.isInteger(threshold) && threshold >= MIN_DEADLOCK_THRESHOLD
80
- ? threshold
81
- : DEFAULT_DEADLOCK_THRESHOLD;
82
- let run = 0;
83
- for (let i = history.length - 1; i >= 0; i--) {
84
- const action = history[i]?.action;
85
- if (typeof action === "string" && NON_CONVERGENT_ACTIONS.has(action)) {
86
- run += 1;
87
- }
88
- else {
89
- break;
90
- }
91
- }
92
- return {
93
- deadlocked: run >= effectiveThreshold,
94
- consecutiveNonConvergent: run,
95
- threshold: effectiveThreshold,
96
- };
97
- }
98
- // ─── Internal shift record (task metadata JSONB, never public) ──────────────
99
- // ─── Prompt section (system agent drafting stance) ──────────────────────────
100
- const BARGAINING_SHIFT_SECTION = `
101
-
102
- DEADLOCK — SHIFT FROM PERSUASION TO BARGAINING. The last {consecutive} turns were counters/questions without convergence: the merits have been argued and restating them will not move the other side. For this turn, change stance:
103
- - Do NOT re-argue fit or repeat points already made.
104
- - Offer a concrete concession or scope reduction instead: a smaller first step (a single intro call, a scoped trial, a narrower version of the collaboration), dropping a contested requirement, or a trade on a dimension not yet contested.
105
- - Make the remaining objection priceable: name the specific smaller commitment that would resolve it.{askUserEscalation}
106
- - If no reduced scope would genuinely serve {userName}'s interests, conclude decisively with a terminal action from your allowed set rather than another repetitive counter.
107
- This shift changes your stance only — your available actions are unchanged.`;
108
- const BARGAINING_ASK_USER_ESCALATION = `
109
- - If a concession would require {userName}'s own input or permission (budget, availability, private details), escalate with "ask_user" instead of guessing.`;
110
- /**
111
- * Skeptic-stance deadlock resolution (IND-611). Under `NEGOTIATOR_STANCE=skeptic`
112
- * a stalemate resolves as a stalemate rather than by bargaining: the designed
113
- * outcome of persistent disagreement stops being "a smaller match" and becomes
114
- * "possibly no match". Same trigger, same threshold, same actions — only the
115
- * drafting stance differs. `advocate`/`evaluator` keep the bargaining section
116
- * byte-identical.
117
- */
118
- const STALEMATE_SHIFT_SECTION = `
119
-
120
- DEADLOCK — THE MERITS ARE EXHAUSTED. The last {consecutive} turns were counters/questions without convergence: the merits have been argued and restating them will not move the other side. For this turn, change stance:
121
- - Do NOT re-argue fit or repeat points already made.
122
- - Do NOT buy agreement with a concession or a reduced scope. A shrunken version of a match that could not be agreed on its merits is usually worth less of {userName}'s attention than the full one was, not more.
123
- - Name the ONE specific thing that would genuinely change your assessment. If it has not appeared after this many turns, it is unlikely to.
124
- - Absent that, conclude decisively with a terminal action from your allowed set. An unresolved disagreement is an acceptable outcome; a match made to end the disagreement is not.
125
- This shift changes your stance only — your available actions are unchanged.`;
126
- /**
127
- * Renders the deadlock-stance prompt section. Returns the empty string when
128
- * the shift is not active, so the rendered system prompt is byte-identical to
129
- * the legacy build on every non-shifted turn (mirrors
130
- * `renderNegotiatorMemorySection`). The `ask_user` escalation line renders
131
- * only when the caller already legally holds the action (`canAskUser`) — the
132
- * shift never invents a locution.
133
- *
134
- * IND-611: `stance` selects which resolution the shift drafts toward —
135
- * bargaining (`advocate`/`evaluator`, the default and today's behavior) or
136
- * stalemate (`skeptic`). Omitted → bargaining, byte-identical to before.
137
- */
138
- export function renderBargainingShiftSection(input) {
139
- if (!input.active)
140
- return "";
141
- if (input.stance && stanceResolvesDeadlockByStalemate(input.stance)) {
142
- return STALEMATE_SHIFT_SECTION
143
- .replace("{consecutive}", String(input.consecutiveNonConvergent))
144
- .replace(/{userName}/g, input.userName);
145
- }
146
- return BARGAINING_SHIFT_SECTION
147
- .replace("{consecutive}", String(input.consecutiveNonConvergent))
148
- .replace("{askUserEscalation}", input.canAskUser ? BARGAINING_ASK_USER_ESCALATION : "")
149
- .replace(/{userName}/g, input.userName);
150
- }
@@ -1,94 +0,0 @@
1
- import type { NegotiationOpportunityLifecycle } from '../shared/interfaces/database.interface.js';
2
- import type { SeedAssessment, UserNegotiationContext } from './negotiation.state.js';
3
- export interface AuthorizedNegotiationDetailTask {
4
- id: string;
5
- conversationId: string;
6
- state: string;
7
- createdAt: Date;
8
- updatedAt: Date;
9
- }
10
- export interface AuthorizedNegotiationDetailMetadata {
11
- sourceUserId?: string;
12
- candidateUserId?: string;
13
- initiatorUserId?: string;
14
- protocolVersion?: string;
15
- maxTurns?: number;
16
- opportunityId?: string;
17
- isContinuation?: boolean;
18
- priorTurnCount?: number;
19
- turnContext?: {
20
- sourceUser: UserNegotiationContext;
21
- candidateUser: UserNegotiationContext;
22
- indexContext: {
23
- networkId: string;
24
- prompt?: string;
25
- };
26
- seedAssessment: SeedAssessment;
27
- discoveryQuery?: string;
28
- };
29
- }
30
- export interface NegotiationDetailMessage {
31
- senderId: string;
32
- parts: unknown[];
33
- createdAt: Date;
34
- }
35
- export interface NegotiationDetailArtifact {
36
- name: string | null;
37
- parts: unknown[];
38
- }
39
- export interface AuthorizedNegotiationDetailReaderInput {
40
- task: AuthorizedNegotiationDetailTask;
41
- metadata: AuthorizedNegotiationDetailMetadata;
42
- callerUserId: string;
43
- callerRole: 'source' | 'candidate';
44
- readMessages: (conversationId: string) => Promise<NegotiationDetailMessage[]>;
45
- readArtifacts: (taskId: string) => Promise<NegotiationDetailArtifact[]>;
46
- readLifecycleEvidence: (opportunityIds: string[], ownerUserId: string) => Promise<Record<string, NegotiationOpportunityLifecycle>>;
47
- }
48
- /**
49
- * Projects an already-authorized negotiation task into the caller's detail
50
- * response. Admission and scope/privacy decisions stay in the tools facade;
51
- * this reader owns only parallel reads and deterministic response shaping.
52
- */
53
- export declare function readAuthorizedNegotiationDetail(input: AuthorizedNegotiationDetailReaderInput): Promise<{
54
- id: string;
55
- conversationId: string;
56
- conversationType: "agent_negotiation";
57
- status: string;
58
- role: "source" | "candidate";
59
- seat: import("../index.js").NegotiationSeat;
60
- protocolVersion: import("../index.js").NegotiationProtocolVersion;
61
- allowedActions: readonly ("propose" | "accept" | "reject" | "counter" | "question" | "outreach" | "withdraw" | "decline" | "ask_user")[];
62
- counterpartyId: string;
63
- turnCount: number;
64
- isUsersTurn: boolean;
65
- isContinuation: boolean;
66
- priorTurnCount: number;
67
- turnsAdded: number;
68
- turns: {
69
- turnNumber: number;
70
- speaker: string;
71
- senderId: string;
72
- action: string;
73
- actionActor: "agent";
74
- reasoning: string | null;
75
- suggestedRoles: {} | null;
76
- message: string | null;
77
- createdAt: Date;
78
- }[];
79
- outcome: unknown;
80
- lifecycle: import("./negotiation.lifecycle-narration.js").NegotiationLifecycleNarration;
81
- context: {
82
- discoveryQuery?: string | undefined;
83
- ownUser: UserNegotiationContext;
84
- otherUser: UserNegotiationContext;
85
- indexContext: {
86
- networkId: string;
87
- prompt?: string;
88
- };
89
- seedAssessment: SeedAssessment;
90
- isDiscoverer: boolean;
91
- } | null;
92
- createdAt: Date;
93
- updatedAt: Date;
94
- }>;
@@ -1,91 +0,0 @@
1
- import { expectedNegotiationSpeaker } from './negotiation.expected-speaker.js';
2
- import { buildLifecycleNarration } from './negotiation.lifecycle-narration.js';
3
- import { allowedActionsFor, readProtocolVersion, resolveSeat } from './negotiation.protocol.js';
4
- /**
5
- * Projects an already-authorized negotiation task into the caller's detail
6
- * response. Admission and scope/privacy decisions stay in the tools facade;
7
- * this reader owns only parallel reads and deterministic response shaping.
8
- */
9
- export async function readAuthorizedNegotiationDetail(input) {
10
- const { task, metadata, callerUserId, callerRole } = input;
11
- const isSource = callerRole === 'source';
12
- const counterpartyId = isSource ? metadata.candidateUserId : metadata.sourceUserId;
13
- const negotiationContext = metadata.turnContext
14
- ? {
15
- ownUser: isSource ? metadata.turnContext.sourceUser : metadata.turnContext.candidateUser,
16
- otherUser: isSource ? metadata.turnContext.candidateUser : metadata.turnContext.sourceUser,
17
- indexContext: metadata.turnContext.indexContext,
18
- seedAssessment: metadata.turnContext.seedAssessment,
19
- isDiscoverer: isSource,
20
- ...(metadata.turnContext.discoveryQuery && { discoveryQuery: metadata.turnContext.discoveryQuery }),
21
- }
22
- : null;
23
- const lifecycleOpportunityId = metadata.opportunityId?.trim() || undefined;
24
- // These independent reads must stay concurrent: message/artifact latency must
25
- // not delay lifecycle evidence, and missing lifecycle evidence remains fail-open.
26
- const [messages, artifacts, opportunityLifecycles] = await Promise.all([
27
- input.readMessages(task.conversationId),
28
- input.readArtifacts(task.id),
29
- input.readLifecycleEvidence(lifecycleOpportunityId ? [lifecycleOpportunityId] : [], callerUserId),
30
- ]);
31
- // Sender IDs, rather than parity, determine continuation turns. The parity
32
- // fallback is retained for legacy rows that do not record a sender ID.
33
- const turns = messages.map((message, index) => {
34
- const dataPart = message.parts?.find((part) => part.kind === 'data');
35
- const turnData = dataPart?.data;
36
- const turnNumber = index + 1;
37
- const speaker = message.senderId
38
- ? (message.senderId === `agent:${metadata.sourceUserId}` ? 'source' : 'candidate')
39
- : (turnNumber % 2 === 1 ? 'source' : 'candidate');
40
- return {
41
- turnNumber,
42
- speaker,
43
- senderId: message.senderId,
44
- action: turnData?.action ?? 'unknown',
45
- actionActor: 'agent',
46
- reasoning: turnData?.assessment?.reasoning ?? null,
47
- suggestedRoles: turnData?.assessment?.suggestedRoles ?? null,
48
- message: turnData?.message ?? null,
49
- createdAt: message.createdAt,
50
- };
51
- });
52
- const outcomeArtifact = artifacts.find((artifact) => artifact.name === 'negotiation-outcome');
53
- const outcome = outcomeArtifact
54
- ? outcomeArtifact.parts?.find((part) => part.kind === 'data')?.data
55
- : null;
56
- const turnCount = messages.length;
57
- const expectedSpeaker = expectedNegotiationSpeaker(metadata, messages);
58
- const status = task.state === 'working' ? 'active'
59
- : task.state === 'waiting_for_agent' ? 'waiting_for_agent'
60
- : task.state === 'completed' ? 'completed'
61
- : task.state;
62
- const isUsersTurn = status !== 'completed' && expectedSpeaker === callerUserId;
63
- const protocolVersion = readProtocolVersion(metadata) ?? 'v1';
64
- const seat = resolveSeat(callerUserId, metadata);
65
- const priorTurnCount = metadata.priorTurnCount ?? 0;
66
- return {
67
- id: task.id,
68
- conversationId: task.conversationId,
69
- conversationType: 'agent_negotiation',
70
- status,
71
- role: callerRole,
72
- seat,
73
- protocolVersion,
74
- allowedActions: allowedActionsFor(protocolVersion, seat),
75
- counterpartyId: counterpartyId ?? 'unknown',
76
- turnCount,
77
- isUsersTurn,
78
- isContinuation: metadata.isContinuation ?? false,
79
- priorTurnCount,
80
- // Clamped: `turnCount` is match-scoped, but a task stamped before that
81
- // change carries a conversation-wide `priorTurnCount`, which would other-
82
- // wise report a negative delta for negotiations in flight across the deploy.
83
- turnsAdded: Math.max(0, turnCount - priorTurnCount),
84
- turns,
85
- outcome,
86
- lifecycle: buildLifecycleNarration(status, lifecycleOpportunityId ? opportunityLifecycles[lifecycleOpportunityId] : undefined),
87
- context: negotiationContext,
88
- createdAt: task.createdAt,
89
- updatedAt: task.updatedAt,
90
- };
91
- }
@@ -1,33 +0,0 @@
1
- export interface NegotiationSpeakerParticipants {
2
- sourceUserId?: unknown;
3
- candidateUserId?: unknown;
4
- /**
5
- * The seat that opens this negotiation (v2 stamp). An unopened negotiation
6
- * starts with its initiator; `sourceUserId` is the pre-stamp fallback, which
7
- * is what the stamp defaults to anyway.
8
- */
9
- initiatorUserId?: unknown;
10
- }
11
- export interface NegotiationSpeakerMessage {
12
- senderId?: unknown;
13
- parts?: unknown;
14
- }
15
- /**
16
- * Resolves the participant whose agent owns the next canonical bilateral turn.
17
- *
18
- * `messages` must be THIS negotiation's messages (see
19
- * `getNegotiationMessages`), never the whole conversation. Two agents share one
20
- * DM across every match they are ever paired on, so conversation-scoped parity
21
- * makes a fresh negotiation inherit the turn order of an unrelated, concluded
22
- * one — handing the floor to the counterparty, who may `accept` immediately and
23
- * conclude the match before its initiator has spoken.
24
- *
25
- * Participant identities must be nonempty and distinct. Unrelated agent,
26
- * system, and owner-settlement messages are ignored while finding the latest
27
- * source/candidate message. An ordinary canonical message passes the floor to
28
- * the other participant; `ask_user` retains it for the consulting sender's
29
- * exact successor. A negotiation with no canonical history of its own has not
30
- * opened yet, so it starts with its initiator. Invalid participant metadata
31
- * always fails closed.
32
- */
33
- export declare function expectedNegotiationSpeaker(participants: NegotiationSpeakerParticipants, messages: readonly NegotiationSpeakerMessage[]): string | null;