@indexnetwork/protocol 22.0.0-rc.499.1 → 64.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/CHANGELOG.md +1841 -0
  2. package/IMPLEMENTATION.md +140 -181
  3. package/README.md +16 -20
  4. package/STABILITY.md +16 -11
  5. package/dist/{intents/intent.module.d.ts → capabilities/intents.d.ts} +182 -192
  6. package/dist/capabilities/intents.js +88 -0
  7. package/dist/capabilities/negotiations.d.ts +17 -0
  8. package/dist/capabilities/negotiations.js +16 -0
  9. package/dist/{networks/network.module.d.ts → capabilities/networks.d.ts} +33 -169
  10. package/dist/{networks/network.module.js → capabilities/networks.js} +6 -17
  11. package/dist/index.d.ts +57 -134
  12. package/dist/index.js +41 -105
  13. package/dist/internal/agents/agent.repository.port.d.ts +59 -0
  14. package/dist/internal/agents/agent.repository.port.js +7 -0
  15. package/dist/internal/agents/agent.types.d.ts +35 -0
  16. package/dist/{agents → internal/agents}/agent.types.js +1 -6
  17. package/dist/{intents → internal/intents}/graph/intent.graph.d.ts +142 -151
  18. package/dist/{intents → internal/intents}/graph/intent.graph.execute.d.ts +5 -1
  19. package/dist/{intents → internal/intents}/graph/intent.graph.execute.js +165 -46
  20. package/dist/internal/intents/graph/intent.graph.infer.d.ts +78 -0
  21. package/dist/internal/intents/graph/intent.graph.infer.js +122 -0
  22. package/dist/internal/intents/graph/intent.graph.js +108 -0
  23. package/dist/{intents → internal/intents}/graph/intent.graph.reconcile.d.ts +18 -9
  24. package/dist/internal/intents/graph/intent.graph.reconcile.js +173 -0
  25. package/dist/internal/intents/graph/intent.graph.shared.d.ts +55 -0
  26. package/dist/{intents → internal/intents}/graph/intent.graph.shared.js +25 -70
  27. package/dist/{intents → internal/intents}/graph/intent.graph.state.d.ts +96 -32
  28. package/dist/{intents → internal/intents}/graph/intent.graph.state.js +42 -31
  29. package/dist/internal/intents/intent.admission.d.ts +16 -0
  30. package/dist/internal/intents/intent.admission.js +30 -0
  31. package/dist/{intents → internal/intents}/intent.inferrer.d.ts +1 -40
  32. package/dist/{intents → internal/intents}/intent.inferrer.js +13 -49
  33. package/dist/internal/intents/intent.preparer.d.ts +52 -0
  34. package/dist/internal/intents/intent.preparer.js +87 -0
  35. package/dist/{intents → internal/intents}/intent.verifier.d.ts +3 -36
  36. package/dist/{intents → internal/intents}/intent.verifier.js +0 -17
  37. package/dist/{networks → internal/networks}/indexer.graph.d.ts +15 -200
  38. package/dist/{networks → internal/networks}/indexer.graph.js +19 -128
  39. package/dist/{networks → internal/networks}/indexer.state.d.ts +8 -63
  40. package/dist/internal/networks/indexer.state.js +70 -0
  41. package/dist/{networks → internal/networks}/membership.graph.d.ts +6 -6
  42. package/dist/{networks → internal/networks}/membership.graph.js +3 -3
  43. package/dist/{networks → internal/networks}/membership.state.d.ts +2 -2
  44. package/dist/{networks → internal/networks}/membership.state.js +2 -2
  45. package/dist/{networks → internal/networks}/network.graph.d.ts +9 -22
  46. package/dist/{networks → internal/networks}/network.graph.js +13 -27
  47. package/dist/{networks → internal/networks}/network.recommender.d.ts +2 -2
  48. package/dist/{networks → internal/networks}/network.recommender.js +2 -2
  49. package/dist/{networks → internal/networks}/network.state.d.ts +4 -7
  50. package/dist/{networks → internal/networks}/network.state.js +4 -4
  51. package/dist/internal/opportunities/negotiation-context.loader.d.ts +26 -0
  52. package/dist/internal/opportunities/negotiation-context.loader.js +36 -0
  53. package/dist/{opportunities → internal/opportunities}/opportunity.actor.d.ts +1 -1
  54. package/dist/{opportunities → internal/opportunities}/opportunity.actor.js +7 -1
  55. package/dist/internal/opportunities/opportunity.counterparties.d.ts +17 -0
  56. package/dist/internal/opportunities/opportunity.counterparties.js +19 -0
  57. package/dist/internal/opportunities/opportunity.events.d.ts +38 -0
  58. package/dist/internal/opportunities/opportunity.events.js +94 -0
  59. package/dist/{opportunities → internal/opportunities}/opportunity.feed-selection.d.ts +3 -9
  60. package/dist/internal/opportunities/opportunity.feed-selection.js +40 -0
  61. package/dist/internal/opportunities/opportunity.graph.modes.d.ts +39 -0
  62. package/dist/internal/opportunities/opportunity.graph.modes.js +138 -0
  63. package/dist/{opportunities → internal/opportunities}/opportunity.labels.d.ts +2 -3
  64. package/dist/internal/opportunities/opportunity.labels.js +9 -0
  65. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.d.ts +17 -86
  66. package/dist/{opportunities → internal/opportunities}/opportunity.presentation.js +54 -447
  67. package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.d.ts +2 -2
  68. package/dist/internal/opportunities/opportunity.utils.d.ts +105 -0
  69. package/dist/internal/opportunities/opportunity.utils.js +165 -0
  70. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.d.ts +17 -17
  71. package/dist/{opportunities → internal/opportunities}/radar/radar.graph.js +41 -161
  72. package/dist/{opportunities → internal/opportunities}/radar/radar.state.d.ts +4 -11
  73. package/dist/{shared → internal/shared}/agent/model-signal.d.ts +1 -1
  74. package/dist/{shared → internal/shared}/agent/model-signal.js +1 -1
  75. package/dist/{shared → internal/shared}/agent/model.config.d.ts +28 -86
  76. package/dist/{shared → internal/shared}/agent/model.config.js +58 -69
  77. package/dist/internal/shared/agent/model.resolver.d.ts +33 -0
  78. package/dist/{shared → internal/shared}/agent/model.resolver.js +18 -33
  79. package/dist/internal/shared/agent/scope.d.ts +20 -0
  80. package/dist/internal/shared/agent/scope.js +24 -0
  81. package/dist/internal/shared/assignment/network-assignment.policy.d.ts +23 -0
  82. package/dist/internal/shared/assignment/network-assignment.policy.js +28 -0
  83. package/dist/{shared → internal/shared}/observability/log.d.ts +3 -6
  84. package/dist/{shared → internal/shared}/observability/log.js +9 -18
  85. package/dist/{shared → internal/shared}/observability/protocol.logger.d.ts +1 -1
  86. package/dist/{shared → internal/shared}/observability/protocol.logger.js +1 -1
  87. package/dist/internal/shared/observability/request-context.d.ts +29 -0
  88. package/dist/internal/shared/observability/request-context.js +17 -0
  89. package/dist/{shared → internal/shared}/utils/social-label.d.ts +2 -2
  90. package/dist/{shared → internal/shared}/utils/social-label.js +1 -1
  91. package/dist/platform/database/capabilities.d.ts +59 -0
  92. package/dist/{shared/interfaces/database.entities.d.ts → platform/database/entities.d.ts} +81 -121
  93. package/dist/{shared/interfaces/database.identity-queries.d.ts → platform/database/identity-queries.d.ts} +55 -20
  94. package/dist/platform/database/member-queries.d.ts +55 -0
  95. package/dist/platform/database/member-queries.js +4 -0
  96. package/dist/platform/database/negotiation.d.ts +38 -0
  97. package/dist/{shared/interfaces/database.network-queries.d.ts → platform/database/network-queries.d.ts} +66 -67
  98. package/dist/platform/database/network-queries.js +4 -0
  99. package/dist/{shared/interfaces/database.opportunity-queries.d.ts → platform/database/opportunity-queries.d.ts} +25 -109
  100. package/dist/{shared/interfaces/database.port.d.ts → platform/database/port.d.ts} +52 -117
  101. package/dist/{shared/interfaces/database.port.js → platform/database/port.js} +3 -5
  102. package/dist/platform/database.d.ts +23 -0
  103. package/dist/{shared/interfaces/database.interface.js → platform/database.js} +1 -1
  104. package/dist/{shared/interfaces/cache.interface.d.ts → platform/discovery/cache.d.ts} +2 -4
  105. package/dist/{shared/interfaces/cache.interface.js → platform/discovery/cache.js} +1 -1
  106. package/dist/platform/discovery/embedder.d.ts +31 -0
  107. package/dist/platform/runtime/errors.d.ts +6 -0
  108. package/dist/platform/runtime/errors.js +9 -0
  109. package/dist/platform/runtime/follow-up.d.ts +36 -0
  110. package/dist/platform/runtime/follow-up.js +4 -0
  111. package/dist/platform/runtime/observability.d.ts +34 -0
  112. package/dist/protocol/core.d.ts +11 -0
  113. package/dist/protocol/discovery.rules.d.ts +21 -0
  114. package/dist/protocol/discovery.rules.js +29 -0
  115. package/dist/protocol/negotiation.constants.d.ts +3 -0
  116. package/dist/protocol/negotiation.constants.js +3 -0
  117. package/dist/protocol/negotiation.rules.d.ts +73 -0
  118. package/dist/protocol/negotiation.rules.js +68 -0
  119. package/dist/protocol/protocol.prompt.d.ts +13 -0
  120. package/dist/protocol/protocol.prompt.js +190 -0
  121. package/dist/{shared → protocol}/schemas/discovery-question.schema.d.ts +13 -13
  122. package/dist/{shared → protocol}/schemas/discovery-question.schema.js +2 -2
  123. package/dist/{shared → protocol}/schemas/identity.schema.d.ts +4 -4
  124. package/dist/{shared → protocol}/schemas/identity.schema.js +4 -4
  125. package/dist/{shared → protocol}/schemas/network-assignment.schema.d.ts +11 -20
  126. package/dist/{shared → protocol}/schemas/network-assignment.schema.js +2 -9
  127. package/dist/protocol/schemas/underspecification.schema.d.ts +9 -0
  128. package/dist/protocol/schemas/underspecification.schema.js +12 -0
  129. package/package.json +7 -15
  130. package/dist/agents/agent.dispatcher.port.d.ts +0 -25
  131. package/dist/agents/agent.module.d.ts +0 -19
  132. package/dist/agents/agent.module.js +0 -11
  133. package/dist/agents/agent.repository.port.d.ts +0 -118
  134. package/dist/agents/agent.repository.port.js +0 -10
  135. package/dist/agents/agent.tools.d.ts +0 -16
  136. package/dist/agents/agent.tools.js +0 -351
  137. package/dist/agents/agent.tools.port.d.ts +0 -22
  138. package/dist/agents/agent.tools.port.js +0 -18
  139. package/dist/agents/agent.types.d.ts +0 -76
  140. package/dist/chat/chat-streaming.types.d.ts +0 -618
  141. package/dist/chat/chat-streaming.types.js +0 -297
  142. package/dist/chat/chat.agent.d.ts +0 -292
  143. package/dist/chat/chat.agent.js +0 -1010
  144. package/dist/chat/chat.graph.d.ts +0 -424
  145. package/dist/chat/chat.graph.js +0 -257
  146. package/dist/chat/chat.interrupt.classifier.d.ts +0 -25
  147. package/dist/chat/chat.interrupt.classifier.js +0 -64
  148. package/dist/chat/chat.persona.d.ts +0 -39
  149. package/dist/chat/chat.prompt.d.ts +0 -4
  150. package/dist/chat/chat.prompt.js +0 -12
  151. package/dist/chat/chat.prompt.modules.d.ts +0 -30
  152. package/dist/chat/chat.prompt.modules.js +0 -40
  153. package/dist/chat/chat.question-dedup.d.ts +0 -14
  154. package/dist/chat/chat.question-dedup.js +0 -17
  155. package/dist/chat/chat.state.d.ts +0 -135
  156. package/dist/chat/chat.state.js +0 -120
  157. package/dist/chat/chat.streamer.d.ts +0 -64
  158. package/dist/chat/chat.streamer.js +0 -217
  159. package/dist/chat/chat.suggester.d.ts +0 -23
  160. package/dist/chat/chat.suggester.js +0 -95
  161. package/dist/chat/chat.summarizer.d.ts +0 -20
  162. package/dist/chat/chat.summarizer.js +0 -97
  163. package/dist/chat/chat.title.generator.d.ts +0 -19
  164. package/dist/chat/chat.title.generator.js +0 -66
  165. package/dist/chat/chat.tools.d.ts +0 -5
  166. package/dist/chat/chat.tools.js +0 -62
  167. package/dist/chat/chat.utils.d.ts +0 -41
  168. package/dist/chat/chat.utils.js +0 -88
  169. package/dist/chat/negotiator.persona.d.ts +0 -74
  170. package/dist/chat/negotiator.persona.js +0 -154
  171. package/dist/chat/negotiator.prompt.d.ts +0 -45
  172. package/dist/chat/negotiator.prompt.js +0 -160
  173. package/dist/chat/negotiator.tools.d.ts +0 -42
  174. package/dist/chat/negotiator.tools.js +0 -134
  175. package/dist/chat/onboarding.persona.d.ts +0 -28
  176. package/dist/chat/onboarding.persona.js +0 -86
  177. package/dist/chat/onboarding.prompt.d.ts +0 -6
  178. package/dist/chat/onboarding.prompt.js +0 -63
  179. package/dist/chat/signal.persona.d.ts +0 -47
  180. package/dist/chat/signal.persona.js +0 -319
  181. package/dist/chat/signal.prompt.d.ts +0 -39
  182. package/dist/chat/signal.prompt.js +0 -136
  183. package/dist/contacts/contact.module.d.ts +0 -8
  184. package/dist/contacts/contact.module.js +0 -6
  185. package/dist/contacts/contact.repository.port.d.ts +0 -21
  186. package/dist/contacts/contact.repository.port.js +0 -12
  187. package/dist/contacts/contact.tools.d.ts +0 -17
  188. package/dist/contacts/contact.tools.js +0 -108
  189. package/dist/contacts/contact.tools.port.d.ts +0 -20
  190. package/dist/contacts/contact.tools.port.js +0 -16
  191. package/dist/contacts/contact.types.d.ts +0 -24
  192. package/dist/contacts/contact.types.js +0 -8
  193. package/dist/contexts/context.generator.d.ts +0 -95
  194. package/dist/contexts/context.generator.js +0 -127
  195. package/dist/contexts/context.module.d.ts +0 -13
  196. package/dist/contexts/context.module.js +0 -12
  197. package/dist/contexts/context.tools.port.d.ts +0 -9
  198. package/dist/discovery/hyde.documents.d.ts +0 -9
  199. package/dist/discovery/hyde.documents.js +0 -49
  200. package/dist/discovery/hyde.env.d.ts +0 -8
  201. package/dist/discovery/hyde.env.js +0 -9
  202. package/dist/discovery/hyde.frame.d.ts +0 -150
  203. package/dist/discovery/hyde.frame.js +0 -107
  204. package/dist/discovery/hyde.generator.d.ts +0 -38
  205. package/dist/discovery/hyde.generator.js +0 -103
  206. package/dist/discovery/hyde.graph.d.ts +0 -209
  207. package/dist/discovery/hyde.graph.js +0 -482
  208. package/dist/discovery/hyde.state.d.ts +0 -70
  209. package/dist/discovery/hyde.state.js +0 -85
  210. package/dist/discovery/hyde.strategies.d.ts +0 -17
  211. package/dist/discovery/hyde.strategies.js +0 -34
  212. package/dist/discovery/hyde.validator.d.ts +0 -78
  213. package/dist/discovery/hyde.validator.js +0 -48
  214. package/dist/discovery/index.d.ts +0 -26
  215. package/dist/discovery/index.js +0 -19
  216. package/dist/discovery/lens.inferrer.d.ts +0 -214
  217. package/dist/discovery/lens.inferrer.js +0 -152
  218. package/dist/enrichment/enrichment.generator.d.ts +0 -68
  219. package/dist/enrichment/enrichment.generator.js +0 -95
  220. package/dist/enrichment/enrichment.graph.d.ts +0 -544
  221. package/dist/enrichment/enrichment.graph.js +0 -695
  222. package/dist/enrichment/enrichment.state.d.ts +0 -141
  223. package/dist/enrichment/enrichment.state.js +0 -115
  224. package/dist/enrichment/enrichment.tools.context-read.d.ts +0 -10
  225. package/dist/enrichment/enrichment.tools.context-read.js +0 -353
  226. package/dist/enrichment/enrichment.tools.context-write.d.ts +0 -9
  227. package/dist/enrichment/enrichment.tools.context-write.js +0 -417
  228. package/dist/enrichment/enrichment.tools.d.ts +0 -13
  229. package/dist/enrichment/enrichment.tools.helpers.d.ts +0 -139
  230. package/dist/enrichment/enrichment.tools.helpers.js +0 -234
  231. package/dist/enrichment/enrichment.tools.js +0 -153
  232. package/dist/intents/graph/intent.graph.infer.d.ts +0 -44
  233. package/dist/intents/graph/intent.graph.infer.js +0 -97
  234. package/dist/intents/graph/intent.graph.js +0 -134
  235. package/dist/intents/graph/intent.graph.reconcile.js +0 -274
  236. package/dist/intents/graph/intent.graph.shared.d.ts +0 -68
  237. package/dist/intents/intake/intake.orchestrator.d.ts +0 -203
  238. package/dist/intents/intake/intake.orchestrator.js +0 -255
  239. package/dist/intents/intake/intake.pack.generator.d.ts +0 -57
  240. package/dist/intents/intake/intake.pack.generator.js +0 -90
  241. package/dist/intents/intent.clarifier.d.ts +0 -51
  242. package/dist/intents/intent.clarifier.js +0 -201
  243. package/dist/intents/intent.indexer.d.ts +0 -82
  244. package/dist/intents/intent.indexer.js +0 -170
  245. package/dist/intents/intent.module.js +0 -103
  246. package/dist/intents/intent.proposal.d.ts +0 -37
  247. package/dist/intents/intent.proposal.js +0 -14
  248. package/dist/intents/intent.reconciler.d.ts +0 -105
  249. package/dist/intents/intent.reconciler.js +0 -186
  250. package/dist/intents/intent.tools.d.ts +0 -27
  251. package/dist/intents/intent.tools.js +0 -808
  252. package/dist/maintenance/maintenance.graph.d.ts +0 -239
  253. package/dist/maintenance/maintenance.graph.js +0 -199
  254. package/dist/maintenance/maintenance.state.d.ts +0 -35
  255. package/dist/maintenance/maintenance.state.js +0 -55
  256. package/dist/mcp/elicitation.builder.d.ts +0 -53
  257. package/dist/mcp/elicitation.builder.js +0 -74
  258. package/dist/mcp/elicitation.dispatcher.d.ts +0 -36
  259. package/dist/mcp/elicitation.dispatcher.js +0 -86
  260. package/dist/mcp/mcp.authorization-policy.d.ts +0 -252
  261. package/dist/mcp/mcp.authorization-policy.js +0 -535
  262. package/dist/mcp/mcp.server.d.ts +0 -90
  263. package/dist/mcp/mcp.server.js +0 -631
  264. package/dist/negotiations/insight.generator.d.ts +0 -31
  265. package/dist/negotiations/insight.generator.js +0 -105
  266. package/dist/negotiations/negotiation.agent.d.ts +0 -130
  267. package/dist/negotiations/negotiation.agent.js +0 -396
  268. package/dist/negotiations/negotiation.answer-consumption.d.ts +0 -223
  269. package/dist/negotiations/negotiation.answer-consumption.js +0 -275
  270. package/dist/negotiations/negotiation.attribution.d.ts +0 -91
  271. package/dist/negotiations/negotiation.attribution.js +0 -109
  272. package/dist/negotiations/negotiation.candidates.d.ts +0 -83
  273. package/dist/negotiations/negotiation.candidates.js +0 -162
  274. package/dist/negotiations/negotiation.client-dm.d.ts +0 -50
  275. package/dist/negotiations/negotiation.client-dm.js +0 -66
  276. package/dist/negotiations/negotiation.consultation-policy.d.ts +0 -95
  277. package/dist/negotiations/negotiation.consultation-policy.js +0 -159
  278. package/dist/negotiations/negotiation.deadlock.contracts.d.ts +0 -10
  279. package/dist/negotiations/negotiation.deadlock.d.ts +0 -87
  280. package/dist/negotiations/negotiation.deadlock.js +0 -150
  281. package/dist/negotiations/negotiation.detail-reader.d.ts +0 -94
  282. package/dist/negotiations/negotiation.detail-reader.js +0 -91
  283. package/dist/negotiations/negotiation.expected-speaker.d.ts +0 -33
  284. package/dist/negotiations/negotiation.expected-speaker.js +0 -59
  285. package/dist/negotiations/negotiation.graph.d.ts +0 -694
  286. package/dist/negotiations/negotiation.graph.finalize.d.ts +0 -5
  287. package/dist/negotiations/negotiation.graph.finalize.js +0 -403
  288. package/dist/negotiations/negotiation.graph.init.d.ts +0 -54
  289. package/dist/negotiations/negotiation.graph.init.js +0 -256
  290. package/dist/negotiations/negotiation.graph.js +0 -94
  291. package/dist/negotiations/negotiation.graph.screen.d.ts +0 -23
  292. package/dist/negotiations/negotiation.graph.screen.js +0 -108
  293. package/dist/negotiations/negotiation.graph.shared.d.ts +0 -111
  294. package/dist/negotiations/negotiation.graph.shared.js +0 -168
  295. package/dist/negotiations/negotiation.graph.turn.d.ts +0 -134
  296. package/dist/negotiations/negotiation.graph.turn.js +0 -662
  297. package/dist/negotiations/negotiation.hermes-contract.d.ts +0 -31
  298. package/dist/negotiations/negotiation.hermes-contract.js +0 -72
  299. package/dist/negotiations/negotiation.intent-snapshot-provenance.d.ts +0 -21
  300. package/dist/negotiations/negotiation.intent-snapshot-provenance.js +0 -28
  301. package/dist/negotiations/negotiation.lifecycle-narration.d.ts +0 -18
  302. package/dist/negotiations/negotiation.lifecycle-narration.js +0 -87
  303. package/dist/negotiations/negotiation.memory.d.ts +0 -65
  304. package/dist/negotiations/negotiation.memory.js +0 -83
  305. package/dist/negotiations/negotiation.module.d.ts +0 -36
  306. package/dist/negotiations/negotiation.module.js +0 -23
  307. package/dist/negotiations/negotiation.protocol.d.ts +0 -1018
  308. package/dist/negotiations/negotiation.protocol.js +0 -224
  309. package/dist/negotiations/negotiation.question-safety.d.ts +0 -52
  310. package/dist/negotiations/negotiation.question-safety.js +0 -119
  311. package/dist/negotiations/negotiation.reflect.d.ts +0 -194
  312. package/dist/negotiations/negotiation.reflect.js +0 -145
  313. package/dist/negotiations/negotiation.scope.d.ts +0 -41
  314. package/dist/negotiations/negotiation.scope.js +0 -39
  315. package/dist/negotiations/negotiation.screen.contracts.d.ts +0 -88
  316. package/dist/negotiations/negotiation.screen.contracts.js +0 -58
  317. package/dist/negotiations/negotiation.screen.d.ts +0 -78
  318. package/dist/negotiations/negotiation.screen.js +0 -112
  319. package/dist/negotiations/negotiation.stall-gap.d.ts +0 -83
  320. package/dist/negotiations/negotiation.stall-gap.js +0 -152
  321. package/dist/negotiations/negotiation.stance.contracts.d.ts +0 -123
  322. package/dist/negotiations/negotiation.stance.contracts.js +0 -317
  323. package/dist/negotiations/negotiation.state.d.ts +0 -597
  324. package/dist/negotiations/negotiation.state.js +0 -286
  325. package/dist/negotiations/negotiation.summarizer.d.ts +0 -25
  326. package/dist/negotiations/negotiation.summarizer.js +0 -101
  327. package/dist/negotiations/negotiation.task-lock-policy.d.ts +0 -10
  328. package/dist/negotiations/negotiation.task-lock-policy.js +0 -22
  329. package/dist/negotiations/negotiation.tools.d.ts +0 -18
  330. package/dist/negotiations/negotiation.tools.js +0 -842
  331. package/dist/negotiations/negotiation.tools.port.d.ts +0 -17
  332. package/dist/negotiations/negotiation.turn-cap.d.ts +0 -9
  333. package/dist/negotiations/negotiation.turn-cap.js +0 -12
  334. package/dist/networks/indexer.state.js +0 -112
  335. package/dist/networks/network.tools.d.ts +0 -36
  336. package/dist/networks/network.tools.js +0 -594
  337. package/dist/opportunities/delivery-card.cache.d.ts +0 -25
  338. package/dist/opportunities/delivery-card.cache.js +0 -43
  339. package/dist/opportunities/discovery.env.d.ts +0 -20
  340. package/dist/opportunities/discovery.env.js +0 -109
  341. package/dist/opportunities/discriminator/discriminator.adjustments.d.ts +0 -90
  342. package/dist/opportunities/discriminator/discriminator.adjustments.js +0 -141
  343. package/dist/opportunities/discriminator/discriminator.assigner.d.ts +0 -78
  344. package/dist/opportunities/discriminator/discriminator.assigner.js +0 -153
  345. package/dist/opportunities/discriminator/discriminator.env.d.ts +0 -103
  346. package/dist/opportunities/discriminator/discriminator.env.js +0 -103
  347. package/dist/opportunities/discriminator/discriminator.miner.d.ts +0 -114
  348. package/dist/opportunities/discriminator/discriminator.miner.js +0 -228
  349. package/dist/opportunities/discriminator/discriminator.push.d.ts +0 -13
  350. package/dist/opportunities/discriminator/discriminator.push.js +0 -19
  351. package/dist/opportunities/discriminator/discriminator.question.d.ts +0 -58
  352. package/dist/opportunities/discriminator/discriminator.question.js +0 -155
  353. package/dist/opportunities/discriminator/discriminator.scorer.d.ts +0 -32
  354. package/dist/opportunities/discriminator/discriminator.scorer.js +0 -105
  355. package/dist/opportunities/discriminator/discriminator.shadow.d.ts +0 -32
  356. package/dist/opportunities/discriminator/discriminator.shadow.js +0 -90
  357. package/dist/opportunities/discriminator/discriminator.types.d.ts +0 -93
  358. package/dist/opportunities/discriminator/discriminator.types.js +0 -18
  359. package/dist/opportunities/negotiation-context.loader.d.ts +0 -59
  360. package/dist/opportunities/negotiation-context.loader.js +0 -90
  361. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.d.ts +0 -43
  362. package/dist/opportunities/negotiation-evidence/negotiation-evidence.env.js +0 -44
  363. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.d.ts +0 -24
  364. package/dist/opportunities/negotiation-evidence/negotiation-evidence.extractor.js +0 -188
  365. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.d.ts +0 -26
  366. package/dist/opportunities/negotiation-evidence/negotiation-evidence.miner.js +0 -112
  367. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.d.ts +0 -19
  368. package/dist/opportunities/negotiation-evidence/negotiation-evidence.shadow.js +0 -61
  369. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.d.ts +0 -191
  370. package/dist/opportunities/negotiation-evidence/negotiation-evidence.types.js +0 -18
  371. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.d.ts +0 -34
  372. package/dist/opportunities/negotiation-evidence/negotiation-evidence.verifier.js +0 -91
  373. package/dist/opportunities/negotiation-summary.builder.d.ts +0 -37
  374. package/dist/opportunities/negotiation-summary.builder.js +0 -66
  375. package/dist/opportunities/opportunity.discovery-negotiation-summary.d.ts +0 -14
  376. package/dist/opportunities/opportunity.discovery-negotiation-summary.js +0 -46
  377. package/dist/opportunities/opportunity.enricher.d.ts +0 -71
  378. package/dist/opportunities/opportunity.enricher.js +0 -280
  379. package/dist/opportunities/opportunity.evaluator.d.ts +0 -289
  380. package/dist/opportunities/opportunity.evaluator.js +0 -516
  381. package/dist/opportunities/opportunity.evidence.d.ts +0 -22
  382. package/dist/opportunities/opportunity.evidence.js +0 -87
  383. package/dist/opportunities/opportunity.existing-negotiation.d.ts +0 -79
  384. package/dist/opportunities/opportunity.existing-negotiation.js +0 -118
  385. package/dist/opportunities/opportunity.feed-selection.js +0 -96
  386. package/dist/opportunities/opportunity.graph.d.ts +0 -1611
  387. package/dist/opportunities/opportunity.graph.discovery-strategies.d.ts +0 -109
  388. package/dist/opportunities/opportunity.graph.discovery-strategies.js +0 -451
  389. package/dist/opportunities/opportunity.graph.discovery.d.ts +0 -69
  390. package/dist/opportunities/opportunity.graph.discovery.js +0 -397
  391. package/dist/opportunities/opportunity.graph.evaluation.d.ts +0 -82
  392. package/dist/opportunities/opportunity.graph.evaluation.js +0 -608
  393. package/dist/opportunities/opportunity.graph.js +0 -193
  394. package/dist/opportunities/opportunity.graph.modes.d.ts +0 -538
  395. package/dist/opportunities/opportunity.graph.modes.js +0 -538
  396. package/dist/opportunities/opportunity.graph.negotiate.d.ts +0 -109
  397. package/dist/opportunities/opportunity.graph.negotiate.js +0 -392
  398. package/dist/opportunities/opportunity.graph.persist-node.d.ts +0 -93
  399. package/dist/opportunities/opportunity.graph.persist-node.js +0 -765
  400. package/dist/opportunities/opportunity.graph.prep.d.ts +0 -150
  401. package/dist/opportunities/opportunity.graph.prep.js +0 -381
  402. package/dist/opportunities/opportunity.graph.shared.d.ts +0 -173
  403. package/dist/opportunities/opportunity.graph.shared.js +0 -199
  404. package/dist/opportunities/opportunity.introducer-feature.d.ts +0 -2
  405. package/dist/opportunities/opportunity.introducer-feature.js +0 -4
  406. package/dist/opportunities/opportunity.introducer.d.ts +0 -77
  407. package/dist/opportunities/opportunity.introducer.js +0 -99
  408. package/dist/opportunities/opportunity.labels.js +0 -10
  409. package/dist/opportunities/opportunity.lifecycle.d.ts +0 -63
  410. package/dist/opportunities/opportunity.lifecycle.js +0 -181
  411. package/dist/opportunities/opportunity.module.d.ts +0 -54
  412. package/dist/opportunities/opportunity.module.js +0 -39
  413. package/dist/opportunities/opportunity.newborn-stamping.d.ts +0 -41
  414. package/dist/opportunities/opportunity.newborn-stamping.js +0 -81
  415. package/dist/opportunities/opportunity.owner-approval.d.ts +0 -118
  416. package/dist/opportunities/opportunity.owner-approval.js +0 -34
  417. package/dist/opportunities/opportunity.owner-provenance.d.ts +0 -6
  418. package/dist/opportunities/opportunity.owner-provenance.js +0 -28
  419. package/dist/opportunities/opportunity.persist.d.ts +0 -58
  420. package/dist/opportunities/opportunity.persist.js +0 -145
  421. package/dist/opportunities/opportunity.persistence-admission.d.ts +0 -39
  422. package/dist/opportunities/opportunity.persistence-admission.js +0 -59
  423. package/dist/opportunities/opportunity.state.d.ts +0 -451
  424. package/dist/opportunities/opportunity.state.js +0 -256
  425. package/dist/opportunities/opportunity.tools.cards.d.ts +0 -138
  426. package/dist/opportunities/opportunity.tools.cards.js +0 -212
  427. package/dist/opportunities/opportunity.tools.d.ts +0 -12
  428. package/dist/opportunities/opportunity.tools.js +0 -236
  429. package/dist/opportunities/opportunity.tools.list.d.ts +0 -10
  430. package/dist/opportunities/opportunity.tools.list.js +0 -489
  431. package/dist/opportunities/opportunity.tools.port.d.ts +0 -16
  432. package/dist/opportunities/opportunity.utils.d.ts +0 -217
  433. package/dist/opportunities/opportunity.utils.js +0 -395
  434. package/dist/opportunities/outcome/outcome.env.d.ts +0 -60
  435. package/dist/opportunities/outcome/outcome.env.js +0 -63
  436. package/dist/opportunities/outcome/outcome.hypotheses.d.ts +0 -29
  437. package/dist/opportunities/outcome/outcome.hypotheses.js +0 -117
  438. package/dist/opportunities/outcome/outcome.shadow.d.ts +0 -56
  439. package/dist/opportunities/outcome/outcome.shadow.js +0 -87
  440. package/dist/opportunities/outcome/outcome.types.d.ts +0 -110
  441. package/dist/opportunities/outcome/outcome.types.js +0 -26
  442. package/dist/opportunities/radar/radar.health.d.ts +0 -31
  443. package/dist/opportunities/radar/radar.health.js +0 -75
  444. package/dist/premises/premise.analyzer.d.ts +0 -35
  445. package/dist/premises/premise.analyzer.js +0 -115
  446. package/dist/premises/premise.decomposer.d.ts +0 -69
  447. package/dist/premises/premise.decomposer.js +0 -213
  448. package/dist/premises/premise.graph.d.ts +0 -345
  449. package/dist/premises/premise.graph.js +0 -278
  450. package/dist/premises/premise.indexer.d.ts +0 -35
  451. package/dist/premises/premise.indexer.js +0 -86
  452. package/dist/premises/premise.state.d.ts +0 -67
  453. package/dist/premises/premise.state.js +0 -94
  454. package/dist/premises/premise.tools.d.ts +0 -3
  455. package/dist/premises/premise.tools.js +0 -248
  456. package/dist/questions/question.env.d.ts +0 -27
  457. package/dist/questions/question.env.js +0 -27
  458. package/dist/questions/question.input.d.ts +0 -107
  459. package/dist/questions/question.module.d.ts +0 -30
  460. package/dist/questions/question.module.js +0 -28
  461. package/dist/questions/question.schema.d.ts +0 -1529
  462. package/dist/questions/question.schema.js +0 -420
  463. package/dist/shared/agent/activity-projection.d.ts +0 -271
  464. package/dist/shared/agent/activity-projection.js +0 -254
  465. package/dist/shared/agent/canonical-guidance.d.ts +0 -30
  466. package/dist/shared/agent/canonical-guidance.js +0 -246
  467. package/dist/shared/agent/model.resolver.d.ts +0 -48
  468. package/dist/shared/agent/tool.factory.d.ts +0 -17
  469. package/dist/shared/agent/tool.factory.js +0 -221
  470. package/dist/shared/agent/tool.helpers.d.ts +0 -482
  471. package/dist/shared/agent/tool.helpers.js +0 -232
  472. package/dist/shared/agent/tool.registry.d.ts +0 -25
  473. package/dist/shared/agent/tool.registry.js +0 -76
  474. package/dist/shared/agent/tool.runtime.d.ts +0 -28
  475. package/dist/shared/agent/tool.runtime.js +0 -194
  476. package/dist/shared/agent/tool.scope.d.ts +0 -44
  477. package/dist/shared/agent/tool.scope.js +0 -50
  478. package/dist/shared/agent/utility.tools.d.ts +0 -15
  479. package/dist/shared/agent/utility.tools.js +0 -322
  480. package/dist/shared/assignment/network-assignment.policy.d.ts +0 -61
  481. package/dist/shared/assignment/network-assignment.policy.js +0 -105
  482. package/dist/shared/interfaces/agent-dispatcher.interface.d.ts +0 -100
  483. package/dist/shared/interfaces/agent-dispatcher.interface.js +0 -12
  484. package/dist/shared/interfaces/auth.interface.d.ts +0 -37
  485. package/dist/shared/interfaces/auth.interface.js +0 -1
  486. package/dist/shared/interfaces/chat-message-writer.interface.d.ts +0 -18
  487. package/dist/shared/interfaces/chat-message-writer.interface.js +0 -1
  488. package/dist/shared/interfaces/chat-session.interface.d.ts +0 -23
  489. package/dist/shared/interfaces/chat-session.interface.js +0 -18
  490. package/dist/shared/interfaces/chat-summary.interface.d.ts +0 -16
  491. package/dist/shared/interfaces/chat-summary.interface.js +0 -1
  492. package/dist/shared/interfaces/database.capabilities.d.ts +0 -100
  493. package/dist/shared/interfaces/database.interface.d.ts +0 -16
  494. package/dist/shared/interfaces/database.member-queries.d.ts +0 -219
  495. package/dist/shared/interfaces/database.member-queries.js +0 -4
  496. package/dist/shared/interfaces/database.negotiation.d.ts +0 -329
  497. package/dist/shared/interfaces/database.negotiation.js +0 -26
  498. package/dist/shared/interfaces/database.network-queries.js +0 -4
  499. package/dist/shared/interfaces/database.opportunity-queries.js +0 -4
  500. package/dist/shared/interfaces/delivery-ledger.interface.d.ts +0 -40
  501. package/dist/shared/interfaces/delivery-ledger.interface.js +0 -5
  502. package/dist/shared/interfaces/embedder.interface.d.ts +0 -92
  503. package/dist/shared/interfaces/embedder.interface.js +0 -4
  504. package/dist/shared/interfaces/enrichment-run.interface.d.ts +0 -62
  505. package/dist/shared/interfaces/enrichment-run.interface.js +0 -1
  506. package/dist/shared/interfaces/enrichment.interface.js +0 -1
  507. package/dist/shared/interfaces/negotiation-events.interface.d.ts +0 -77
  508. package/dist/shared/interfaces/negotiation-events.interface.js +0 -6
  509. package/dist/shared/interfaces/negotiation-summary.interface.d.ts +0 -25
  510. package/dist/shared/interfaces/negotiation-summary.interface.js +0 -1
  511. package/dist/shared/interfaces/negotiator-memory.interface.d.ts +0 -58
  512. package/dist/shared/interfaces/negotiator-memory.interface.js +0 -11
  513. package/dist/shared/interfaces/queue.interface.d.ts +0 -23
  514. package/dist/shared/interfaces/queue.interface.js +0 -4
  515. package/dist/shared/interfaces/scraper.interface.js +0 -1
  516. package/dist/shared/interfaces/tool-request-context.interface.d.ts +0 -11
  517. package/dist/shared/interfaces/tool-request-context.interface.js +0 -1
  518. package/dist/shared/observability/request-context.d.ts +0 -27
  519. package/dist/shared/observability/request-context.js +0 -6
  520. package/dist/shared/schemas/mcp-auth.schema.d.ts +0 -87
  521. package/dist/shared/schemas/mcp-auth.schema.js +0 -56
  522. package/dist/shared/schemas/negotiation-digest.schema.d.ts +0 -58
  523. package/dist/shared/schemas/negotiation-digest.schema.js +0 -38
  524. package/dist/shared/schemas/negotiation-state.schema.d.ts +0 -343
  525. package/dist/shared/schemas/negotiation-state.schema.js +0 -81
  526. package/dist/shared/schemas/question-block.fixture.d.ts +0 -12
  527. package/dist/shared/schemas/question-block.fixture.js +0 -39
  528. package/dist/shared/schemas/question-block.schema.d.ts +0 -111
  529. package/dist/shared/schemas/question-block.schema.js +0 -124
  530. package/dist/shared/schemas/structured-question.schema.d.ts +0 -66
  531. package/dist/shared/schemas/structured-question.schema.js +0 -31
  532. package/dist/shared/schemas/underspecification.schema.d.ts +0 -13
  533. package/dist/shared/schemas/underspecification.schema.js +0 -16
  534. /package/dist/{opportunities → internal/opportunities}/opportunity.update-admission.js +0 -0
  535. /package/dist/{opportunities → internal/opportunities}/radar/radar.state.js +0 -0
  536. /package/dist/{shared → internal/shared}/network/metadata.renderer.d.ts +0 -0
  537. /package/dist/{shared → internal/shared}/network/metadata.renderer.js +0 -0
  538. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.d.ts +0 -0
  539. /package/dist/{shared → internal/shared}/observability/debug-meta.sanitizer.js +0 -0
  540. /package/dist/{shared → internal/shared}/observability/performance.d.ts +0 -0
  541. /package/dist/{shared → internal/shared}/observability/performance.js +0 -0
  542. /package/dist/{shared → internal/shared}/observability/trace.d.ts +0 -0
  543. /package/dist/{shared → internal/shared}/observability/trace.js +0 -0
  544. /package/dist/{shared → internal/shared}/utils/claim-safety.d.ts +0 -0
  545. /package/dist/{shared → internal/shared}/utils/claim-safety.js +0 -0
  546. /package/dist/{shared → internal/shared}/utils/telegram-handle.d.ts +0 -0
  547. /package/dist/{shared → internal/shared}/utils/telegram-handle.js +0 -0
  548. /package/dist/{shared/interfaces/database.capabilities.js → platform/database/capabilities.js} +0 -0
  549. /package/dist/{shared/interfaces/database.entities.js → platform/database/entities.js} +0 -0
  550. /package/dist/{shared/interfaces/database.identity-queries.js → platform/database/identity-queries.js} +0 -0
  551. /package/dist/{agents/agent.dispatcher.port.js → platform/database/negotiation.js} +0 -0
  552. /package/dist/{chat/chat.persona.js → platform/database/opportunity-queries.js} +0 -0
  553. /package/dist/{contexts/context.tools.port.js → platform/discovery/embedder.js} +0 -0
  554. /package/dist/{shared/interfaces/scraper.interface.d.ts → platform/discovery/scraper.d.ts} +0 -0
  555. /package/dist/{negotiations/negotiation.deadlock.contracts.js → platform/discovery/scraper.js} +0 -0
  556. /package/dist/{shared/interfaces/enrichment.interface.d.ts → platform/enrichment/ports.d.ts} +0 -0
  557. /package/dist/{negotiations/negotiation.tools.port.js → platform/enrichment/ports.js} +0 -0
  558. /package/dist/{opportunities/opportunity.tools.port.js → platform/runtime/observability.js} +0 -0
  559. /package/dist/{questions/question.input.js → protocol/core.js} +0 -0
  560. /package/dist/{shared → protocol}/schemas/chat-context.schema.d.ts +0 -0
  561. /package/dist/{shared → protocol}/schemas/chat-context.schema.js +0 -0
