@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,224 +0,0 @@
1
- /**
2
- * Seat-scoped negotiation protocol rules (v2 client-advocate protocol).
3
- *
4
- * v2 fixes exactly one initiating seat per match (`metadata.initiatorUserId`,
5
- * stamped at discovery time — IND-396) and makes consent asymmetric:
6
- * **accept can only come from the counterparty seat**, schema-enforced.
7
- *
8
- * Vocabulary per seat (v2):
9
- * - initiator: `outreach | counter | question | withdraw` (no accept)
10
- * - counterparty: `accept | decline | counter | question`
11
- * - final turn: initiator `withdraw | counter`; counterparty `accept | decline`
12
- *
13
- * v1 tasks keep the legacy vocabulary (`propose | accept | reject | counter |
14
- * question`) — the version is inherited per conversation, never re-stamped, so
15
- * in-flight v1 negotiations are grandfathered untouched.
16
- *
17
- * Outcome mapping is version-independent: `accept` → opportunity `pending`,
18
- * `reject`/`withdraw`/`decline` → `rejected`, turn-cap → `stalled`.
19
- */
20
- import { z } from "zod";
21
- import { AskUserPayloadSchema } from "../shared/schemas/negotiation-state.schema.js";
22
- // ─── Shared assessment fragment ──────────────────────────────────────────────
23
- const AssessmentSchema = z.object({
24
- reasoning: z.string(),
25
- suggestedRoles: z.object({
26
- ownUser: z.enum(["agent", "patient", "peer"]),
27
- otherUser: z.enum(["agent", "patient", "peer"]),
28
- }),
29
- });
30
- function turnSchema(actions) {
31
- return z.object({
32
- action: z.enum(actions),
33
- assessment: AssessmentSchema,
34
- message: z.string().nullable().optional(),
35
- /** Present when action is `ask_user` (v2, P3.2). */
36
- askUser: AskUserPayloadSchema.nullable().optional(),
37
- });
38
- }
39
- // ─── v2 seat-scoped turn schemas ─────────────────────────────────────────────
40
- /** Initiator seat, non-final turn: may reach out, push back, ask, or walk away — never accept. */
41
- export const InitiatorTurnSchema = turnSchema(["outreach", "counter", "question", "withdraw"]);
42
- /** Counterparty seat, non-final turn: the only seat that can accept. */
43
- export const CounterpartyTurnSchema = turnSchema(["accept", "decline", "counter", "question"]);
44
- /** Initiator seat, final allowed turn: commit to walking away or leave the door open. */
45
- export const FinalInitiatorTurnSchema = turnSchema(["withdraw", "counter"]);
46
- /** Counterparty seat, final allowed turn: must decide. */
47
- export const FinalCounterpartyTurnSchema = turnSchema(["accept", "decline"]);
48
- // ─── v2 ask_user variants (P3.2, flag-gated) ────────────────────────────────
49
- // Non-final turns only: the final-cap turn must decide, never pause. Selected
50
- // via the `opts.askUser` parameter on allowedActionsFor/turnSchemaFor — the
51
- // base schemas above stay byte-identical for every existing caller.
52
- /** Initiator seat, non-final turn, with the client-consult pause available. */
53
- export const InitiatorAskUserTurnSchema = turnSchema(["outreach", "counter", "question", "withdraw", "ask_user"]);
54
- /** Counterparty seat, non-final turn, with the client-consult pause available. */
55
- export const CounterpartyAskUserTurnSchema = turnSchema(["accept", "decline", "counter", "question", "ask_user"]);
56
- // ─── Action vocabulary per version + seat ────────────────────────────────────
57
- const V1_ACTIONS = ["propose", "accept", "reject", "counter", "question"];
58
- const V1_FINAL_ACTIONS = ["accept", "reject"];
59
- const V2_INITIATOR_ACTIONS = ["outreach", "counter", "question", "withdraw"];
60
- const V2_COUNTERPARTY_ACTIONS = ["accept", "decline", "counter", "question"];
61
- const V2_FINAL_INITIATOR_ACTIONS = ["withdraw", "counter"];
62
- const V2_FINAL_COUNTERPARTY_ACTIONS = ["accept", "decline"];
63
- const V2_INITIATOR_ASK_USER_ACTIONS = [...V2_INITIATOR_ACTIONS, "ask_user"];
64
- const V2_COUNTERPARTY_ASK_USER_ACTIONS = [...V2_COUNTERPARTY_ACTIONS, "ask_user"];
65
- /**
66
- * The set of actions a given seat may submit under a given protocol version.
67
- *
68
- * v1 ignores the seat entirely (legacy symmetric vocabulary) so pre-v2
69
- * negotiations behave exactly as before.
70
- */
71
- export function allowedActionsFor(version, seat, isFinalTurn = false, opts) {
72
- if (version !== "v2")
73
- return isFinalTurn ? V1_FINAL_ACTIONS : V1_ACTIONS;
74
- const askUser = opts?.askUser === true && !isFinalTurn;
75
- if (seat === "initiator") {
76
- return isFinalTurn ? V2_FINAL_INITIATOR_ACTIONS : (askUser ? V2_INITIATOR_ASK_USER_ACTIONS : V2_INITIATOR_ACTIONS);
77
- }
78
- return isFinalTurn ? V2_FINAL_COUNTERPARTY_ACTIONS : (askUser ? V2_COUNTERPARTY_ASK_USER_ACTIONS : V2_COUNTERPARTY_ACTIONS);
79
- }
80
- /**
81
- * Zod turn schema for a system-agent turn, selected by version + seat +
82
- * final-turn flag. v1 returns the legacy schemas (seat-agnostic); v2 returns
83
- * the seat-scoped schemas above, making an initiator `accept` structurally
84
- * impossible rather than prompt-discouraged.
85
- *
86
- * The v1 legacy schemas are passed in by the caller (they live in
87
- * `negotiation.state.ts`) to keep this module free of a state-module import.
88
- */
89
- export function turnSchemaFor(version, seat, isFinalTurn, v1Schemas, opts) {
90
- if (version !== "v2")
91
- return isFinalTurn ? v1Schemas.final : v1Schemas.system;
92
- const askUser = opts?.askUser === true && !isFinalTurn;
93
- if (seat === "initiator") {
94
- return isFinalTurn ? FinalInitiatorTurnSchema : (askUser ? InitiatorAskUserTurnSchema : InitiatorTurnSchema);
95
- }
96
- return isFinalTurn ? FinalCounterpartyTurnSchema : (askUser ? CounterpartyAskUserTurnSchema : CounterpartyTurnSchema);
97
- }
98
- // ─── Action semantics (version-independent) ──────────────────────────────────
99
- /** Terminal actions end the negotiation immediately. */
100
- export function isTerminalAction(action) {
101
- return action === "accept" || action === "reject" || action === "withdraw" || action === "decline";
102
- }
103
- /** Reject-like actions map the opportunity to `rejected` (v1 reject, v2 withdraw/decline). */
104
- export function isRejectLikeAction(action) {
105
- return action === "reject" || action === "withdraw" || action === "decline";
106
- }
107
- /**
108
- * Conservative action when an agent produced schema-invalid output (after the
109
- * retry) or an internal error needs a seat-valid terminal placeholder.
110
- *
111
- * Non-final turns fall back to `counter` (keeps the dialogue open — the AC's
112
- * "conservative counter"). Final turns must decide: v1 → `reject`, v2
113
- * counterparty → `decline`, v2 initiator → `counter` is still legal on the
114
- * final turn so it stays `counter` (finalizes as turn-cap/stalled).
115
- */
116
- export function fallbackActionFor(version, seat, isFinalTurn) {
117
- if (!isFinalTurn)
118
- return "counter";
119
- if (version !== "v2")
120
- return "reject";
121
- return seat === "counterparty" ? "decline" : "counter";
122
- }
123
- /** Seat-appropriate reject-like action for error paths. */
124
- export function rejectActionFor(version, seat) {
125
- if (version !== "v2")
126
- return "reject";
127
- return seat === "initiator" ? "withdraw" : "decline";
128
- }
129
- // ─── Metadata readers ────────────────────────────────────────────────────────
130
- /**
131
- * Read the protocol version off task metadata. Returns null when the task
132
- * predates version stamping (treat as v1 at the call site when the task is a
133
- * genuine prior; fresh tasks stamp from {@link configuredProtocolVersion}).
134
- */
135
- export function readProtocolVersion(metadata) {
136
- const v = metadata?.protocolVersion;
137
- return v === "v2" ? "v2" : v === "v1" ? "v1" : null;
138
- }
139
- /**
140
- * Protocol version for negotiations without a prior task for the same
141
- * opportunity, from the `NEGOTIATION_PROTOCOL_VERSION` env switch. Defaults
142
- * to `v1` when unset — v2 is opt-in per environment, and rolling back is the
143
- * same single switch (only in-flight negotiations stay pinned to their
144
- * stamped version).
145
- */
146
- export function configuredProtocolVersion() {
147
- return process.env.NEGOTIATION_PROTOCOL_VERSION === "v2" ? "v2" : "v1";
148
- }
149
- /**
150
- * Whether the `ask_user` client-consult pause (P3.2) is enabled, from the
151
- * `NEGOTIATION_ASK_USER_ENABLED` env switch. Defaults to off — the deployment
152
- * is byte-for-byte unchanged until the flag is flipped, and rolling back is
153
- * the same single switch.
154
- */
155
- export function configuredAskUserEnabled() {
156
- return process.env.NEGOTIATION_ASK_USER_ENABLED === "true";
157
- }
158
- /**
159
- * Default per-negotiation ask cap: total client-consultation rounds (mid-flight
160
- * `ask_user` pauses and post-stall parks, both sides combined) before the
161
- * negotiation stalls terminally instead of parking again. Three admits one
162
- * post-stall park even after each side has spent its one mid-flight consult.
163
- */
164
- export const DEFAULT_NEGOTIATION_ASK_ROUNDS_CAP = 3;
165
- /**
166
- * Per-negotiation ask cap, overridable via `NEGOTIATION_ASK_ROUNDS_CAP`.
167
- * Invalid or non-positive values fall back to the default — zero is not an
168
- * off switch here; the cap exists so two agents cannot ping-pong their humans
169
- * indefinitely. It tunes the bound, it does not gate the behaviour.
170
- */
171
- export function negotiationAskRoundsCap() {
172
- const raw = process.env.NEGOTIATION_ASK_ROUNDS_CAP;
173
- if (raw) {
174
- const parsed = Number(raw);
175
- if (Number.isInteger(parsed) && parsed > 0)
176
- return parsed;
177
- }
178
- return DEFAULT_NEGOTIATION_ASK_ROUNDS_CAP;
179
- }
180
- /** Default answer window for a paused `ask_user` negotiation: 24 hours. */
181
- export const DEFAULT_ASK_USER_WINDOW_MS = 24 * 60 * 60 * 1000;
182
- /**
183
- * Answer window for a paused `ask_user` negotiation, in ms. Overridable via
184
- * `NEGOTIATION_ASK_USER_WINDOW_MS` (dev/e2e use shorter windows to exercise
185
- * the expiry path); invalid or non-positive values fall back to 24 h.
186
- */
187
- export function askUserAnswerWindowMs() {
188
- const raw = process.env.NEGOTIATION_ASK_USER_WINDOW_MS;
189
- if (raw) {
190
- const parsed = Number(raw);
191
- if (Number.isFinite(parsed) && parsed > 0)
192
- return parsed;
193
- }
194
- return DEFAULT_ASK_USER_WINDOW_MS;
195
- }
196
- /**
197
- * Slack added on top of the answer window when deciding whether a paused
198
- * (`input_required`) task still holds the conversation lock. Covers expiry
199
- * worker delay: the lock must outlive the timer slightly, so ambient
200
- * rediscovery cannot slip in between window expiry and the worker's resume.
201
- */
202
- export const ASK_USER_LOCK_SLACK_MS = 60 * 60 * 1000;
203
- /**
204
- * Resolve the seat of `userId` on a negotiation task.
205
- *
206
- * Keys on `metadata.initiatorUserId` (the rigid v2 stamp), **never on turn
207
- * parity** — continuations can start with either side speaking first, so
208
- * parity misattributes seats across sessions. Pre-stamp tasks fall back to
209
- * `sourceUserId` (the discovery-session opener), which is what the stamp
210
- * defaults to anyway.
211
- */
212
- export function resolveSeat(userId, metadata) {
213
- const initiator = typeof metadata?.initiatorUserId === "string" && metadata.initiatorUserId.length > 0
214
- ? metadata.initiatorUserId
215
- : typeof metadata?.sourceUserId === "string"
216
- ? metadata.sourceUserId
217
- : undefined;
218
- return initiator === userId ? "initiator" : "counterparty";
219
- }
220
- /** Human-readable seat-violation message shared by respond surfaces. */
221
- export function seatViolationMessage(action, seat, version) {
222
- const allowed = allowedActionsFor(version, seat).join(", ");
223
- return `Action "${action}" is not allowed for your seat (${seat}) under negotiation protocol ${version}. Allowed actions: ${allowed}.`;
224
- }
@@ -1,52 +0,0 @@
1
- import type { StructuredQuestion } from '../shared/schemas/structured-question.schema.js';
2
- /** Fixed prompt-safe labels; producers must not replace them with raw network/counterparty text. */
3
- export declare const NEGOTIATION_QUESTION_GENERIC_COUNTERPARTY = "the other participant";
4
- export declare const NEGOTIATION_QUESTION_GENERIC_NETWORK = "the selected network";
5
- /**
6
- * Deterministically reject question context copied from private negotiation inputs.
7
- * This guard never rewrites content: unsafe or ambiguous text yields no card while
8
- * the already-armed timeout retains the conservative continuation path.
9
- */
10
- export declare function isSafeNegotiationQuestionText(value: string, options?: {
11
- forbiddenIdentifiers?: string[];
12
- forbiddenSourceText?: string[];
13
- }): boolean;
14
- /**
15
- * Whole-question gate for a question the NEGOTIATOR authored.
16
- *
17
- * The pre-A2H `disclosureSubject` never reached the client as written — the
18
- * server templated the copy around it. An authored `StructuredQuestion` is
19
- * rendered verbatim, so every visible field needs the same gate the subject
20
- * got, and it needs it with the identifiers in hand.
21
- *
22
- * That is the capability the api-side `isSafeNegotiationQuestionPayload` lacks
23
- * and cannot gain: at the DB boundary it holds only generic patterns, so it
24
- * cannot tell that a perfectly well-formed question is naming THIS counterparty
25
- * or paraphrasing THIS seed assessment. The turn node has both, which is why
26
- * this runs here and not there.
27
- *
28
- * Fail-closed and non-rewriting, like every guard in this file: a caller that
29
- * gets `false` drops the question and keeps the enum-only path, rather than
30
- * shipping a repaired one.
31
- *
32
- * @param options.forbiddenIdentifiers Names that must not appear as words —
33
- * the counterparty's, at the call site.
34
- * @param options.forbiddenSourceText Private inputs that must not be echoed —
35
- * the seed assessment's reasoning, at the call site.
36
- */
37
- export declare function isSafeAuthoredNegotiationQuestion(question: StructuredQuestion | null | undefined, options?: {
38
- forbiddenIdentifiers?: string[];
39
- forbiddenSourceText?: string[];
40
- }): boolean;
41
- /** Validate the only structured fields allowed to enter the inflight Questioner prompt. */
42
- export declare function validateInflightAskUserFields(input: {
43
- disclosureSubject?: string | null;
44
- draftQuestion?: string | null;
45
- forbiddenIdentifiers?: string[];
46
- forbiddenSourceText?: string[];
47
- }): {
48
- disclosureSubject: string;
49
- draftQuestion?: string;
50
- } | null;
51
- /** Stable, non-secret settlement/outbox key derived only from the exact paused task. */
52
- export declare function negotiationQuestionSettlementId(taskId: string): string;
@@ -1,119 +0,0 @@
1
- import { hasUnsupportedOpportunityClaim } from '../shared/utils/claim-safety.js';
2
- /** Fixed prompt-safe labels; producers must not replace them with raw network/counterparty text. */
3
- export const NEGOTIATION_QUESTION_GENERIC_COUNTERPARTY = 'the other participant';
4
- export const NEGOTIATION_QUESTION_GENERIC_NETWORK = 'the selected network';
5
- const INTERNAL_ID_PATTERN = /\b(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|(?:task|intent|network|opportunity|user|match)[_-]?id)\b/i;
6
- const PRIVATE_SOURCE_PATTERN = /\b(?:private transcript|raw transcript|assessment(?:\.reasoning)?|seed assessment|evaluator reasoning|match reason|matchReason|internal metadata|counterparty profile)\b/i;
7
- function normalize(value) {
8
- return value.toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim();
9
- }
10
- /**
11
- * Deterministically reject question context copied from private negotiation inputs.
12
- * This guard never rewrites content: unsafe or ambiguous text yields no card while
13
- * the already-armed timeout retains the conservative continuation path.
14
- */
15
- export function isSafeNegotiationQuestionText(value, options) {
16
- const trimmed = value.trim();
17
- if (trimmed.length === 0 || trimmed.length > 600)
18
- return false;
19
- if (INTERNAL_ID_PATTERN.test(trimmed) || PRIVATE_SOURCE_PATTERN.test(trimmed))
20
- return false;
21
- if (hasUnsupportedOpportunityClaim(trimmed))
22
- return false;
23
- const normalized = normalize(trimmed);
24
- for (const identifier of options?.forbiddenIdentifiers ?? []) {
25
- const forbidden = normalize(identifier);
26
- if (forbidden.length >= 3 && new RegExp(`(?:^| )${forbidden.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(?: |$)`).test(normalized)) {
27
- return false;
28
- }
29
- }
30
- for (const source of options?.forbiddenSourceText ?? []) {
31
- const forbidden = normalize(source);
32
- if (forbidden.length >= 24 && (normalized.includes(forbidden) || forbidden.includes(normalized))) {
33
- return false;
34
- }
35
- }
36
- return true;
37
- }
38
- /**
39
- * Instruction-shaped text that must never survive into a rendered question.
40
- *
41
- * Applies ONLY to `isSafeAuthoredNegotiationQuestion` — deliberately not added
42
- * to `isSafeNegotiationQuestionText`, which guards a live path whose verdicts
43
- * must not move. The exposure is specific to the authored question: the client
44
- * reads these strings verbatim on a card, and whatever they select comes BACK
45
- * into the negotiator's prompt as a user answer. An option labelled "ignore
46
- * previous instructions" is therefore a round-trip injection with a human
47
- * clicking the button.
48
- *
49
- * Two families. Override phrasings ("ignore the above", "you are now a…"), and
50
- * forged structure: role headers and the `--- section ---` delimiter this
51
- * codebase actually uses to fence prompt sections (see
52
- * `renderNegotiatorClientDmSection`), which is what a forged block would have
53
- * to imitate to be read as one.
54
- */
55
- const PROMPT_INJECTION_PATTERN = /\b(?:ignore|disregard|forget|override|bypass)\b[^.!?\n]{0,40}\b(?:instructions?|prompts?|rules?|directives?|guidelines?|everything\s+above|the\s+above|all\s+of\s+the\s+above)\b|\byou\s+are\s+now\s+(?:an?|the)\b|\bnew\s+instructions?\s*:|^\s*(?:#{1,6}\s*|\*{2}\s*)?(?:system|assistant|developer|human)\s*:|<\|[^|>]{0,40}\|>|\[\/?(?:INST|SYS)\]|^\s*-{3,}[^\n]*-{3,}\s*$/im;
56
- /**
57
- * Whole-question gate for a question the NEGOTIATOR authored.
58
- *
59
- * The pre-A2H `disclosureSubject` never reached the client as written — the
60
- * server templated the copy around it. An authored `StructuredQuestion` is
61
- * rendered verbatim, so every visible field needs the same gate the subject
62
- * got, and it needs it with the identifiers in hand.
63
- *
64
- * That is the capability the api-side `isSafeNegotiationQuestionPayload` lacks
65
- * and cannot gain: at the DB boundary it holds only generic patterns, so it
66
- * cannot tell that a perfectly well-formed question is naming THIS counterparty
67
- * or paraphrasing THIS seed assessment. The turn node has both, which is why
68
- * this runs here and not there.
69
- *
70
- * Fail-closed and non-rewriting, like every guard in this file: a caller that
71
- * gets `false` drops the question and keeps the enum-only path, rather than
72
- * shipping a repaired one.
73
- *
74
- * @param options.forbiddenIdentifiers Names that must not appear as words —
75
- * the counterparty's, at the call site.
76
- * @param options.forbiddenSourceText Private inputs that must not be echoed —
77
- * the seed assessment's reasoning, at the call site.
78
- */
79
- export function isSafeAuthoredNegotiationQuestion(question, options) {
80
- if (!question || typeof question !== 'object')
81
- return false;
82
- // Re-checked rather than trusted from the schema: this gate also runs on
83
- // turns that arrive from an external agent, and a rendered card with one
84
- // option (or fifteen) is a broken card regardless of how it validated.
85
- const questionOptions = question.options;
86
- if (!Array.isArray(questionOptions) || questionOptions.length < 2 || questionOptions.length > 4)
87
- return false;
88
- const fields = [
89
- question.title,
90
- question.prompt,
91
- ...questionOptions.flatMap((option) => [option?.label, option?.description]),
92
- ];
93
- for (const field of fields) {
94
- if (typeof field !== 'string')
95
- return false;
96
- if (!isSafeNegotiationQuestionText(field, options))
97
- return false;
98
- if (PROMPT_INJECTION_PATTERN.test(field))
99
- return false;
100
- }
101
- return true;
102
- }
103
- /** Validate the only structured fields allowed to enter the inflight Questioner prompt. */
104
- export function validateInflightAskUserFields(input) {
105
- const disclosureSubject = input.disclosureSubject?.trim();
106
- if (!disclosureSubject || !isSafeNegotiationQuestionText(disclosureSubject, input))
107
- return null;
108
- const draftQuestion = input.draftQuestion?.trim();
109
- if (draftQuestion && !isSafeNegotiationQuestionText(draftQuestion, input))
110
- return null;
111
- return {
112
- disclosureSubject,
113
- ...(draftQuestion ? { draftQuestion } : {}),
114
- };
115
- }
116
- /** Stable, non-secret settlement/outbox key derived only from the exact paused task. */
117
- export function negotiationQuestionSettlementId(taskId) {
118
- return `negotiation-question-settlement-v1-${taskId}`;
119
- }
@@ -1,194 +0,0 @@
1
- import { z } from "zod";
2
- import { createStructuredModel } from "../shared/agent/model.config.js";
3
- export { NEGOTIATOR_MEMORY_KINDS } from "./negotiation.memory.js";
4
- export type { DistilledMemoryKind } from "./negotiation.memory.js";
5
- /** Hard ceiling on entries distilled per reflection pass (per side). */
6
- export declare const MAX_DISTILLED_MEMORIES = 3;
7
- /**
8
- * One distilled memory entry as produced by the reflection LLM. The caller
9
- * owns persistence: it resolves `aboutCounterparty` to a `subjectUserId`,
10
- * computes the embedding, and attaches provenance `sourceRefs`.
11
- */
12
- export declare const DistilledMemorySchema: z.ZodObject<{
13
- kind: z.ZodEnum<["playbook", "disclosure_rule", "counterparty_dossier", "threshold"]>;
14
- /** Self-contained operational statement, useful without the transcript. */
15
- content: z.ZodString;
16
- /** Evidence strength, 0..1. Explicit client statements score high. */
17
- confidence: z.ZodNumber;
18
- /**
19
- * True when the entry is about the counterparty (kind should be
20
- * `counterparty_dossier`); false for client-side rules and playbooks.
21
- */
22
- aboutCounterparty: z.ZodBoolean;
23
- /** Turn indexes (0-based, into the provided transcript) evidencing this entry. */
24
- turnIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
25
- }, "strip", z.ZodTypeAny, {
26
- kind: "threshold" | "playbook" | "disclosure_rule" | "counterparty_dossier";
27
- confidence: number;
28
- content: string;
29
- aboutCounterparty: boolean;
30
- turnIndexes: number[];
31
- }, {
32
- kind: "threshold" | "playbook" | "disclosure_rule" | "counterparty_dossier";
33
- confidence: number;
34
- content: string;
35
- aboutCounterparty: boolean;
36
- turnIndexes?: number[] | undefined;
37
- }>;
38
- export type DistilledMemory = z.infer<typeof DistilledMemorySchema>;
39
- export declare const ReflectionResultSchema: z.ZodObject<{
40
- memories: z.ZodArray<z.ZodObject<{
41
- kind: z.ZodEnum<["playbook", "disclosure_rule", "counterparty_dossier", "threshold"]>;
42
- /** Self-contained operational statement, useful without the transcript. */
43
- content: z.ZodString;
44
- /** Evidence strength, 0..1. Explicit client statements score high. */
45
- confidence: z.ZodNumber;
46
- /**
47
- * True when the entry is about the counterparty (kind should be
48
- * `counterparty_dossier`); false for client-side rules and playbooks.
49
- */
50
- aboutCounterparty: z.ZodBoolean;
51
- /** Turn indexes (0-based, into the provided transcript) evidencing this entry. */
52
- turnIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
53
- }, "strip", z.ZodTypeAny, {
54
- kind: "threshold" | "playbook" | "disclosure_rule" | "counterparty_dossier";
55
- confidence: number;
56
- content: string;
57
- aboutCounterparty: boolean;
58
- turnIndexes: number[];
59
- }, {
60
- kind: "threshold" | "playbook" | "disclosure_rule" | "counterparty_dossier";
61
- confidence: number;
62
- content: string;
63
- aboutCounterparty: boolean;
64
- turnIndexes?: number[] | undefined;
65
- }>, "many">;
66
- }, "strip", z.ZodTypeAny, {
67
- memories: {
68
- kind: "threshold" | "playbook" | "disclosure_rule" | "counterparty_dossier";
69
- confidence: number;
70
- content: string;
71
- aboutCounterparty: boolean;
72
- turnIndexes: number[];
73
- }[];
74
- }, {
75
- memories: {
76
- kind: "threshold" | "playbook" | "disclosure_rule" | "counterparty_dossier";
77
- confidence: number;
78
- content: string;
79
- aboutCounterparty: boolean;
80
- turnIndexes?: number[] | undefined;
81
- }[];
82
- }>;
83
- export type ReflectionResult = z.infer<typeof ReflectionResultSchema>;
84
- /** A transcript row projected into the reflecting client's perspective. */
85
- export interface ReflectionTranscriptEntry {
86
- index: number;
87
- speaker: "client" | "counterparty";
88
- action: string;
89
- message?: string;
90
- reasoning?: string;
91
- }
92
- export interface NegotiationReflectionInput {
93
- /** The user whose negotiator is reflecting (memories land on their agent). */
94
- clientUser: {
95
- id: string;
96
- name?: string;
97
- bio?: string;
98
- };
99
- counterpartyUser: {
100
- id: string;
101
- name?: string;
102
- bio?: string;
103
- };
104
- /** The client's seat in this negotiation. */
105
- seat: "initiator" | "counterparty";
106
- outcome: {
107
- hasOpportunity: boolean;
108
- reasoning: string;
109
- turnCount: number;
110
- };
111
- transcript: ReflectionTranscriptEntry[];
112
- /** Network prompt for context (optional). */
113
- indexContext?: string;
114
- }
115
- export interface ChatReflectionInput {
116
- clientUser: {
117
- id: string;
118
- name?: string;
119
- };
120
- /** The negotiator DM messages, oldest first. */
121
- messages: Array<{
122
- role: "user" | "assistant";
123
- content: string;
124
- }>;
125
- }
126
- /**
127
- * Payload the finalize node hands to the injected {@link ReflectEnqueueFn}.
128
- * Carries user display context so the reflect worker never re-loads profiles;
129
- * turn history is loaded from the conversation by the worker (payloads stay
130
- * small in Redis).
131
- */
132
- export interface NegotiationReflectJobData {
133
- negotiationId: string;
134
- conversationId: string;
135
- opportunityId?: string;
136
- sourceUser: {
137
- id: string;
138
- name?: string;
139
- bio?: string;
140
- };
141
- candidateUser: {
142
- id: string;
143
- name?: string;
144
- bio?: string;
145
- };
146
- initiatorUserId: string;
147
- outcome: {
148
- hasOpportunity: boolean;
149
- reasoning: string;
150
- turnCount: number;
151
- };
152
- }
153
- /**
154
- * Injected enqueue callback for post-negotiation reflection (P5.2). The
155
- * protocol package has no BullMQ access — services/api wires this at its
156
- * composition roots, exactly like `QuestionerEnqueueFn`. Called fire-and-
157
- * forget from the finalize node: a reflection failure must never affect the
158
- * negotiation outcome.
159
- */
160
- export type ReflectEnqueueFn = (job: NegotiationReflectJobData) => Promise<void>;
161
- export interface NegotiationReflectorConfig {
162
- /** Hard ceiling on the reflection LLM round-trip, in ms (default 20000). */
163
- timeoutMs?: number;
164
- }
165
- /**
166
- * The memory distiller (P5.2). One structured LLM call per reflection pass,
167
- * producing ≤ {@link MAX_DISTILLED_MEMORIES} private memory entries for one
168
- * client's negotiator. Throws on LLM/validation failure — callers (the reflect
169
- * queue worker) own the swallow-and-log policy, since reflection must never
170
- * affect a negotiation outcome.
171
- */
172
- export declare class NegotiationReflector {
173
- private readonly timeoutMs;
174
- constructor(config?: NegotiationReflectorConfig);
175
- /**
176
- * Distill memories from a finished negotiation, from one side's perspective.
177
- * @throws When the LLM call times out or returns schema-invalid output.
178
- */
179
- reflectNegotiation(input: NegotiationReflectionInput): Promise<DistilledMemory[]>;
180
- /**
181
- * Distill stated preferences/corrections from a client ↔ negotiator chat.
182
- * @throws When the LLM call times out or returns schema-invalid output.
183
- */
184
- reflectChat(input: ChatReflectionInput): Promise<DistilledMemory[]>;
185
- private distill;
186
- /**
187
- * Raw structured-model round trip. Split out as a seam so tests can drive
188
- * the schema-validation path without a live provider.
189
- */
190
- protected callModel(model: ReturnType<typeof createStructuredModel>, chatMessages: Array<{
191
- role: string;
192
- content: string;
193
- }>): Promise<unknown>;
194
- }