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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -132
  12. package/dist/index.js +41 -100
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,181 +0,0 @@
1
- /**
2
- * Applies status-transition admission rules before lifecycle persistence.
3
- * Acceptance is a two-party action: an actor that already acted cannot accept
4
- * again, while rejection and expiry remain available to any participating actor.
5
- */
6
- export function assessOpportunityStatusTransition(opportunity, actorUserId, newStatus) {
7
- if (newStatus !== 'accepted' && newStatus !== 'rejected' && newStatus !== 'expired') {
8
- return { success: false, error: 'newStatus must be one of: accepted, rejected, expired.' };
9
- }
10
- const callerActor = opportunity.actors.find((actor) => actor.userId === actorUserId);
11
- if (!callerActor) {
12
- return { success: false, error: 'You are not part of this opportunity.' };
13
- }
14
- if (newStatus === 'accepted') {
15
- if (callerActor.actedAt) {
16
- return {
17
- success: false,
18
- error: 'You have already acted on this opportunity. The other party must accept.',
19
- };
20
- }
21
- return {
22
- kind: 'stamp_accepted',
23
- counterpartUserId: opportunity.actors.find((actor) => actor.userId !== actorUserId && actor.role !== 'introducer')?.userId,
24
- };
25
- }
26
- return { kind: 'set_terminal_status', status: newStatus };
27
- }
28
- /**
29
- * Applies send admission and recipient-routing rules without performing writes.
30
- * Introducers, peers, and direct patient/party flows each reveal the next tier
31
- * to a distinct audience.
32
- */
33
- export function assessOpportunitySend(opportunity, actorUserId) {
34
- if (opportunity.status !== 'latent' && opportunity.status !== 'draft') {
35
- return {
36
- success: false,
37
- error: `Opportunity is already ${opportunity.status}; only latent or draft opportunities can be sent.`,
38
- };
39
- }
40
- const sender = opportunity.actors.find((actor) => actor.userId === actorUserId);
41
- if (!sender) {
42
- return { success: false, error: 'You are not part of this opportunity.' };
43
- }
44
- const hasIntroducer = opportunity.actors.some((actor) => actor.role === 'introducer');
45
- const canSend = sender.role === 'introducer'
46
- || sender.role === 'peer'
47
- || (sender.role === 'patient' && !hasIntroducer)
48
- || (sender.role === 'party' && !hasIntroducer);
49
- if (!canSend) {
50
- return { success: false, error: 'You cannot send this opportunity.' };
51
- }
52
- const recipients = sender.role === 'introducer'
53
- ? opportunity.actors.filter((actor) => actor.role === 'patient' || actor.role === 'party')
54
- : sender.role === 'peer'
55
- ? opportunity.actors.filter((actor) => actor.role === 'peer' && actor.userId !== actorUserId)
56
- : opportunity.actors.filter((actor) => actor.role === 'agent');
57
- return { sender, recipients };
58
- }
59
- /** Checks whether a caller may approve this opportunity's introducer gate. */
60
- export function assessIntroductionApproval(opportunity, actorUserId) {
61
- const introducerActor = opportunity.actors.find((actor) => actor.role === 'introducer' && actor.userId === actorUserId);
62
- if (!introducerActor) {
63
- return { success: false, error: 'You are not the introducer for this opportunity' };
64
- }
65
- if (introducerActor.approved === true) {
66
- return { success: false, error: 'Introduction already approved' };
67
- }
68
- return { kind: 'approve' };
69
- }
70
- function isMutationResult(value) {
71
- return 'success' in value;
72
- }
73
- /** Persists an admitted status transition, preserving accept-before-write DM ordering. */
74
- export async function updateOpportunityLifecycle(database, input) {
75
- if (!input.opportunityId) {
76
- return { success: false, error: 'opportunityId is required.' };
77
- }
78
- // Preserve the graph's legacy validation order: invalid transitions do not
79
- // read persistence and always return the input error before actor checks.
80
- if (input.newStatus !== 'accepted' && input.newStatus !== 'rejected' && input.newStatus !== 'expired') {
81
- return { success: false, error: 'newStatus must be one of: accepted, rejected, expired.' };
82
- }
83
- const opportunity = await database.getOpportunity(input.opportunityId);
84
- if (!opportunity) {
85
- return { success: false, error: 'Opportunity not found.' };
86
- }
87
- const plan = assessOpportunityStatusTransition(opportunity, input.actorUserId, input.newStatus);
88
- if (isMutationResult(plan))
89
- return plan;
90
- let conversationId;
91
- if (plan.kind === 'stamp_accepted') {
92
- if (plan.counterpartUserId) {
93
- const dm = await database.getOrCreateDM(input.actorUserId, plan.counterpartUserId);
94
- conversationId = dm.id;
95
- }
96
- await database.stampOpportunityActorAction(input.opportunityId, input.actorUserId, 'accepted', input.actorUserId);
97
- }
98
- else {
99
- await database.updateOpportunityStatus(input.opportunityId, plan.status);
100
- }
101
- return {
102
- success: true,
103
- opportunityId: input.opportunityId,
104
- message: `Opportunity status updated to ${input.newStatus}.`,
105
- ...(conversationId && { conversationId }),
106
- };
107
- }
108
- /** Expires an opportunity after verifying the caller is one of its actors. */
109
- export async function deleteOpportunityLifecycle(database, input) {
110
- if (!input.opportunityId) {
111
- return { success: false, error: 'opportunityId is required.' };
112
- }
113
- const opportunity = await database.getOpportunity(input.opportunityId);
114
- if (!opportunity) {
115
- return { success: false, error: 'Opportunity not found.' };
116
- }
117
- if (!opportunity.actors.some((actor) => actor.userId === input.actorUserId)) {
118
- return { success: false, error: 'You are not part of this opportunity.' };
119
- }
120
- await database.updateOpportunityStatus(input.opportunityId, 'expired');
121
- return {
122
- success: true,
123
- opportunityId: input.opportunityId,
124
- message: 'Opportunity archived (expired).',
125
- };
126
- }
127
- /** Persists a send transition, then notifies only the actors exposed by its routing policy. */
128
- export async function sendOpportunityLifecycle(database, input, queueNotification) {
129
- if (!input.opportunityId) {
130
- return { success: false, error: 'opportunityId is required.' };
131
- }
132
- const opportunity = await database.getOpportunity(input.opportunityId);
133
- if (!opportunity) {
134
- return { success: false, error: 'Opportunity not found.' };
135
- }
136
- const plan = assessOpportunitySend(opportunity, input.actorUserId);
137
- if (isMutationResult(plan))
138
- return plan;
139
- await database.stampOpportunityActorAction(input.opportunityId, input.actorUserId, 'pending');
140
- if (queueNotification) {
141
- for (const recipient of plan.recipients) {
142
- await queueNotification(opportunity.id, recipient.userId, 'high');
143
- }
144
- }
145
- return {
146
- success: true,
147
- opportunityId: opportunity.id,
148
- notified: plan.recipients.map((actor) => actor.userId),
149
- message: 'Opportunity sent. The other person has been notified.',
150
- };
151
- }
152
- /** Approves an introducer gate before enqueuing the existing-opportunity negotiation. */
153
- export async function approveOpportunityIntroduction(database, input, queueNegotiateExisting) {
154
- if (!input.opportunityId) {
155
- return { success: false, error: 'opportunityId required for approve_introduction' };
156
- }
157
- let opportunity;
158
- try {
159
- opportunity = await database.getOpportunity(input.opportunityId);
160
- }
161
- catch (error) {
162
- return {
163
- success: false,
164
- error: `Failed to load opportunity: ${error instanceof Error ? error.message : String(error)}`,
165
- };
166
- }
167
- if (!opportunity) {
168
- return { success: false, error: 'Opportunity not found' };
169
- }
170
- const admission = assessIntroductionApproval(opportunity, input.actorUserId);
171
- if (isMutationResult(admission))
172
- return admission;
173
- const updated = await database.updateOpportunityActorApproval(input.opportunityId, input.actorUserId, true);
174
- if (!updated) {
175
- return { success: false, error: 'Failed to update approval' };
176
- }
177
- if (queueNegotiateExisting) {
178
- await queueNegotiateExisting(input.opportunityId, input.actorUserId);
179
- }
180
- return { success: true, opportunityId: input.opportunityId };
181
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * opportunity — the capability's sole cross-capability surface.
3
- *
4
- * Anything outside this capability imports from here and nowhere else.
5
- * Supersedes the capabilities/*.facade.ts + opportunities/public/ pair; the export
6
- * list is the union of the facades it replaces, so the contract is unchanged.
7
- */
8
- export { getOrCreateDeliveryCardBatch, } from "./delivery-card.cache.js";
9
- export { OpportunityEvaluator, } from "./opportunity.evaluator.js";
10
- export type { EvaluatorInput, } from "./opportunity.evaluator.js";
11
- export { OpportunityGraphFactory, } from "./opportunity.graph.js";
12
- export type { OpportunityGraphThresholdOverrides, } from "./opportunity.graph.js";
13
- export { isIntroducerDiscoveryEnabled, } from "./opportunity.introducer-feature.js";
14
- export { INTRODUCER_DISCOVERY_SOURCE, MAX_CANDIDATES_PER_CONTACT, MAX_CONTACTS_PER_CYCLE, runIntroducerDiscovery, selectContactsForDiscovery, shouldRunIntroducerDiscovery, } from "./opportunity.introducer.js";
15
- export type { ContactWithIntents, IntroducerDiscoveryDatabase, IntroducerDiscoveryQueue, } from "./opportunity.introducer.js";
16
- export type { StampNewbornOpportunitiesFn, StampNewbornOpportunitiesInput, } from "./opportunity.newborn-stamping.js";
17
- export { opportunityOwnerActionForStatus, } from "./opportunity.owner-approval.js";
18
- export type { OpportunityOwnerAction, OpportunityOwnerApprovalAttestation, OpportunityOwnerApprovalAuthority, OpportunityOwnerApprovalBinding, OpportunityOwnerApprovalChallenge, OpportunityOwnerApprovalDenialReason, OpportunityOwnerApprovalVerdict, OpportunityOwnerInteractionProvenance, OpportunityOwnerInteractionSurface, } from "./opportunity.owner-approval.js";
19
- export { bindOwnerApprovalProvenance, } from "./opportunity.owner-provenance.js";
20
- export { persistOpportunities, } from "./opportunity.persist.js";
21
- export { gatherPresenterContext, OpportunityPresenter, } from "./opportunity.presentation.js";
22
- export type { PresenterDatabase, } from "./opportunity.presentation.js";
23
- export { createOpportunityTools, } from "./opportunity.tools.js";
24
- export { DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT, DISCOVERY_MIN_SIMILARITY_DEFAULT, discoveryAllowedTypes, discoveryEvaluatorMinScore, discoveryIntentMatchingEnabled, discoveryMinSimilarity, discoveryProfileMatchingEnabled, discoveryProfileSource, resetDiscoveryEnvWarningsForTests, validateDiscoveryEvaluatorMinScore, validateDiscoveryMinSimilarity, } from "./discovery.env.js";
25
- export type { DiscoveryMatchType, DiscoveryProfileSource, } from "./discovery.env.js";
26
- export { buildPoolAdjustment, mergePoolAdjustment, planPoolAdjustments, } from "./discriminator/discriminator.adjustments.js";
27
- export type { PoolAdjustment, PoolAdjustmentSignal, } from "./discriminator/discriminator.adjustments.js";
28
- export { PoolDiscriminatorAssigner, } from "./discriminator/discriminator.assigner.js";
29
- export type { PoolDiscriminatorAssignedAxis, PoolDiscriminatorAssignmentInput, } from "./discriminator/discriminator.assigner.js";
30
- export { POOL_DISCRIMINATOR_MAX_CANDIDATES, POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS, POOL_DISCRIMINATOR_MIN_POOL_SIZE, POOL_QUESTION_MAX_PENDING_PER_INTENT, POOL_QUESTION_MIN_VOI, POOL_RERUN_DEBOUNCE_MS, POOL_VISIT_MINING_DEBOUNCE_MS, poolQuestionsMiningMode, poolQuestionsMode, poolQuestionsPushMode, poolQuestionsRanking, poolQuestionsStampNewborn, poolQuestionsVisitTrigger, } from "./discriminator/discriminator.env.js";
31
- export { PoolDiscriminatorMiner, } from "./discriminator/discriminator.miner.js";
32
- export { buildPoolQuestionPushMessage, poolQuestionCycleKey, } from "./discriminator/discriminator.push.js";
33
- export { BOTH_MATTER_LABEL, selectQuestionDiscriminators, synthesizePoolQuestion, toQuestionDiscriminator, } from "./discriminator/discriminator.question.js";
34
- export { runPoolDiscriminatorShadow, } from "./discriminator/discriminator.shadow.js";
35
- export type { DiscriminatorMiningInput, MinedDiscriminator, PoolCandidate, } from "./discriminator/discriminator.types.js";
36
- export { hasUnsupportedOpportunityClaim, stripUnsupportedOpportunityClaims, stripUnsupportedOpportunityClaims as stripUnsupportedOpportunityClaimsText, } from "../shared/utils/claim-safety.js";
37
- export { buildCandidateEvidence, } from "./opportunity.evidence.js";
38
- export { getPrimaryActionLabel, } from "./opportunity.labels.js";
39
- export { buildApiChatCardPresentationCacheKey, buildDeliveryCardPresentationCacheKey, buildRadarCardPresentationCacheKey, } from "./opportunity.presentation.js";
40
- export { presentOpportunity, stripUuids, truncateAtBoundary, } from "./opportunity.presentation.js";
41
- export type { UserInfo, } from "./opportunity.presentation.js";
42
- export { DEFAULT_FALLBACK_HEADLINE, safeFallbackSummary, } from "./opportunity.presentation.js";
43
- export { canUserSeeOpportunity, classifyOpportunity, isActionableForViewer, RADAR_SOFT_TARGETS, selectByComposition, validateOpportunityActors, } from "./opportunity.utils.js";
44
- export { NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES, negotiationEvidenceQuestionsMode, } from "./negotiation-evidence/negotiation-evidence.env.js";
45
- export { NegotiationEvidenceMiner, } from "./negotiation-evidence/negotiation-evidence.miner.js";
46
- export { runNegotiationEvidenceShadow, } from "./negotiation-evidence/negotiation-evidence.shadow.js";
47
- export type { RawEvidenceOutcome, RawEvidenceOwnerAnswer, RawEvidenceSegment, RawEvidenceTurn, } from "./negotiation-evidence/negotiation-evidence.types.js";
48
- export { isOutcomeQuestionsActivated, OUTCOME_MAX_CANDIDATES, OUTCOME_MAX_PUBLIC_CONTEXT_CHARS, OUTCOME_MIN_INDEPENDENT_EXAMPLES, } from "./outcome/outcome.env.js";
49
- export { runOutcomeShadow, } from "./outcome/outcome.shadow.js";
50
- export type { OutcomeExample, OutcomeLabel, OutcomeShadowResult, } from "./outcome/outcome.types.js";
51
- export type { OpportunityToolDeps, } from "./opportunity.tools.port.js";
52
- export { RadarGraphFactory, } from "./radar/radar.graph.js";
53
- export { computeRadarHealth, } from "./radar/radar.health.js";
54
- export type { RadarHealthInput, } from "./radar/radar.health.js";
@@ -1,39 +0,0 @@
1
- /**
2
- * opportunity — the capability's sole cross-capability surface.
3
- *
4
- * Anything outside this capability imports from here and nowhere else.
5
- * Supersedes the capabilities/*.facade.ts + opportunities/public/ pair; the export
6
- * list is the union of the facades it replaces, so the contract is unchanged.
7
- */
8
- export { getOrCreateDeliveryCardBatch, } from "./delivery-card.cache.js";
9
- export { OpportunityEvaluator, } from "./opportunity.evaluator.js";
10
- export { OpportunityGraphFactory, } from "./opportunity.graph.js";
11
- export { isIntroducerDiscoveryEnabled, } from "./opportunity.introducer-feature.js";
12
- export { INTRODUCER_DISCOVERY_SOURCE, MAX_CANDIDATES_PER_CONTACT, MAX_CONTACTS_PER_CYCLE, runIntroducerDiscovery, selectContactsForDiscovery, shouldRunIntroducerDiscovery, } from "./opportunity.introducer.js";
13
- export { opportunityOwnerActionForStatus, } from "./opportunity.owner-approval.js";
14
- export { bindOwnerApprovalProvenance, } from "./opportunity.owner-provenance.js";
15
- export { persistOpportunities, } from "./opportunity.persist.js";
16
- export { gatherPresenterContext, OpportunityPresenter, } from "./opportunity.presentation.js";
17
- export { createOpportunityTools, } from "./opportunity.tools.js";
18
- export { DISCOVERY_EVALUATOR_MIN_SCORE_DEFAULT, DISCOVERY_MIN_SIMILARITY_DEFAULT, discoveryAllowedTypes, discoveryEvaluatorMinScore, discoveryIntentMatchingEnabled, discoveryMinSimilarity, discoveryProfileMatchingEnabled, discoveryProfileSource, resetDiscoveryEnvWarningsForTests, validateDiscoveryEvaluatorMinScore, validateDiscoveryMinSimilarity, } from "./discovery.env.js";
19
- export { buildPoolAdjustment, mergePoolAdjustment, planPoolAdjustments, } from "./discriminator/discriminator.adjustments.js";
20
- export { PoolDiscriminatorAssigner, } from "./discriminator/discriminator.assigner.js";
21
- export { POOL_DISCRIMINATOR_MAX_CANDIDATES, POOL_DISCRIMINATOR_MAX_PUBLIC_CONTEXT_CHARS, POOL_DISCRIMINATOR_MIN_POOL_SIZE, POOL_QUESTION_MAX_PENDING_PER_INTENT, POOL_QUESTION_MIN_VOI, POOL_RERUN_DEBOUNCE_MS, POOL_VISIT_MINING_DEBOUNCE_MS, poolQuestionsMiningMode, poolQuestionsMode, poolQuestionsPushMode, poolQuestionsRanking, poolQuestionsStampNewborn, poolQuestionsVisitTrigger, } from "./discriminator/discriminator.env.js";
22
- export { PoolDiscriminatorMiner, } from "./discriminator/discriminator.miner.js";
23
- export { buildPoolQuestionPushMessage, poolQuestionCycleKey, } from "./discriminator/discriminator.push.js";
24
- export { BOTH_MATTER_LABEL, selectQuestionDiscriminators, synthesizePoolQuestion, toQuestionDiscriminator, } from "./discriminator/discriminator.question.js";
25
- export { runPoolDiscriminatorShadow, } from "./discriminator/discriminator.shadow.js";
26
- export { hasUnsupportedOpportunityClaim, stripUnsupportedOpportunityClaims, stripUnsupportedOpportunityClaims as stripUnsupportedOpportunityClaimsText, } from "../shared/utils/claim-safety.js";
27
- export { buildCandidateEvidence, } from "./opportunity.evidence.js";
28
- export { getPrimaryActionLabel, } from "./opportunity.labels.js";
29
- export { buildApiChatCardPresentationCacheKey, buildDeliveryCardPresentationCacheKey, buildRadarCardPresentationCacheKey, } from "./opportunity.presentation.js";
30
- export { presentOpportunity, stripUuids, truncateAtBoundary, } from "./opportunity.presentation.js";
31
- export { DEFAULT_FALLBACK_HEADLINE, safeFallbackSummary, } from "./opportunity.presentation.js";
32
- export { canUserSeeOpportunity, classifyOpportunity, isActionableForViewer, RADAR_SOFT_TARGETS, selectByComposition, validateOpportunityActors, } from "./opportunity.utils.js";
33
- export { NEGOTIATION_EVIDENCE_MAX_OPPORTUNITIES, negotiationEvidenceQuestionsMode, } from "./negotiation-evidence/negotiation-evidence.env.js";
34
- export { NegotiationEvidenceMiner, } from "./negotiation-evidence/negotiation-evidence.miner.js";
35
- export { runNegotiationEvidenceShadow, } from "./negotiation-evidence/negotiation-evidence.shadow.js";
36
- export { isOutcomeQuestionsActivated, OUTCOME_MAX_CANDIDATES, OUTCOME_MAX_PUBLIC_CONTEXT_CHARS, OUTCOME_MIN_INDEPENDENT_EXAMPLES, } from "./outcome/outcome.env.js";
37
- export { runOutcomeShadow, } from "./outcome/outcome.shadow.js";
38
- export { RadarGraphFactory, } from "./radar/radar.graph.js";
39
- export { computeRadarHealth, } from "./radar/radar.health.js";
@@ -1,41 +0,0 @@
1
- import type { CreateOpportunityData } from '../shared/interfaces/database.interface.js';
2
- /** Input for the host-side newborn pool-preference stamper (IND-420 P4b). */
3
- export interface StampNewbornOpportunitiesInput {
4
- ownerUserId: string;
5
- intentId: string;
6
- items: CreateOpportunityData[];
7
- }
8
- /**
9
- * Optional host callback that stamps call-local create items before INSERT.
10
- * It must preserve array length/order and may only enrich metadata/signals.
11
- */
12
- export type StampNewbornOpportunitiesFn = (input: StampNewbornOpportunitiesInput) => Promise<CreateOpportunityData[]>;
13
- /** Persist-node facts that determine whether a new item may cross the host stamping boundary. */
14
- export interface NewbornStampingEligibility {
15
- ownerUserId: string;
16
- operationMode?: string;
17
- hasIntroductionContext: boolean;
18
- onBehalfOfUserId?: string;
19
- targetUserId?: string;
20
- discoverySource?: string;
21
- resolvedTriggerIntentId?: string;
22
- indexedIntentIds: readonly string[];
23
- }
24
- /** Fail-open events are injected so the graph retains its owning observability policy. */
25
- export interface NewbornStampingObserver {
26
- onUnsafeResult?: (details: {
27
- expected: number;
28
- actual: number | null;
29
- }) => void;
30
- onFailure?: (details: {
31
- intentId: string;
32
- error: unknown;
33
- }) => void;
34
- }
35
- /**
36
- * Stamps only newly-created, owned-intent discovery items. Reactivations and
37
- * manual, introducer, on-behalf-of, context-only, and continuation flows never
38
- * cross this host boundary. Unsafe callback output and callback failures retain
39
- * the original create items without changing their order.
40
- */
41
- export declare function stampEligibleNewbornOpportunities(itemsToPersist: CreateOpportunityData[], eligibility: NewbornStampingEligibility, stamper?: StampNewbornOpportunitiesFn, observer?: NewbornStampingObserver): Promise<CreateOpportunityData[]>;
@@ -1,81 +0,0 @@
1
- function copyCreateOpportunityData(item) {
2
- return {
3
- ...item,
4
- detection: { ...item.detection },
5
- actors: item.actors.map((actor) => ({ ...actor })),
6
- interpretation: {
7
- ...item.interpretation,
8
- signals: item.interpretation.signals?.map((signal) => ({ ...signal })),
9
- },
10
- context: { ...item.context },
11
- metadata: item.metadata ? { ...item.metadata } : item.metadata,
12
- };
13
- }
14
- /** Fields a stamper is not allowed to change; this also protects candidate order. */
15
- function newbornItemIdentity(item) {
16
- return JSON.stringify({
17
- detection: item.detection,
18
- actors: item.actors,
19
- interpretation: {
20
- category: item.interpretation.category,
21
- reasoning: item.interpretation.reasoning,
22
- confidence: item.interpretation.confidence,
23
- },
24
- context: item.context,
25
- confidence: item.confidence,
26
- status: item.status,
27
- expiresAt: item.expiresAt?.toISOString(),
28
- });
29
- }
30
- /**
31
- * Stamps only newly-created, owned-intent discovery items. Reactivations and
32
- * manual, introducer, on-behalf-of, context-only, and continuation flows never
33
- * cross this host boundary. Unsafe callback output and callback failures retain
34
- * the original create items without changing their order.
35
- */
36
- export async function stampEligibleNewbornOpportunities(itemsToPersist, eligibility, stamper, observer) {
37
- const stampIntentId = eligibility.resolvedTriggerIntentId;
38
- const mayStamp = Boolean(stamper
39
- && eligibility.operationMode === 'create'
40
- && !eligibility.hasIntroductionContext
41
- && !eligibility.onBehalfOfUserId
42
- && !eligibility.targetUserId
43
- && eligibility.discoverySource === 'intent'
44
- && stampIntentId
45
- && eligibility.indexedIntentIds.includes(stampIntentId));
46
- if (!mayStamp || !stampIntentId || itemsToPersist.length === 0 || !stamper) {
47
- return itemsToPersist;
48
- }
49
- const eligibleIndexes = itemsToPersist.flatMap((item, index) => item.detection.source === 'opportunity_graph' && item.detection.triggeredBy === stampIntentId
50
- ? [index]
51
- : []);
52
- if (eligibleIndexes.length === 0)
53
- return itemsToPersist;
54
- const originals = eligibleIndexes.map((index) => itemsToPersist[index]);
55
- try {
56
- const stamped = await stamper({
57
- ownerUserId: eligibility.ownerUserId,
58
- intentId: stampIntentId,
59
- items: originals.map(copyCreateOpportunityData),
60
- });
61
- const valid = Array.isArray(stamped)
62
- && stamped.length === originals.length
63
- && stamped.every((item, index) => newbornItemIdentity(item) === newbornItemIdentity(originals[index]));
64
- if (!valid) {
65
- observer?.onUnsafeResult?.({
66
- expected: originals.length,
67
- actual: Array.isArray(stamped) ? stamped.length : null,
68
- });
69
- return itemsToPersist;
70
- }
71
- const itemsForPersistence = [...itemsToPersist];
72
- eligibleIndexes.forEach((itemIndex, stampedIndex) => {
73
- itemsForPersistence[itemIndex] = stamped[stampedIndex];
74
- });
75
- return itemsForPersistence;
76
- }
77
- catch (error) {
78
- observer?.onFailure?.({ intentId: stampIntentId, error });
79
- return itemsToPersist;
80
- }
81
- }
@@ -1,118 +0,0 @@
1
- /**
2
- * IND-593: protocol-owned owner-approval authority port.
3
- *
4
- * Every registered MCP-agent opportunity state change (send/accept/reject)
5
- * requires an explicit owner-issued, fresh, atomically single-use proof bound
6
- * to the exact opportunity, target action, owner principal, acting agent, and
7
- * current server-derived interaction. The protocol owns this verifier/consumer
8
- * contract and the fail-closed boundary in `update_opportunity`; the host
9
- * injects the concrete authority (challenge store + signed-proof issuance).
10
- *
11
- * Direct authenticated-owner interactions (REST/chat/CLI) traverse the same
12
- * boundary through `attestOwnerInteraction`: the host attests the
13
- * server-derived principal and interaction provenance of the already
14
- * authenticated owner session. Caller-controlled identity or proof-binding
15
- * fields are never trusted by either path — the binding below is always
16
- * derived from the resolved tool context.
17
- *
18
- * A2A negotiation approvals, agent self-acknowledgment
19
- * (`acknowledgedUptakeQuestionIds`), and server-generated advisory/challenge
20
- * values are explicitly NOT substitutes for owner authorization.
21
- */
22
- /** Owner-gated opportunity actions. `expired` is a system transition and is not gated. */
23
- export type OpportunityOwnerAction = 'send' | 'accept' | 'reject';
24
- /** Maps an update_opportunity target status to its owner-gated action, or null when ungated. */
25
- export declare function opportunityOwnerActionForStatus(status: string): OpportunityOwnerAction | null;
26
- /**
27
- * Server-derived proof binding. Built exclusively from the resolved tool
28
- * context and validated tool input — never from caller-supplied binding
29
- * fields. `agentId` is present exactly when a registered agent acts.
30
- */
31
- export interface OpportunityOwnerApprovalBinding {
32
- opportunityId: string;
33
- action: OpportunityOwnerAction;
34
- ownerId: string;
35
- agentId?: string;
36
- }
37
- /** Server-derived transport surface of the current interaction. */
38
- export type OpportunityOwnerInteractionSurface = 'mcp' | 'chat' | 'rest';
39
- /**
40
- * Trusted interaction/surface provenance for a non-agent tool call (IND-593
41
- * Batch B). Derived exclusively from the resolved server context — the host
42
- * composition binds `isSessionAuth` from the authenticated request identity,
43
- * and the surface follows the composition root (MCP server, chat factory,
44
- * REST tool service). Tool arguments and caller-supplied fields can never
45
- * populate it. The host authority attests ONLY a genuine direct owner
46
- * session (`sessionAuthenticated` on a non-chat surface); chat/CLI/H2A/A2A
47
- * and other mediated surfaces fail closed with `untrusted_provenance`.
48
- */
49
- export interface OpportunityOwnerInteractionProvenance {
50
- surface: OpportunityOwnerInteractionSurface;
51
- /** True only when the host bound an authenticated owner session (never an API key or a mediated orchestrator) to this exact request. */
52
- sessionAuthenticated: boolean;
53
- }
54
- /** Attestation input: the server-derived binding plus trusted provenance. */
55
- export type OpportunityOwnerApprovalAttestation = OpportunityOwnerApprovalBinding & {
56
- provenance: OpportunityOwnerInteractionProvenance;
57
- };
58
- /** Stable, testable denial reasons for the fail-closed owner-approval boundary. */
59
- export type OpportunityOwnerApprovalDenialReason =
60
- /** No proof presented (or no authority wired); a fresh interaction challenge is attached. */
61
- 'missing'
62
- /** Proof fails authenticity/structure checks (bad signature, unknown interaction, foreign token). */
63
- | 'forged'
64
- /** Proof or underlying challenge has expired. */
65
- | 'stale'
66
- /** Proof is not bound to an exact opportunities/action/owner/agent/interaction. */
67
- | 'generic'
68
- /** Proof binding mismatches the current server-derived binding. */
69
- | 'wrong_owner' | 'wrong_agent' | 'wrong_action' | 'wrong_opportunity'
70
- /** Proof was already consumed; single-use is atomic. */
71
- | 'replayed'
72
- /** The interaction's server-derived provenance cannot mint or attest owner authority; an owner-issued proof is required. */
73
- | 'untrusted_provenance'
74
- /** The authority's store or configuration failed; nothing is admitted. */
75
- | 'unavailable';
76
- /**
77
- * Fresh, server-derived interaction challenge returned with a `missing`
78
- * denial. The owner explicitly approves this exact interaction (bound to the
79
- * full server-derived binding) to obtain a one-time proof.
80
- */
81
- export interface OpportunityOwnerApprovalChallenge {
82
- interactionId: string;
83
- expiresAt: string;
84
- }
85
- export type OpportunityOwnerApprovalVerdict = {
86
- kind: 'admitted';
87
- } | {
88
- kind: 'denied';
89
- reason: OpportunityOwnerApprovalDenialReason;
90
- challenge?: OpportunityOwnerApprovalChallenge;
91
- };
92
- /**
93
- * Authoritative owner-proof verifier/consumer, injected by the host.
94
- * Implementations MUST fail closed and MUST make consumption atomically
95
- * single-use: a denied verification never consumes a proof; a successful one
96
- * consumes it exactly once, even under concurrent calls.
97
- */
98
- export interface OpportunityOwnerApprovalAuthority {
99
- /**
100
- * Verify and atomically consume an agent-presented proof against the
101
- * server-derived binding. When `proof` is undefined the implementation
102
- * registers the current interaction as a fresh challenge and denies with
103
- * reason `missing`, attaching the challenge so the agent can relay it to the
104
- * owner for explicit approval.
105
- */
106
- consumeAgentProof(proof: string | undefined, binding: OpportunityOwnerApprovalBinding & {
107
- agentId: string;
108
- }): Promise<OpportunityOwnerApprovalVerdict>;
109
- /**
110
- * Traverse the same boundary for a non-agent interaction. The host attests
111
- * ONLY a genuine direct authenticated-owner session, judged from the
112
- * server-derived principal and interaction/surface provenance — this is
113
- * authoritative host derivation, not a bypass. Mediated surfaces
114
- * (chat/CLI/H2A/A2A) and absent or malformed provenance fail closed with
115
- * `untrusted_provenance`.
116
- */
117
- attestOwnerInteraction(binding: OpportunityOwnerApprovalAttestation): Promise<OpportunityOwnerApprovalVerdict>;
118
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * IND-593: protocol-owned owner-approval authority port.
3
- *
4
- * Every registered MCP-agent opportunity state change (send/accept/reject)
5
- * requires an explicit owner-issued, fresh, atomically single-use proof bound
6
- * to the exact opportunity, target action, owner principal, acting agent, and
7
- * current server-derived interaction. The protocol owns this verifier/consumer
8
- * contract and the fail-closed boundary in `update_opportunity`; the host
9
- * injects the concrete authority (challenge store + signed-proof issuance).
10
- *
11
- * Direct authenticated-owner interactions (REST/chat/CLI) traverse the same
12
- * boundary through `attestOwnerInteraction`: the host attests the
13
- * server-derived principal and interaction provenance of the already
14
- * authenticated owner session. Caller-controlled identity or proof-binding
15
- * fields are never trusted by either path — the binding below is always
16
- * derived from the resolved tool context.
17
- *
18
- * A2A negotiation approvals, agent self-acknowledgment
19
- * (`acknowledgedUptakeQuestionIds`), and server-generated advisory/challenge
20
- * values are explicitly NOT substitutes for owner authorization.
21
- */
22
- /** Maps an update_opportunity target status to its owner-gated action, or null when ungated. */
23
- export function opportunityOwnerActionForStatus(status) {
24
- switch (status) {
25
- case 'pending':
26
- return 'send';
27
- case 'accepted':
28
- return 'accept';
29
- case 'rejected':
30
- return 'reject';
31
- default:
32
- return null;
33
- }
34
- }
@@ -1,6 +0,0 @@
1
- import type { ResolvedToolContext } from "../shared/agent/tool.helpers.js";
2
- import type { OpportunityOwnerInteractionProvenance } from "./opportunity.owner-approval.js";
3
- /** Bind authoritative host provenance to one resolved tool context. */
4
- export declare function bindOwnerApprovalProvenance(context: ResolvedToolContext, provenance: OpportunityOwnerInteractionProvenance): void;
5
- /** Read host-bound provenance without accepting any caller-supplied surrogate. */
6
- export declare function ownerApprovalProvenanceFor(context: ResolvedToolContext): OpportunityOwnerInteractionProvenance | undefined;
@@ -1,28 +0,0 @@
1
- /**
2
- * Capability-local extension of the resolved tool context for IND-593.
3
- *
4
- * The host is the only writer: it binds provenance after authentication and
5
- * before the registry invokes a tool. Tool input schemas never contain this
6
- * field, so a caller cannot forge a direct-owner interaction through args or
7
- * generic context data. Keeping this extension here avoids changing the shared
8
- * helper that is part of the negotiations/question architecture cycle.
9
- */
10
- const OWNER_APPROVAL_PROVENANCE = Symbol("ownerApprovalProvenance");
11
- function hasOwnerApprovalProvenance(context) {
12
- return OWNER_APPROVAL_PROVENANCE in context;
13
- }
14
- /** Bind authoritative host provenance to one resolved tool context. */
15
- export function bindOwnerApprovalProvenance(context, provenance) {
16
- Object.defineProperty(context, OWNER_APPROVAL_PROVENANCE, {
17
- value: Object.freeze({ ...provenance }),
18
- enumerable: false,
19
- configurable: false,
20
- writable: false,
21
- });
22
- }
23
- /** Read host-bound provenance without accepting any caller-supplied surrogate. */
24
- export function ownerApprovalProvenanceFor(context) {
25
- return hasOwnerApprovalProvenance(context)
26
- ? context[OWNER_APPROVAL_PROVENANCE]
27
- : undefined;
28
- }
@@ -1,58 +0,0 @@
1
- /**
2
- * Shared persist phase for opportunity creation: enrichOrCreate → create (or create+expire) → optional chat injection.
3
- * Used by the opportunity graph persist node and by the manual opportunity service for consistency.
4
- */
5
- import type { CreateOpportunityData, IntentScopedOpportunityPersistenceResult, Opportunity, OpportunityDedupConflict, OpportunityNetworkEligibility, OpportunityStatus } from '../shared/interfaces/database.interface.js';
6
- import type { Embedder } from '../shared/interfaces/embedder.interface.js';
7
- import type { EnricherDatabase } from "./opportunity.enricher.js";
8
- export type PersistOpportunityDatabase = EnricherDatabase & {
9
- createOpportunity(data: CreateOpportunityData): Promise<Opportunity>;
10
- createOpportunityIfNetworkEligible?(data: CreateOpportunityData, eligibility: OpportunityNetworkEligibility): Promise<Opportunity | null>;
11
- updateOpportunityStatus(id: string, status: OpportunityStatus): Promise<void | Opportunity | null>;
12
- createOpportunityAndExpireIds?(data: CreateOpportunityData, expireIds: string[]): Promise<{
13
- created: Opportunity;
14
- expired: Opportunity[];
15
- }>;
16
- createOpportunityAndExpireIdsIfNetworkEligible?(data: CreateOpportunityData, expireIds: string[], eligibility: OpportunityNetworkEligibility): Promise<{
17
- created: Opportunity;
18
- expired: Opportunity[];
19
- } | null>;
20
- persistIntentScopedOpportunityIfNetworkEligible?(data: CreateOpportunityData, expireIds: string[], eligibility: OpportunityNetworkEligibility & {
21
- triggerIntentId: string;
22
- }, dedupWindowMs: number): Promise<IntentScopedOpportunityPersistenceResult | null>;
23
- /** Optional: used to populate expired list in non-atomic path. */
24
- getOpportunity?(id: string): Promise<Opportunity | null>;
25
- };
26
- export interface PersistOpportunitiesParams {
27
- database: PersistOpportunityDatabase;
28
- embedder: Embedder;
29
- items: CreateOpportunityData[];
30
- injectChat?: (opportunity: Opportunity) => Promise<unknown>;
31
- /** Require adapter-level membership/assignment locks for discovery-created rows. */
32
- networkEligibility?: OpportunityNetworkEligibility;
33
- /** Scope dedup/enrichment and the final atomic re-check to one owned intent. */
34
- intentDedupScope?: {
35
- triggerIntentId: string;
36
- dedupWindowMs: number;
37
- };
38
- }
39
- export interface PersistOpportunitiesError {
40
- itemIndex: number;
41
- error: unknown;
42
- }
43
- export interface PersistOpportunitiesConflict extends OpportunityDedupConflict {
44
- itemIndex: number;
45
- finalAtomic: true;
46
- }
47
- export interface PersistOpportunitiesResult {
48
- created: Opportunity[];
49
- expired: Opportunity[];
50
- conflicts: PersistOpportunitiesConflict[];
51
- errors?: PersistOpportunitiesError[];
52
- }
53
- /**
54
- * Persist one or more opportunities: enrich (merge overlapping), create, expire replaced, optional chat injection.
55
- * When the database has createOpportunityAndExpireIds and enrichment produced expireIds, uses it for atomic create+expire.
56
- * Returns both created and expired so callers can emit events (e.g. manual service).
57
- */
58
- export declare function persistOpportunities(params: PersistOpportunitiesParams): Promise<PersistOpportunitiesResult>;