@@ -1,417 +0,0 @@
1
- /**
2
- * Enrichment tools that create or update a user context.
3
- */
4
- import { z } from "zod";
5
- import { requestContext } from "../shared/observability/request-context.js";
6
- import { success, error, needsClarification } from "../shared/agent/tool.helpers.js";
7
- import { detectSocialLabel } from "../shared/utils/social-label.js";
8
- import { invokeWithAbortSignal } from "../shared/agent/model-signal.js";
9
- import { enqueueEnrichmentRun, enrichFromUserRecord, isMeaningfulEnrichment, logger, markApprovedProfileConfirmed, mergeUserSocials, socialsRecordToRows } from "./enrichment.tools.helpers.js";
10
- export function createUserContextWriteTools(defineTool, deps) {
11
- const { userDb, systemDb, graphs, enricher, grantDefaultSystemPermissions, reportToolError, getUserContextText } = deps;
12
- const createUserContext = defineTool({
13
- name: "create_user_context",
14
- description: "Legacy/backward-compatible tool that creates or regenerates the authenticated user's profile. Prefer " +
15
- "preview_user_context → confirm_user_context so the draft is shown before saving. " +
16
- "Profiles are essential for discovery — they provide the semantic context used to match users with complementary intents.\n\n" +
17
- "**How it works:** For generic clients, the system can enrich profile data from public web sources (LinkedIn, GitHub, Twitter) and/or explicit user input, " +
18
- "then generates a structured profile with bio, skills, interests, location, and narrative context.\n\n" +
19
- "**Usage patterns:**\n" +
20
- "- No args: attempts auto-generation from account data. If insufficient info, returns `missingFields` — ask the user for name/social URLs and retry.\n" +
21
- "- With social URLs (linkedinUrl, githubUrl, etc.): enriches from those specific URLs.\n" +
22
- "- With bioOrDescription: creates profile from explicit text only (no web scraping).\n" +
23
- "- First call may return a preview. Prefer preview_user_context instead because it does not persist enrichment side effects.\n\n" +
24
- "**Returns:** The generated profile (name, bio, location, skills, interests) or a `needsClarification` response listing missing fields.\n\n" +
25
- "**Next steps:** After profile creation, the user can create intents (create_intent) and join indexes (create_network_membership) to start discovering opportunities.",
26
- querySchema: z.object({
27
- name: z.string().optional().describe("User's full name (first and last). Pass when the user explicitly provides their name."),
28
- linkedinUrl: z.string().optional().describe("LinkedIn profile URL (e.g. 'https://linkedin.com/in/username'). Pass when user shares a LinkedIn link."),
29
- githubUrl: z.string().optional().describe("GitHub profile URL (e.g. 'https://github.com/username'). Pass when user shares a GitHub link."),
30
- twitterUrl: z.string().optional().describe("X/Twitter profile URL (e.g. 'https://x.com/username'). Pass when user shares a Twitter/X link."),
31
- websites: z.array(z.string()).optional().describe("Personal or portfolio website URLs. Pass when user shares website links."),
32
- location: z.string().optional().describe("User's location (e.g. 'Berlin, Germany' or 'SF Bay Area'). Pass when the user mentions where they are based."),
33
- bioOrDescription: z.string().optional().describe("Explicit profile text from the user (e.g. 'software engineer focused on AI/ML, based in SF'). When provided, creates/updates profile from this text only — no web scraping. Use when user describes themselves in chat."),
34
- confirm: z.boolean().optional().describe("Set to true to save a previously previewed profile after the user approves the preview."),
35
- }),
36
- handler: async ({ context, query }) => {
37
- // Persist user-info fields (name, location, socials) to users table before any branching.
38
- // This ensures users.name is always updated regardless of which code path runs.
39
- // Trim all string fields to avoid persisting whitespace-only values.
40
- const name = query.name?.trim();
41
- const location = query.location?.trim();
42
- const linkedinUrl = query.linkedinUrl?.trim();
43
- const githubUrl = query.githubUrl?.trim();
44
- const twitterUrl = query.twitterUrl?.trim();
45
- const websites = query.websites?.map((url) => url.trim()).filter(Boolean);
46
- const hasSocialsFromQuery = Boolean(linkedinUrl || githubUrl || twitterUrl || websites?.length);
47
- if (name || location) {
48
- await userDb.updateUser({
49
- ...(name ? { name } : {}),
50
- ...(location ? { location } : {}),
51
- });
52
- }
53
- if (hasSocialsFromQuery) {
54
- const newSocials = [];
55
- if (linkedinUrl)
56
- newSocials.push({ label: 'linkedin', value: linkedinUrl });
57
- if (githubUrl)
58
- newSocials.push({ label: 'github', value: githubUrl });
59
- if (twitterUrl)
60
- newSocials.push({ label: 'twitter', value: twitterUrl });
61
- if (websites?.length) {
62
- for (const w of websites)
63
- newSocials.push({ label: detectSocialLabel(w), value: w });
64
- }
65
- await mergeUserSocials(deps, newSocials);
66
- }
67
- logger.verbose("Persisted user-info fields to user record", { userId: context.userId });
68
- const isOnboarding = !(context.user.onboarding?.completedAt);
69
- if (isOnboarding) {
70
- // "Already enriched?" must key on a real enrichment signal, not getProfile():
71
- // post-WS11 getProfile() returns a presentation row for EVERY existing user, so
72
- // it would always short-circuit onboarding and refuse to enrich. The global
73
- // user_context is the canonical signal (non-empty <=> the user has premises /
74
- // has been enriched), mirroring findWithGraph's `hasProfile`.
75
- const existingContext = getUserContextText
76
- ? (await getUserContextText(context.userId)).trim()
77
- : '';
78
- if (existingContext) {
79
- const existingProfile = await userDb.getProfile();
80
- return success({
81
- alreadyExists: true,
82
- message: context.isMcp
83
- ? "Profile already exists. If they want changes, use create_user_context(bioOrDescription=\"...\", confirm=true)."
84
- : "Profile already exists. If the user confirmed it, call complete_onboarding() to finish setup. If they want changes, use create_user_context(bioOrDescription=\"...\", confirm=true).",
85
- ...(existingProfile
86
- ? {
87
- profile: {
88
- name: existingProfile.identity.name,
89
- bio: existingProfile.identity.bio,
90
- location: existingProfile.identity.location,
91
- },
92
- }
93
- : {}),
94
- });
95
- }
96
- // Preview mode: enrich and persist enrichment results, but don't generate full profile
97
- if (!query.confirm) {
98
- try {
99
- const user = await userDb.getUser();
100
- const enrichment = user ? await enrichFromUserRecord(deps, user) : null;
101
- if (isMeaningfulEnrichment(enrichment)) {
102
- // Persist enrichment data to user record so confirm path has it
103
- const updatePayload = {};
104
- if (enrichment.identity.name?.trim()) {
105
- updatePayload.name = enrichment.identity.name.trim();
106
- }
107
- if (enrichment.identity.bio?.trim())
108
- updatePayload.intro = enrichment.identity.bio.trim();
109
- if (enrichment.identity.location?.trim())
110
- updatePayload.location = enrichment.identity.location.trim();
111
- if (Object.keys(updatePayload).length > 0)
112
- await userDb.updateUser(updatePayload);
113
- const enrichedSocials = [];
114
- if (enrichment.socials.twitter)
115
- enrichedSocials.push({ label: 'twitter', value: enrichment.socials.twitter });
116
- if (enrichment.socials.linkedin)
117
- enrichedSocials.push({ label: 'linkedin', value: enrichment.socials.linkedin });
118
- if (enrichment.socials.github)
119
- enrichedSocials.push({ label: 'github', value: enrichment.socials.github });
120
- if (enrichment.socials.telegram)
121
- enrichedSocials.push({ label: 'telegram', value: enrichment.socials.telegram });
122
- if (enrichment.socials.websites?.length) {
123
- for (const w of enrichment.socials.websites)
124
- enrichedSocials.push({ label: 'custom', value: w });
125
- }
126
- if (enrichedSocials.length > 0) {
127
- await mergeUserSocials(deps, enrichedSocials);
128
- }
129
- return success({
130
- preview: true,
131
- message: "Profile preview generated. Call create_user_context(confirm=true) to save.",
132
- profile: {
133
- name: enrichment.identity.name,
134
- bio: enrichment.identity.bio,
135
- location: enrichment.identity.location,
136
- skills: enrichment.attributes.skills,
137
- interests: enrichment.attributes.interests,
138
- },
139
- // Always present when isMeaningfulEnrichment passes — may be {} if the
140
- // enrichment found no social handles. LLM should ask the user to provide
141
- // links when empty (see buildOnboarding step 3 in chat.prompt.ts).
142
- detectedSocials: enrichment.socials,
143
- });
144
- }
145
- }
146
- catch (err) {
147
- logger.warn("Enrichment preview failed", {
148
- error: err instanceof Error ? err.message : String(err),
149
- });
150
- }
151
- return needsClarification({
152
- missingFields: ['bio_or_social_urls'],
153
- message: "I couldn't find enough public info. Could you share a short description of yourself, or a LinkedIn/GitHub/X profile link?",
154
- });
155
- }
156
- // Confirm mode: invoke graph in generate mode (enrichment data already persisted during preview)
157
- // Do NOT re-run enrichFromUserRecord — the graph's autoGenerateNode handles enrichment
158
- // from the (now well-populated) user record, avoiding non-deterministic drift.
159
- try {
160
- const _confirmGraphStart = Date.now();
161
- const _confirmTraceEmitter = requestContext.getStore()?.traceEmitter;
162
- _confirmTraceEmitter?.({ type: "graph_start", name: "enrichment" });
163
- const result = await invokeWithAbortSignal(graphs.profile, {
164
- userId: context.userId,
165
- operationMode: 'generate',
166
- });
167
- const _confirmGraphMs = Date.now() - _confirmGraphStart;
168
- _confirmTraceEmitter?.({ type: "graph_end", name: "enrichment", durationMs: _confirmGraphMs });
169
- if (result.error)
170
- return error(result.error);
171
- if (result.profile) {
172
- await markApprovedProfileConfirmed(deps, context);
173
- return success({
174
- created: true,
175
- message: "Profile saved.",
176
- profile: {
177
- name: result.profile.identity.name,
178
- bio: result.profile.identity.bio,
179
- location: result.profile.identity.location,
180
- skills: result.profile.attributes.skills,
181
- interests: result.profile.attributes.interests,
182
- },
183
- _graphTimings: [{ name: 'enrichment', durationMs: _confirmGraphMs, agents: result.agentTimings ?? [] }],
184
- });
185
- }
186
- }
187
- catch (err) {
188
- logger.warn("Profile generation on confirm failed, falling back to full graph", {
189
- error: err instanceof Error ? err.message : String(err),
190
- });
191
- }
192
- // Fallback: graph invocation failed on confirm, fall through to full graph invocation
193
- }
194
- const hasBioOrDescription = !!query.bioOrDescription?.trim();
195
- if (hasBioOrDescription) {
196
- // Create/update profile from user's explicit text only; do not persist to user record
197
- // Include name and location in the input if provided so the EnrichmentGenerator can use them
198
- const inputParts = [];
199
- if (name)
200
- inputParts.push(`Name: ${name}`);
201
- if (location)
202
- inputParts.push(`Location: ${location}`);
203
- inputParts.push(query.bioOrDescription.trim());
204
- const profileInput = inputParts.join('\n');
205
- const _bioProfileGraphStart = Date.now();
206
- const _bioProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
207
- _bioProfileTraceEmitter?.({ type: "graph_start", name: "enrichment" });
208
- const result = await invokeWithAbortSignal(graphs.profile, {
209
- userId: context.userId,
210
- operationMode: 'write',
211
- input: profileInput,
212
- forceUpdate: true,
213
- });
214
- const _bioProfileGraphMs = Date.now() - _bioProfileGraphStart;
215
- _bioProfileTraceEmitter?.({ type: "graph_end", name: "enrichment", durationMs: _bioProfileGraphMs });
216
- if (result.error) {
217
- return error(result.error);
218
- }
219
- if (result.profile) {
220
- if (isOnboarding && query.confirm)
221
- await markApprovedProfileConfirmed(deps, context);
222
- return success({
223
- created: true,
224
- message: "Profile created/updated with the information you provided.",
225
- profile: {
226
- name: result.profile.identity.name,
227
- bio: result.profile.identity.bio,
228
- location: result.profile.identity.location,
229
- skills: result.profile.attributes.skills,
230
- interests: result.profile.attributes.interests,
231
- },
232
- _graphTimings: [{ name: 'enrichment', durationMs: _bioProfileGraphMs, agents: result.agentTimings ?? [] }],
233
- });
234
- }
235
- if (isOnboarding && query.confirm)
236
- await markApprovedProfileConfirmed(deps, context);
237
- return success({
238
- created: true,
239
- message: "Profile created/updated with the information you provided.",
240
- _graphTimings: [{ name: 'enrichment', durationMs: _bioProfileGraphMs, agents: result.agentTimings ?? [] }],
241
- });
242
- }
243
- // Invoke profile graph in generate mode (uses enrichUserProfile Chat API)
244
- const _generateProfileGraphStart = Date.now();
245
- const _generateProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
246
- _generateProfileTraceEmitter?.({ type: "graph_start", name: "enrichment" });
247
- const result = await invokeWithAbortSignal(graphs.profile, {
248
- userId: context.userId,
249
- operationMode: 'generate',
250
- forceUpdate: true,
251
- });
252
- const _generateProfileGraphMs = Date.now() - _generateProfileGraphStart;
253
- _generateProfileTraceEmitter?.({ type: "graph_end", name: "enrichment", durationMs: _generateProfileGraphMs });
254
- // If user info is insufficient, ask conversationally
255
- if (result.needsUserInfo) {
256
- return needsClarification({
257
- missingFields: result.missingUserInfo || ['social_urls', 'full_name'],
258
- message: "I need a bit more information to create your profile. Could you share your full name and any social links (LinkedIn, GitHub, or X/Twitter)?",
259
- });
260
- }
261
- if (result.error) {
262
- return error(result.error);
263
- }
264
- if (result.profile) {
265
- if (isOnboarding && query.confirm)
266
- await markApprovedProfileConfirmed(deps, context);
267
- return success({
268
- created: true,
269
- message: "Profile generated from your account data.",
270
- profile: {
271
- name: result.profile.identity.name,
272
- bio: result.profile.identity.bio,
273
- location: result.profile.identity.location,
274
- skills: result.profile.attributes.skills,
275
- interests: result.profile.attributes.interests,
276
- },
277
- _graphTimings: [{ name: 'enrichment', durationMs: _generateProfileGraphMs, agents: result.agentTimings ?? [] }],
278
- });
279
- }
280
- return error("Failed to create profile. Please try again.");
281
- },
282
- });
283
- const updateUserContext = defineTool({
284
- name: "update_user_context",
285
- description: "Updates the authenticated user's existing profile using a verb-style instruction interface.\n\n" +
286
- "**How to use it:**\n" +
287
- "- `action`: a natural-language instruction describing what to change (e.g. \"add interests\", \"update bio\", \"remove skill\", \"set location\").\n" +
288
- "- `details`: the content to apply (e.g. \"procedural generation, roguelikes, narrative games\").\n" +
289
- "- `socials`: optional social handles to merge into the user's reachable profile (e.g. `{ telegram: \"@alice\" }`).\n\n" +
290
- "**Examples:**\n" +
291
- "- `action=\"add interests\"`, `details=\"procedural generation, roguelikes\"`\n" +
292
- "- `action=\"update bio\"`, `details=\"Product designer focused on desktop CRPG interfaces\"`\n" +
293
- "- `action=\"set location\"`, `details=\"Berlin\"`\n" +
294
- "- `action=\"remove all mentions of X\"` — existing profile facts matching X are retracted; the profile text regenerates without them shortly after.\n" +
295
- "- `socials={ telegram: \"@alice\" }` to silently add a reachable chat handle without regenerating the profile.\n\n" +
296
- "**When to use:** When the user wants to make specific changes without regenerating the whole profile. For full profile regeneration from social URLs, use create_user_context instead.\n\n" +
297
- "**Important:** If the user provides a URL to update from, call scrape_url first, then pass the scraped content in `details`.\n\n" +
298
- "**MCP behavior:** For MCP clients, text/profile graph updates are accepted immediately and completed in the background to avoid transport timeouts. Social-only updates still complete synchronously.\n\n" +
299
- "**Returns:** Confirmation that the profile was updated or accepted for background update.",
300
- querySchema: z.object({
301
- profileId: z.string().optional().describe("Profile UUID from read_user_contexts. Omit to update the current user's own profile (most common usage)."),
302
- action: z.string().optional().describe("Natural language description of ALL changes to make in a single call. Examples: 'update bio to focus on AI research', 'add Python and Rust to skills', 'change location to Berlin and add machine learning to interests'. Optional when only updating socials."),
303
- details: z.string().optional().describe("Additional context or content to incorporate. Use this to pass scraped URL content (from scrape_url) or longer text the user provided."),
304
- socials: z.record(z.string()).optional().describe("Social handles or URLs to merge into the user profile, keyed by label. Example: { telegram: '@alice', github: 'alice' }. Existing socials with other labels are preserved."),
305
- }),
306
- handler: async ({ context, query }) => {
307
- const socialUpdates = socialsRecordToRows(query.socials);
308
- const inputForProfile = [query.action, query.details].filter(Boolean).join("\n");
309
- if (!inputForProfile.trim()) {
310
- if (socialUpdates.length > 0) {
311
- await mergeUserSocials(deps, socialUpdates);
312
- return success({ message: "Profile socials updated." });
313
- }
314
- return error("Please specify what to update (e.g. action: 'update bio to X') or provide socials.");
315
- }
316
- const profileRunId = await enqueueEnrichmentRun(deps, context, "update_user_context", query);
317
- if (profileRunId) {
318
- return success({
319
- status: "queued",
320
- profileRunId,
321
- message: `Profile update started. Call get_enrichment_run with profileRunId="${profileRunId}" until it succeeds, fails, or is cancelled.`,
322
- });
323
- }
324
- // Use profileGraph query mode to validate profile existence and get id
325
- const _updateQueryProfileGraphStart = Date.now();
326
- const _updateQueryProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
327
- _updateQueryProfileTraceEmitter?.({ type: "graph_start", name: "enrichment" });
328
- const queryResult = await invokeWithAbortSignal(graphs.profile, { userId: context.userId, operationMode: 'query' });
329
- const _updateQueryProfileGraphMs = Date.now() - _updateQueryProfileGraphStart;
330
- _updateQueryProfileTraceEmitter?.({ type: "graph_end", name: "enrichment", durationMs: _updateQueryProfileGraphMs });
331
- if (!queryResult.readResult?.hasProfile && !queryResult.profile) {
332
- return error("You don't have a profile yet. Use create_user_context first.");
333
- }
334
- const existingProfileId = queryResult.readResult?.profile?.id;
335
- const providedProfileId = query.profileId?.trim();
336
- if (providedProfileId && existingProfileId && providedProfileId !== existingProfileId) {
337
- return error("Invalid profileId. Use the profile id from read_user_contexts.");
338
- }
339
- if (socialUpdates.length > 0) {
340
- await mergeUserSocials(deps, socialUpdates);
341
- }
342
- if (context.isMcp) {
343
- const _backgroundWriteProfileGraphStart = Date.now();
344
- const _backgroundWriteProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
345
- _backgroundWriteProfileTraceEmitter?.({ type: "graph_start", name: "enrichment" });
346
- graphs.profile.invoke({
347
- userId: context.userId,
348
- operationMode: "write",
349
- input: inputForProfile,
350
- forceUpdate: true,
351
- }).then((writeResult) => {
352
- if (writeResult.error) {
353
- logger.error("Background profile update failed", {
354
- userId: context.userId,
355
- error: writeResult.error,
356
- });
357
- reportToolError?.(new Error(writeResult.error), {
358
- subsystem: "enrichment",
359
- operation: "profile.update_background",
360
- toolName: "update_user_context",
361
- userId: context.userId,
362
- tags: { toolName: "update_user_context", execution: "background" },
363
- context: { profileId: existingProfileId ?? providedProfileId },
364
- });
365
- }
366
- }).catch((err) => {
367
- const message = err instanceof Error ? err.message : String(err);
368
- logger.error("Background profile update failed", {
369
- userId: context.userId,
370
- error: message,
371
- });
372
- reportToolError?.(err, {
373
- subsystem: "enrichment",
374
- operation: "profile.update_background",
375
- toolName: "update_user_context",
376
- userId: context.userId,
377
- tags: { toolName: "update_user_context", execution: "background" },
378
- context: { profileId: existingProfileId ?? providedProfileId },
379
- });
380
- }).finally(() => {
381
- const _backgroundWriteProfileGraphMs = Date.now() - _backgroundWriteProfileGraphStart;
382
- _backgroundWriteProfileTraceEmitter?.({ type: "graph_end", name: "enrichment", durationMs: _backgroundWriteProfileGraphMs });
383
- });
384
- return success({
385
- accepted: true,
386
- message: "Profile update accepted. The structured profile will refresh in the background.",
387
- _graphTimings: [
388
- { name: 'enrichment', durationMs: _updateQueryProfileGraphMs, agents: queryResult.agentTimings ?? [] },
389
- ],
390
- });
391
- }
392
- // Execute update directly
393
- const _updateWriteProfileGraphStart = Date.now();
394
- const _updateWriteProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
395
- _updateWriteProfileTraceEmitter?.({ type: "graph_start", name: "enrichment" });
396
- const _writeResult = await invokeWithAbortSignal(graphs.profile, {
397
- userId: context.userId,
398
- operationMode: "write",
399
- input: inputForProfile,
400
- forceUpdate: true,
401
- });
402
- const _updateWriteProfileGraphMs = Date.now() - _updateWriteProfileGraphStart;
403
- _updateWriteProfileTraceEmitter?.({ type: "graph_end", name: "enrichment", durationMs: _updateWriteProfileGraphMs });
404
- if (_writeResult.error) {
405
- return error(_writeResult.error);
406
- }
407
- return success({
408
- message: "Profile updated.",
409
- _graphTimings: [
410
- { name: 'enrichment', durationMs: _updateQueryProfileGraphMs, agents: queryResult.agentTimings ?? [] },
411
- { name: 'enrichment', durationMs: _updateWriteProfileGraphMs, agents: _writeResult.agentTimings ?? [] },
412
- ],
413
- });
414
- },
415
- });
416
- return { createUserContext, updateUserContext };
417
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * The enrichment tool registry.
3
- *
4
- * The user-context read and write tools live in sibling modules and the shared
5
- * helpers in `enrichment.tools.helpers.ts`; this file owns the enrichment-run
6
- * and onboarding tools and assembles the registry.
7
- */
8
- import type { DefineTool } from "../shared/agent/tool.helpers.js";
9
- import type { EnrichmentToolDeps } from "../contexts/context.tools.port.js";
10
- import type { ToolSurface } from "../shared/agent/utility.tools.js";
11
- export declare function createEnrichmentTools(defineTool: DefineTool, deps: EnrichmentToolDeps, options?: {
12
- surface?: ToolSurface;
13
- }): readonly [any, any, any, any, any, any, any, any];
@@ -1,139 +0,0 @@
1
- /**
2
- * Helpers shared by the enrichment tools.
3
- *
4
- * These were nested functions inside `createEnrichmentTools`, closing over the
5
- * destructured host capabilities. They are top-level now, each taking the tool
6
- * deps explicitly, so the three tool modules can share them.
7
- */
8
- import { z } from "zod";
9
- import type { ResolvedToolContext } from "../shared/agent/tool.helpers.js";
10
- import type { EnrichmentToolDeps } from "../contexts/context.tools.port.js";
11
- import type { EnrichmentResult } from "../shared/interfaces/enrichment.interface.js";
12
- import type { OnboardingProfileSeed, OnboardingState, UserRecord } from "../shared/interfaces/database.interface.js";
13
- import type { EnrichmentRunInput, EnrichmentRunOperation } from "../shared/interfaces/enrichment-run.interface.js";
14
- export declare const logger: import("../shared/observability/log.js").LoggerWithSource;
15
- export declare function isMeaningfulEnrichment(enrichment: EnrichmentResult | null): enrichment is EnrichmentResult;
16
- export declare const approvedProfileDraftSchema: z.ZodObject<{
17
- identity: z.ZodObject<{
18
- name: z.ZodString;
19
- bio: z.ZodString;
20
- location: z.ZodString;
21
- }, "strip", z.ZodTypeAny, {
22
- name: string;
23
- bio: string;
24
- location: string;
25
- }, {
26
- name: string;
27
- bio: string;
28
- location: string;
29
- }>;
30
- narrative: z.ZodObject<{
31
- context: z.ZodString;
32
- }, "strip", z.ZodTypeAny, {
33
- context: string;
34
- }, {
35
- context: string;
36
- }>;
37
- attributes: z.ZodObject<{
38
- interests: z.ZodArray<z.ZodString, "many">;
39
- skills: z.ZodArray<z.ZodString, "many">;
40
- }, "strip", z.ZodTypeAny, {
41
- skills: string[];
42
- interests: string[];
43
- }, {
44
- skills: string[];
45
- interests: string[];
46
- }>;
47
- }, "strip", z.ZodTypeAny, {
48
- identity: {
49
- name: string;
50
- bio: string;
51
- location: string;
52
- };
53
- narrative: {
54
- context: string;
55
- };
56
- attributes: {
57
- skills: string[];
58
- interests: string[];
59
- };
60
- }, {
61
- identity: {
62
- name: string;
63
- bio: string;
64
- location: string;
65
- };
66
- narrative: {
67
- context: string;
68
- };
69
- attributes: {
70
- skills: string[];
71
- interests: string[];
72
- };
73
- }>;
74
- type ApprovedProfileDraft = z.infer<typeof approvedProfileDraftSchema>;
75
- export declare function trimToUndefined(value: string | null | undefined): string | undefined;
76
- export declare function isPlaceholderName(value: string): boolean;
77
- export declare function enrichFromUserRecord(deps: EnrichmentToolDeps, user: {
78
- name?: string | null;
79
- email?: string | null;
80
- socials: Array<{
81
- id: string;
82
- userId: string;
83
- label: string;
84
- value: string;
85
- }>;
86
- }): Promise<EnrichmentResult | null>;
87
- export declare function selectProfileSeed(onboarding: OnboardingState | null | undefined, networkId?: string): OnboardingProfileSeed | undefined;
88
- export declare function normalizeSocialUpdate(label: string, value: string): {
89
- label: string;
90
- value: string;
91
- } | null;
92
- export declare function mergeUserSocials(deps: EnrichmentToolDeps, incoming: {
93
- label: string;
94
- value: string;
95
- }[]): Promise<void>;
96
- export declare function socialsRecordToRows(socials: Record<string, string> | undefined): {
97
- label: string;
98
- value: string;
99
- }[];
100
- export declare function enqueueEnrichmentRun(deps: EnrichmentToolDeps, context: ResolvedToolContext, operation: EnrichmentRunOperation, input: EnrichmentRunInput): Promise<string | null>;
101
- export declare function persistApprovedProfileContext(deps: EnrichmentToolDeps, profile: {
102
- identity: {
103
- name: string;
104
- bio: string;
105
- location: string;
106
- };
107
- }, user: UserRecord | null, networkId?: string): Promise<void>;
108
- export declare function markApprovedProfileConfirmed(deps: EnrichmentToolDeps, context: ResolvedToolContext): Promise<void>;
109
- export declare function buildProfileInput(parts: {
110
- name?: string;
111
- location?: string;
112
- bioOrDescription?: string;
113
- socials?: Array<{
114
- label: string;
115
- value: string;
116
- }>;
117
- }): string;
118
- export declare function toProfileSummary(profile: {
119
- identity: {
120
- name: string;
121
- bio: string;
122
- location: string;
123
- };
124
- attributes: {
125
- skills: string[];
126
- interests: string[];
127
- };
128
- }): {
129
- name: string;
130
- bio: string;
131
- location: string;
132
- skills: string[];
133
- interests: string[];
134
- };
135
- export declare function buildApprovedDraftProfileInput(draft: ApprovedProfileDraft): string;
136
- export declare function decomposeApprovedDraftProfile(deps: EnrichmentToolDeps, profile: ApprovedProfileDraft & {
137
- userId: string;
138
- }): Promise<void>;
139
- export {};