@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,322 +0,0 @@
1
- import { z } from "zod";
2
- import { requestContext } from "../observability/request-context.js";
3
- import { ActivitySummaryResponseSchema, McpActivityCallerSchema, activitySummaryNetworkId, projectActivitySummary } from "./activity-projection.js";
4
- import { CANONICAL_GUIDANCE_SUMMARY, CANONICAL_GUIDANCE_TOPICS, CANONICAL_GUIDANCE_TOPICS_CONTENT } from "./canonical-guidance.js";
5
- import { success, error, normalizeUrl } from "./tool.helpers.js";
6
- /** Owner-trusted surfaces (REST/chat) receive the full owner view. */
7
- const HUMAN_OWNER_CALLER = {
8
- kind: "human",
9
- permissions: [],
10
- networkScopeId: null,
11
- };
12
- export function createUtilityTools(defineTool, deps, options = {}) {
13
- const { scraper } = deps;
14
- const isMcpSurface = options.surface === "mcp";
15
- // scrape_url is omitted from the MCP tool surface (IND-597). It remains
16
- // available via the direct HTTP Tool API and the chat agent.
17
- const scrapeUrl = isMcpSurface ? null : defineTool({
18
- name: "scrape_url",
19
- description: "Extracts text content from a web URL — articles, LinkedIn/GitHub profiles, documentation, project pages, etc. " +
20
- "Returns the page's text content (up to 10,000 characters) for use in subsequent tool calls.\n\n" +
21
- "**When to use:**\n" +
22
- "- Before create_intent: when the user shares a URL and wants to create an intent from it. Scrape first, then synthesize into a description.\n" +
23
- "- Before create_user_context or update_user_context: when the user shares a profile URL to update their profile from.\n" +
24
- "- When the user asks about content at a URL.\n\n" +
25
- "**URL format:** Bare domains work fine (e.g. 'github.com/user/repo') — protocol (https://) is added automatically.\n\n" +
26
- "**Returns:** `{ url, contentLength, content }`. Content is truncated at 10,000 chars. " +
27
- "Returns an error if the URL is unreachable, requires login, or has no extractable text.",
28
- querySchema: z.object({
29
- url: z.string().describe("The URL to extract content from. Protocol is optional — 'github.com/user/repo', 'linkedin.com/in/name', and 'https://example.com' all work."),
30
- objective: z.string().optional().describe("Why you're scraping — guides content extraction for better results. Examples: 'User wants to create an intent from this project page', 'User wants to update their profile from this LinkedIn page', 'Extract key information about this company'. Omit for generic text extraction."),
31
- }),
32
- handler: async ({ context: _context, query }) => {
33
- const normalizedUrl = normalizeUrl(query.url);
34
- if (!normalizedUrl) {
35
- return error("Invalid URL format. Please provide a valid URL (e.g. 'github.com/user/repo' or 'https://example.com').");
36
- }
37
- const content = await scraper.extractUrlContent(normalizedUrl, {
38
- objective: query.objective?.trim() || undefined,
39
- signal: requestContext.getStore()?.abortSignal,
40
- });
41
- if (!content) {
42
- return error("Couldn't extract content from that URL. It may be blocked, require login, or have no extractable text.");
43
- }
44
- const truncatedContent = content.length > 10000
45
- ? content.substring(0, 10000) + "\n\n[Content truncated...]"
46
- : content;
47
- return success({
48
- url: normalizedUrl,
49
- contentLength: content.length,
50
- content: truncatedContent,
51
- });
52
- },
53
- });
54
- const readDocs = defineTool({
55
- name: "read_docs",
56
- description: "Returns comprehensive documentation about the Index Network protocol — entity model, workflows, tool usage guidance, and domain concepts. " +
57
- "This is the primary way for an external agent to bootstrap understanding of the system.\n\n" +
58
- "**When to use:** Call this FIRST when starting a new session.\n" +
59
- "Also call when you need to understand identity, context, premises, signals, communities, networks, opportunities, or negotiations.\n\n" +
60
- "**Returns:** Markdown documentation. Pass `topic` to get a specific section, or omit for the summary.\n\n" +
61
- `**Available canonical topics:** ${CANONICAL_GUIDANCE_TOPICS.join(", ")}`,
62
- querySchema: z.object({
63
- topic: z.string().optional().describe(`Narrow to a canonical topic: ${CANONICAL_GUIDANCE_TOPICS.join(", ")}. Omit to get the summary.`),
64
- }),
65
- handler: async ({ context: _context, query }) => {
66
- const topic = query.topic?.trim().toLowerCase();
67
- // Canonical guidance is the MCP read_docs foundation. When on MCP surface,
68
- // legacy supplemental topics (entities, intents, opportunities, etc.) are
69
- // omitted to avoid repeating the canonical source (IND-602/603).
70
- // REST/chat surfaces retain full topic coverage for backwards compatibility.
71
- if (isMcpSurface) {
72
- // MCP surface: use canonical guidance only.
73
- if (!topic) {
74
- // Return summary of canonical guidance
75
- return success({ content: CANONICAL_GUIDANCE_SUMMARY });
76
- }
77
- // Try to match canonical topic
78
- const normalizedTopic = topic.replace(/_/g, "-").toLowerCase();
79
- for (const canonicalTopic of CANONICAL_GUIDANCE_TOPICS) {
80
- if (canonicalTopic === normalizedTopic || normalizedTopic.includes(canonicalTopic.split("-")[0])) {
81
- return success({ topic: canonicalTopic, content: CANONICAL_GUIDANCE_TOPICS_CONTENT[canonicalTopic] });
82
- }
83
- }
84
- // Unknown topic on MCP surface
85
- return success({
86
- content: `Unknown canonical topic "${topic}". Available topics: ${CANONICAL_GUIDANCE_TOPICS.join(", ")}. Request summary for full canonical guidance.`,
87
- });
88
- }
89
- // REST/chat surfaces: provide full legacy documentation alongside canonical.
90
- // Contact management tools are not exposed on the MCP surface (IND-596), so
91
- // full guidance includes contact workflows. This is for REST/chat only.
92
- const contactsSection = `## Contact Management
93
-
94
- Contacts are people in a user's personal network, stored as members of their personal network with 'contact' permission.
95
-
96
- - **How contacts arise**: Accepting an opportunity puts both people in each other's personal network. There is no import or manual-add path.
97
- - **Personal network scope**: Approved signals from personal-network contacts are matched in the background. Use list_opportunities only to review persisted results.
98
- - **Contact data**: Each contact has userId, name, email, and avatar.
99
-
100
- ### Contact Workflow
101
- 1. list_contacts → view all contacts with userId
102
- 2. create_intent or update_intent → create or refine an approved signal for background matching
103
- 3. list_opportunities → review persisted results when background processing finds matches
104
- 4. remove_contact(contactUserId) → remove from network`;
105
- const managingContactsWorkflow = `### Managing Contacts
106
- 1. list_contacts() → view network
107
- 2. create_intent or update_intent → create or refine an approved signal for background matching
108
- 3. list_opportunities → review persisted results
109
-
110
- `;
111
- const sections = {
112
- // Legacy topics (REST/chat only)
113
- entities: `## Entity Model & Relationships
114
-
115
- - **Users**: People on the platform. Authenticated via API key (X-API-Key header) for MCP/external agents, or session-based (Better Auth) for the web app.
116
- - **Profiles**: A user's identity — name, bio, skills, interests, location, social links. Generated from account data or social URLs via enrichment. One profile per user.
117
- - **Indexes** (also called "networks"): Communities or groups where members share intents and discover opportunities. Each has a title, optional prompt (purpose description), join policy (anyone or invite_only), and an owner. The user's **personal network** (isPersonal=true) stores their contacts.
118
- - **Network Members**: Junction between Users and Indexes. Tracks permissions (owner, member, contact), join date, auto-assign setting, and optional member prompt.
119
- - **Intents**: Signals of interest/need — what a user is looking for (e.g. "Looking for a React developer in Berlin"). Each has a description (payload), summary, confidence score (0-1), inferenceType (explicit/implicit), source tracking, and vector embedding.
120
- - **IntentNetworks**: Many-to-many junction between Intents and Indexes. An intent can be in multiple indexes. Has a relevancyScore (0-1) indicating how well the intent fits the index's purpose.
121
- - **Opportunities**: Discovered connections between users based on complementary intents within shared networks. Have actors with roles (introducer, party), status lifecycle, match reasoning, confidence score, and presentation data.
122
- - **Contacts**: People in a user's personal network, stored as network members with 'contact' permission on the personal network. Established by accepting an opportunity, which adds both people to each other's personal network. Always real accounts.
123
-
124
- ### Key Relationships
125
- - Users → Profiles (1:1)
126
- - Users → Indexes (many:many via Network Members)
127
- - Users → Intents (1:many, user owns intents)
128
- - Intents → Indexes (many:many via IntentNetworks with relevancyScore)
129
- - Opportunities → Users (many:many via actors with roles)
130
- - Opportunities → Indexes (scoped to shared network context)
131
- - Contacts → Personal Network (stored as members with 'contact' permission)`,
132
- intents: `## Intent Lifecycle
133
-
134
- Intents are the core unit of discovery — they represent what users are seeking and drive semantic matching.
135
-
136
- 1. **Creation** (create_intent): User describes what they're looking for. The system runs inference (extracting structured intents from free text) and verification (checking specificity, speech-act type). Returns a proposal for user approval.
137
- 2. **Confidence & Classification**: Each intent gets a confidence score (0-1), inferenceType (explicit = user stated directly, implicit = system inferred), and speech act classification (commissive, directive, assertive).
138
- 3. **Index Assignment**: After creation, the intent is automatically evaluated against all networks the user belongs to. The index's prompt is used as criteria. Matching indexes get linked via IntentNetworks with a relevancyScore (0-1).
139
- 4. **Discovery Trigger**: Creating an intent triggers background opportunity detection — the system searches for other users in shared networks whose intents complement this one.
140
- 5. **Source Tracking**: Intents track their origin via sourceType (file, integration, link, discovery_form, enrichment) and sourceId.
141
- 6. **Update** (update_intent): Re-processes through inference/verification, recalculates embeddings and index assignments.
142
- 7. **Archive** (delete_intent): Soft-deletes the intent. It stops participating in discovery but is not permanently removed.
143
-
144
- ### Intent Best Practices
145
- - Be specific: "Looking for a senior React developer for a 3-month contract in Berlin" > "Need a developer"
146
- - One intent per need: don't combine multiple requests into one intent
147
- - Update rather than delete+create to preserve history`,
148
- opportunities: `## Opportunity Lifecycle
149
-
150
- Opportunities represent discovered connections between users — potential matches worth pursuing.
151
-
152
- 1. **Background matching**: The opportunity graph evaluates approved signals whose intents semantically complement each other within shared networks. It uses HyDE embeddings for retrieval and an LLM evaluator for scoring.
153
- 2. **Roles**: Each opportunity assigns roles to actors:
154
- - **introducer**: The person who triggered the introduction (may be the system or another user)
155
- - **party**: The people being connected (typically 2)
156
- 3. **Status Flow**: draft → pending → accepted/rejected/expired
157
- - **draft**: Created but not sent. Only the creator/introducer sees it.
158
- - **pending**: Sent to the other party. They're notified and can respond.
159
- - **accepted**: Both parties agreed to connect.
160
- - **rejected**: One party declined.
161
- - **expired**: Timed out without response.
162
- 4. **Creation**: Opportunities are created by background matching after approved signals are created or refined. list_opportunities only reviews persisted cards; it never starts matching or targets a person.
163
- 5. **Presentation**: Each opportunity includes personalized match reasoning, confidence score, and suggested next action.
164
-
165
- ### Opportunity Workflow
166
- 1. create_intent(description) or update_intent(intentId, description) → create or refine an approved signal
167
- 2. background matching → persists opportunity cards when matches are found
168
- 3. list_opportunities() → review persisted cards
169
- 4. update_opportunity(opportunityId, status="pending") → sends to other party
170
- 5. Other party sees opportunity → calls update_opportunity(status="accepted" or "rejected")`,
171
- indexes: `## Index Mechanics
172
-
173
- Indexes (also called "networks") are communities where members share what they're looking for and the system discovers connections between them.
174
-
175
- - **Purpose prompt**: Each index has an optional prompt describing its purpose (e.g. "AI/ML co-founders in Berlin"). This prompt is used by the intent indexer to evaluate whether an intent belongs in this community. Networks without prompts accept all intents (relevancyScore defaults to 1.0).
176
- - **Join policy**: "anyone" (open — any user can self-join) or "invite_only" (only the owner can add members).
177
- - **Personal network**: Each user has exactly one personal network (isPersonal=true) created on registration. It stores their contacts. Cannot be deleted, renamed, or listed publicly.
178
- - **Membership**: Members can see all intents in the index. The **auto-assign** setting on a membership means new intents by that user are automatically evaluated against the index.
179
- - **Owner permissions**: Network owners can update settings (title, prompt, joinPolicy), add/remove members, and delete the network (if sole member).
180
- - **Discovery scope**: Opportunities are discovered within index boundaries — the system matches intents of members who share at least one index.
181
-
182
- ### Index Workflow
183
- 1. create_network(title, prompt) → creates new community, you become owner
184
- 2. create_network_membership(networkId, userId) → invite members
185
- 3. Members create intents → auto-assigned to the index based on prompt
186
- 4. Members' approved signals are matched in the background; list_opportunities only reviews persisted results`,
187
- profiles: `## Profile System
188
-
189
- Profiles are the user's identity on the platform, used for semantic matching in opportunity discovery.
190
-
191
- - **Structure**: name, bio, location, skills[], interests[], social links (LinkedIn, GitHub, Twitter, websites)
192
- - **Generation**: Auto-generated from account data (name, email, social links) via web enrichment. Can also be created from explicit user input (bioOrDescription).
193
- - **Enrichment**: The system scrapes public profiles (LinkedIn, GitHub, Twitter) to build a rich identity with skills, interests, and narrative context.
194
- - **Embeddings**: HyDE (Hypothetical Document Embedding) generates synthetic documents for semantic matching:
195
- - Mirror: self-description of the person
196
- - Reciprocal: what this person would look for in others
197
- - Neighborhood: related community context
198
- - **Onboarding flow**: create_user_context() → preview → create_user_context(confirm=true) → complete_onboarding()
199
- - **Updates**: Use update_user_context for targeted changes, create_user_context for full regeneration.
200
-
201
- ### Profile Best Practices
202
- - Richer profiles produce better opportunity matches
203
- - Social links enable enrichment — encourage users to add LinkedIn/GitHub
204
- - Profiles are recalculated when updated, which may surface new matches`,
205
- contacts: contactsSection,
206
- discovery: `## Discovery Mechanics
207
-
208
- Discovery is the process of finding meaningful connections between users based on their intents and profiles.
209
-
210
- ### How Discovery Works
211
- 1. **Trigger**: Runs automatically when an approved signal is created or refined.
212
- 2. **Pipeline**: Preparation (gather user context) → Scope (determine which indexes to search) → Candidate retrieval (semantic matching via HyDE embeddings) → Evaluation (LLM scores relevance and complementarity) → Ranking → Persist as opportunities.
213
- 3. **Semantic matching**: Uses HyDE (Hypothetical Document Embeddings) to find candidate intents that complement the source. This goes beyond keyword matching — it understands conceptual relationships.
214
- 4. **Evaluation**: An LLM evaluator agent scores each candidate match on relevance, complementarity, and actionability. Low-scoring matches are filtered out.
215
- 5. **Results**: Persisted as draft opportunities with roles, reasoning, and confidence scores.
216
- 6. **Background processing**: After intent creation, a queue job continues looking for matches asynchronously.
217
- 7. **Review**: Use list_opportunities to review persisted actionable cards; it does not run matching.
218
-
219
- ### Discovery Best Practices
220
- - More specific intents produce more relevant matches
221
- - Richer profiles improve matching quality
222
- - Scope to a specific index (networkId) for more targeted results
223
- - After discovery returns no results, suggest creating an intent to attract future matches`,
224
- workflows: `## Common Tool Workflows
225
-
226
- ### New User Setup
227
- 1. create_user_context(linkedinUrl/githubUrl) → generate profile from social data
228
- 2. complete_onboarding() → unlock full access
229
- 3. read_networks() → see available communities
230
- 4. create_network_membership(networkId) → join a community
231
- 5. create_intent(description) → post what you're looking for
232
- 6. Background matching evaluates the approved signal; list_opportunities reviews persisted results
233
-
234
- ### Finding Connections
235
- 1. read_networks() → list user's communities (get networkId)
236
- 2. create_intent(description) or update_intent(intentId, description) → create or refine an approved signal in the relevant network
237
- 3. Background matching persists eligible cards; list_opportunities reviews them
238
- 4. update_opportunity(opportunityId, status="pending") → send a persisted card
239
-
240
- ### Helping Connections Emerge
241
- 1. read_network_memberships(networkId) → understand the shared community
242
- 2. create_intent(description) or update_intent(intentId, description) → capture or refine an approved signal
243
- 3. Background matching evaluates approved signals
244
- 4. list_opportunities() → review persisted results
245
-
246
- ${managingContactsWorkflow}### Creating a Community
247
- 1. create_network(title, prompt) → create network
248
- 2. create_network_membership(networkId, userId) → invite members
249
- 3. Members create intents → auto-indexed
250
- 4. Members' approved signals are matched in the background; list_opportunities only reviews persisted results`,
251
- authentication: `## Authentication & API Access
252
-
253
- ### For External AI Agents (MCP)
254
- - Authenticate via **X-API-Key** header with a valid API key
255
- - The API key is tied to a specific user account
256
- - All operations execute in the context of the authenticated user
257
- - Base URL: protocol.index.network/mcp
258
-
259
- ### Key Constraints
260
- - Users can only read their own intents globally, or intents in indexes they belong to
261
- - Users can only read profiles of people in shared networks
262
- - Network-scoped operations are restricted to that index
263
- - Personal networks cannot be deleted or renamed
264
- - Only network owners can update settings, add/remove members (for invite_only networks)
265
-
266
- ### Rate Limits & Best Practices
267
- - Avoid unnecessary read_intents/read_networks calls — cache results within a conversation
268
- - Use pagination (limit/page) for large result sets
269
- - Call read_docs once at the start to understand the domain`,
270
- // Canonical topics (on REST/chat for completeness)
271
- "identity-context": CANONICAL_GUIDANCE_TOPICS_CONTENT["identity-context"],
272
- premises: CANONICAL_GUIDANCE_TOPICS_CONTENT.premises,
273
- signals: CANONICAL_GUIDANCE_TOPICS_CONTENT.signals,
274
- "communities-networks": CANONICAL_GUIDANCE_TOPICS_CONTENT["communities-networks"],
275
- negotiations: CANONICAL_GUIDANCE_TOPICS_CONTENT.negotiations,
276
- };
277
- if (topic) {
278
- const normalizedTopic = topic.replace(/_/g, "-").toLowerCase();
279
- const matched = Object.entries(sections).find(([key]) => key === normalizedTopic || key.includes(normalizedTopic) || normalizedTopic.includes(key));
280
- if (matched) {
281
- return success({ topic: matched[0], content: matched[1] });
282
- }
283
- }
284
- // Return full documentation (summary + all topics)
285
- const fullDoc = [CANONICAL_GUIDANCE_SUMMARY, ...Object.values(sections)].join("\n\n");
286
- return success({ content: fullDoc });
287
- },
288
- });
289
- const readActivitySummary = defineTool({
290
- name: "read_activity_summary",
291
- description: "Returns grounded, aggregate-only activity for the authenticated user's agent over a recent time window.\n\n" +
292
- "**Response domains (permission-projected for agent callers):**\n" +
293
- "- signals (`liveSignalsWatched`, `opportunitiesBySignal` with signal IDs/titles) — requires manage:intents.\n" +
294
- "- opportunities (`opportunitiesSurfaced`) — requires manage:opportunities.\n" +
295
- "- questions (`pendingQuestionsByDomain`, `answeredQuestionsByDomain`) — meta-network counts grouped by the question's affected domain; " +
296
- "each domain's counts require that domain's manage:identity/premises/intents/opportunities/negotiations permission; conversational chat-mode counts are human-owner-only.\n" +
297
- "- negotiations (`negotiationsStarted`, `negotiationsCompleted`) — requires manage:negotiations.\n" +
298
- "Human owners receive every domain. Agent callers receive only the domains their permissions authorize; " +
299
- "a network agent's network-bound aggregates are narrowed to its bound community at the query layer.\n\n" +
300
- "**Privacy:** the response never returns counterparty identities, chats, turns, transcripts, per-counterparty rows, " +
301
- "or any private content — only aggregate counts and (with manage:intents) the owner's own signal IDs/titles.",
302
- querySchema: z.object({
303
- sinceHours: z.number().int().optional().default(24).describe("Look back this many hours; values are clamped to 1-168 (default 24)."),
304
- }).strict(),
305
- handler: async ({ context, query }) => {
306
- const sinceHours = Math.max(1, Math.min(168, query.sinceHours));
307
- // Absent on owner-trusted REST/chat surfaces → full owner view. On MCP the
308
- // server binds the typed resolved caller context and the centralized
309
- // projection decides every visible domain.
310
- const caller = context.mcpCaller
311
- ? McpActivityCallerSchema.parse(context.mcpCaller)
312
- : HUMAN_OWNER_CALLER;
313
- const networkId = activitySummaryNetworkId(caller);
314
- const summary = await deps.userDb.getAgentActivitySummary({
315
- sinceHours,
316
- ...(networkId ? { networkId } : {}),
317
- });
318
- return success(ActivitySummaryResponseSchema.parse(projectActivitySummary(caller, summary)));
319
- },
320
- });
321
- return [scrapeUrl, readDocs, readActivitySummary].filter((tool) => tool !== null);
322
- }
@@ -1,61 +0,0 @@
1
- import type { ScopeMembership, ToolScopeEnvelope } from "../agent/tool.scope.js";
2
- import type { NetworkAssignmentMetadata, NetworkAssignmentMode, NetworkAssignmentPromptPresence, NetworkAssignmentRawScores, NetworkAssignmentResourceType, NetworkAssignmentScope } from "../schemas/network-assignment.schema.js";
3
- /** Centralized default for unified premises/intent network assignment. */
4
- export declare const DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD = 0.7;
5
- export interface PromptPresenceInput {
6
- indexPrompt?: string | null;
7
- memberPrompt?: string | null;
8
- }
9
- export type AssignmentScopeMembership = ScopeMembership | string;
10
- export interface ResolveAssignmentNetworkScopeArgs extends ToolScopeEnvelope {
11
- memberships: AssignmentScopeMembership[];
12
- /** @deprecated Use `scopeType: 'network'` + `scopeId`. */
13
- networkScopeId?: string;
14
- }
15
- export interface BuildNetworkAssignmentDecisionArgs extends PromptPresenceInput {
16
- resourceType: NetworkAssignmentResourceType;
17
- mode: NetworkAssignmentMode;
18
- scope: NetworkAssignmentScope;
19
- rawScores?: NetworkAssignmentRawScores | null;
20
- threshold?: number;
21
- evaluator?: string;
22
- source?: string;
23
- reason?: string;
24
- createdAt?: string;
25
- }
26
- export interface NetworkAssignmentDecision {
27
- assigned: boolean;
28
- finalScore: number;
29
- metadata: NetworkAssignmentMetadata;
30
- }
31
- /**
32
- * Classifies whether a network/member prompt pair can filter a resource.
33
- *
34
- * @param input - Network and member prompt values to inspect.
35
- * @returns Prompt-presence classification for assignment policy decisions.
36
- */
37
- export declare function classifyPromptPresence(input: PromptPresenceInput): NetworkAssignmentPromptPresence;
38
- /**
39
- * Resolves the networks to evaluate: all memberships in global scope, or the
40
- * focused network plus personal memberships in network scope. The focused
41
- * network must also be a membership to avoid broadening scope accidentally.
42
- *
43
- * @param args - User memberships plus optional active network scope.
44
- * @returns Network IDs that assignment should evaluate.
45
- */
46
- export declare function resolveAssignmentNetworkScope(args: ResolveAssignmentNetworkScopeArgs): string[];
47
- /**
48
- * Builds a unified assignment decision and metadata envelope.
49
- *
50
- * @param args - Assignment resource, scope, prompt, score, and provenance inputs.
51
- * @returns Assignment decision and explainability metadata.
52
- */
53
- export declare function buildNetworkAssignmentDecision(args: BuildNetworkAssignmentDecisionArgs): NetworkAssignmentDecision;
54
- /**
55
- * Combines index/member scores according to available prompt filtration.
56
- *
57
- * @param rawScores - Optional normalized index and member scores.
58
- * @param promptPresence - Which prompts are present for this assignment decision.
59
- * @returns Final normalized score in the 0..1 range.
60
- */
61
- export declare function combineAssignmentScores(rawScores: NetworkAssignmentRawScores, promptPresence: NetworkAssignmentPromptPresence): number;
@@ -1,105 +0,0 @@
1
- import { deriveAllowedNetworkIds, scopeFromNetworkId } from "../agent/tool.scope.js";
2
- /** Centralized default for unified premises/intent network assignment. */
3
- export const DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD = 0.7;
4
- /**
5
- * Classifies whether a network/member prompt pair can filter a resource.
6
- *
7
- * @param input - Network and member prompt values to inspect.
8
- * @returns Prompt-presence classification for assignment policy decisions.
9
- */
10
- export function classifyPromptPresence(input) {
11
- const hasIndex = !!input.indexPrompt?.trim();
12
- const hasMember = !!input.memberPrompt?.trim();
13
- if (hasIndex && hasMember)
14
- return "both";
15
- if (hasIndex)
16
- return "index";
17
- if (hasMember)
18
- return "member";
19
- return "none";
20
- }
21
- /**
22
- * Resolves the networks to evaluate: all memberships in global scope, or the
23
- * focused network plus personal memberships in network scope. The focused
24
- * network must also be a membership to avoid broadening scope accidentally.
25
- *
26
- * @param args - User memberships plus optional active network scope.
27
- * @returns Network IDs that assignment should evaluate.
28
- */
29
- export function resolveAssignmentNetworkScope(args) {
30
- const memberships = args.memberships.map((membership) => (typeof membership === "string"
31
- ? { networkId: membership, isPersonal: false }
32
- : membership));
33
- const scope = args.scopeType && args.scopeId
34
- ? { scopeType: args.scopeType, scopeId: args.scopeId }
35
- : scopeFromNetworkId(args.networkScopeId);
36
- return deriveAllowedNetworkIds({ memberships, ...scope });
37
- }
38
- /**
39
- * Builds a unified assignment decision and metadata envelope.
40
- *
41
- * @param args - Assignment resource, scope, prompt, score, and provenance inputs.
42
- * @returns Assignment decision and explainability metadata.
43
- */
44
- export function buildNetworkAssignmentDecision(args) {
45
- const threshold = clampScore(args.threshold ?? DEFAULT_NETWORK_ASSIGNMENT_THRESHOLD);
46
- const promptPresence = classifyPromptPresence(args);
47
- if (args.mode === "manual_override") {
48
- const finalScore = 1.0;
49
- return buildDecision(args, promptPresence, threshold, finalScore, true, args.reason ?? "Explicit manual override.");
50
- }
51
- if (promptPresence === "none") {
52
- const finalScore = 1.0;
53
- return buildDecision(args, promptPresence, threshold, finalScore, true, args.reason ?? "No prompts configured; network has no dynamic filtration.");
54
- }
55
- const finalScore = combineAssignmentScores(args.rawScores ?? {}, promptPresence);
56
- const assigned = finalScore >= threshold;
57
- return buildDecision(args, promptPresence, threshold, finalScore, assigned, args.reason);
58
- }
59
- /**
60
- * Combines index/member scores according to available prompt filtration.
61
- *
62
- * @param rawScores - Optional normalized index and member scores.
63
- * @param promptPresence - Which prompts are present for this assignment decision.
64
- * @returns Final normalized score in the 0..1 range.
65
- */
66
- export function combineAssignmentScores(rawScores, promptPresence) {
67
- const indexScore = clampScore(rawScores.indexScore ?? 0);
68
- const memberScore = clampScore(rawScores.memberScore ?? 0);
69
- switch (promptPresence) {
70
- case "both":
71
- return clampScore(indexScore * 0.6 + memberScore * 0.4);
72
- case "index":
73
- return indexScore;
74
- case "member":
75
- return memberScore;
76
- case "none":
77
- return 1.0;
78
- }
79
- }
80
- function buildDecision(args, promptPresence, threshold, finalScore, assigned, reason) {
81
- return {
82
- assigned,
83
- finalScore,
84
- metadata: {
85
- resourceType: args.resourceType,
86
- mode: args.mode,
87
- scope: args.scope,
88
- policy: "unified-threshold-v1",
89
- threshold,
90
- promptPresence,
91
- ...(args.rawScores ? { rawScores: args.rawScores } : {}),
92
- finalScore,
93
- assigned,
94
- ...(reason ? { reason } : {}),
95
- ...(args.evaluator ? { evaluator: args.evaluator } : {}),
96
- ...(args.source ? { source: args.source } : {}),
97
- ...(args.createdAt ? { createdAt: args.createdAt } : {}),
98
- },
99
- };
100
- }
101
- function clampScore(score) {
102
- if (!Number.isFinite(score))
103
- return 0;
104
- return Math.max(0, Math.min(1, score));
105
- }
@@ -1,100 +0,0 @@
1
- /**
2
- * AgentDispatcher interface for the negotiation graph.
3
- *
4
- * The graph calls dispatch() per turn and receives a result.
5
- * It never knows about webhooks, MCP, transports, or agent resolution.
6
- * The concrete implementation lives in the host application.
7
- *
8
- * IND-548: these types are also accessible via agents/ports, which
9
- * re-exports from here. This file remains the authoritative source to avoid a
10
- * module cycle through the negotiation capability facade.
11
- */
12
- import type { NegotiationTurn, UserNegotiationContext, SeedAssessment } from '../schemas/negotiation-state.schema.js';
13
- import type { NegotiatorMemoryEntry } from '../../negotiations/negotiation.memory.js';
14
- import type { AttributedPriorDialogue } from '../../negotiations/negotiation.attribution.js';
15
- import type { NegotiationPrivateConsultation } from './database.interface.js';
16
- import type { NegotiationContinuationTimeoutIdentity } from './negotiation-events.interface.js';
17
- /** Payload sent to the dispatcher for each negotiation turn. */
18
- export interface NegotiationTurnPayload {
19
- negotiationId: string;
20
- ownUser: UserNegotiationContext;
21
- otherUser: UserNegotiationContext;
22
- indexContext: {
23
- networkId: string;
24
- prompt?: string;
25
- };
26
- seedAssessment: SeedAssessment;
27
- history: NegotiationTurn[];
28
- isFinalTurn: boolean;
29
- /** Whether ownUser is the party that initiated the discovery. */
30
- isDiscoverer: boolean;
31
- /** The explicit search query that triggered this discovery (if any). Takes priority over background intents. */
32
- discoveryQuery?: string;
33
- /** The acting user's seat under the v2 client-advocate protocol (`initiator` | `counterparty`). */
34
- seat?: string;
35
- /** Negotiation protocol version for this task (`v1` | `v2`). */
36
- protocolVersion?: string;
37
- /** Actions the acting seat may submit on this turn (seat + version + final-turn scoped). */
38
- allowedActions?: string[];
39
- /**
40
- * The acting user's OWN negotiator memories (P5.3 read path) — private
41
- * context for the dispatched agent. Never contains the counterparty's
42
- * memory; absent when `NEGOTIATOR_MEMORY_INJECT` is off or nothing was
43
- * retrieved.
44
- */
45
- negotiatorMemory?: NegotiatorMemoryEntry[];
46
- /** Recipient-private ask-user consultation, present only for that recipient's turn. */
47
- privateConsultation?: NegotiationPrivateConsultation;
48
- /**
49
- * Prior dialogue with this counterparty, grouped and labeled per opportunity
50
- * (IND-569). Present only on continuations; lets an external agent see which
51
- * prior turns belonged to already-concluded OTHER opportunities versus the
52
- * one under negotiation now. Absent → no attributed prior dialogue available.
53
- */
54
- priorDialogue?: AttributedPriorDialogue;
55
- /** Server-only continuation generation used to fence the delayed park timeout. */
56
- timeoutContinuation?: NegotiationContinuationTimeoutIdentity;
57
- }
58
- /** Result of a dispatch attempt. */
59
- export type AgentDispatchResult = {
60
- handled: true;
61
- turn: NegotiationTurn;
62
- } | {
63
- handled: false;
64
- reason: 'no_agent' | 'timeout';
65
- } | {
66
- handled: false;
67
- reason: 'waiting';
68
- resumeToken: string;
69
- };
70
- /**
71
- * Dispatches a negotiation turn to the appropriate agent.
72
- * Tries external (poller) agents first, falls back to system agent.
73
- */
74
- export interface AgentDispatcher {
75
- /**
76
- * Attempt to dispatch a negotiation turn to an external (poller) agent.
77
- * @param userId - The user whose agent should handle this turn
78
- * @param scope - Permission scope for agent resolution
79
- * @param payload - Turn context (users, history, seed assessment)
80
- * @param options - Timeout configuration
81
- * @returns Handled result with turn, or unhandled result with reason
82
- */
83
- dispatch(userId: string, scope: {
84
- action: string;
85
- scopeType: string;
86
- scopeId?: string;
87
- }, payload: NegotiationTurnPayload, options: {
88
- timeoutMs: number;
89
- }): Promise<AgentDispatchResult>;
90
- /**
91
- * Check whether a user has an authorized external (poller) agent for the given
92
- * scope. Used at init to determine scenario-based turn caps. Type-only by design
93
- * (no heartbeat freshness) — see IND-410.
94
- */
95
- hasExternalAgent(userId: string, scope: {
96
- action: string;
97
- scopeType: string;
98
- scopeId?: string;
99
- }): Promise<boolean>;
100
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * AgentDispatcher interface for the negotiation graph.
3
- *
4
- * The graph calls dispatch() per turn and receives a result.
5
- * It never knows about webhooks, MCP, transports, or agent resolution.
6
- * The concrete implementation lives in the host application.
7
- *
8
- * IND-548: these types are also accessible via agents/ports, which
9
- * re-exports from here. This file remains the authoritative source to avoid a
10
- * module cycle through the negotiation capability facade.
11
- */
12
- export {};
@@ -1,37 +0,0 @@
1
- import type { McpAuthInput, McpResolvedIdentity } from '../schemas/mcp-auth.schema.js';
2
- /**
3
- * Resolves the authenticated MCP identity from an auth input DTO.
4
- * The DTO is extracted from the transport at the edge (e.g. from HTTP Request
5
- * headers) before the protocol layer is called. New auth paths stay free of
6
- * platform-specific `Request` coupling; `resolveUserId` remains only as a
7
- * deprecated compatibility bridge while callers migrate to `resolveIdentity`.
8
- */
9
- export interface McpAuthResolver {
10
- /**
11
- * Extracts and validates the authenticated identity from the auth input.
12
- *
13
- * @param input - Transport-neutral auth input DTO with credential fields
14
- * extracted at the MCP transport edge.
15
- * @returns The authenticated user's UUID, optional agent UUID, auth method,
16
- * and `networkScopeId` if the caller's API key is bound to a network-scoped
17
- * agent.
18
- *
19
- * When `networkScopeId` is set, the MCP server promotes it into the
20
- * canonical `{ scopeType: 'network', scopeId }` envelope. Downstream tools
21
- * derive concrete allowed network IDs from that envelope plus memberships.
22
- *
23
- * `isSessionAuth` is true for OAuth/JWT bearer sessions — the agent-
24
- * registration gate in the MCP server is skipped for these callers.
25
- *
26
- * @throws Error if authentication fails (no token, invalid token, etc.)
27
- */
28
- resolveIdentity(input: McpAuthInput): Promise<McpResolvedIdentity>;
29
- /**
30
- * Deprecated HTTP Request bridge retained for compatibility with older
31
- * callers. New transport code must extract `McpAuthInput` at the edge and
32
- * call `resolveIdentity` instead.
33
- *
34
- * @deprecated Use resolveIdentity instead.
35
- */
36
- resolveUserId(request: Request): Promise<string>;
37
- }
@@ -1 +0,0 @@
1
- export {};