@indexnetwork/protocol 0.1.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 (365) hide show
  1. package/dist/agents/chat.agent.d.ts +218 -0
  2. package/dist/agents/chat.agent.d.ts.map +1 -0
  3. package/dist/agents/chat.agent.js +884 -0
  4. package/dist/agents/chat.agent.js.map +1 -0
  5. package/dist/agents/chat.prompt.d.ts +18 -0
  6. package/dist/agents/chat.prompt.d.ts.map +1 -0
  7. package/dist/agents/chat.prompt.js +372 -0
  8. package/dist/agents/chat.prompt.js.map +1 -0
  9. package/dist/agents/chat.prompt.modules.d.ts +61 -0
  10. package/dist/agents/chat.prompt.modules.d.ts.map +1 -0
  11. package/dist/agents/chat.prompt.modules.js +366 -0
  12. package/dist/agents/chat.prompt.modules.js.map +1 -0
  13. package/dist/agents/chat.title.generator.d.ts +20 -0
  14. package/dist/agents/chat.title.generator.d.ts.map +1 -0
  15. package/dist/agents/chat.title.generator.js +66 -0
  16. package/dist/agents/chat.title.generator.js.map +1 -0
  17. package/dist/agents/home.categorizer.d.ts +28 -0
  18. package/dist/agents/home.categorizer.d.ts.map +1 -0
  19. package/dist/agents/home.categorizer.js +170 -0
  20. package/dist/agents/home.categorizer.js.map +1 -0
  21. package/dist/agents/hyde.generator.d.ts +27 -0
  22. package/dist/agents/hyde.generator.d.ts.map +1 -0
  23. package/dist/agents/hyde.generator.js +75 -0
  24. package/dist/agents/hyde.generator.js.map +1 -0
  25. package/dist/agents/hyde.strategies.d.ts +17 -0
  26. package/dist/agents/hyde.strategies.d.ts.map +1 -0
  27. package/dist/agents/hyde.strategies.js +29 -0
  28. package/dist/agents/hyde.strategies.js.map +1 -0
  29. package/dist/agents/intent.clarifier.d.ts +29 -0
  30. package/dist/agents/intent.clarifier.d.ts.map +1 -0
  31. package/dist/agents/intent.clarifier.js +186 -0
  32. package/dist/agents/intent.clarifier.js.map +1 -0
  33. package/dist/agents/intent.indexer.d.ts +77 -0
  34. package/dist/agents/intent.indexer.d.ts.map +1 -0
  35. package/dist/agents/intent.indexer.js +164 -0
  36. package/dist/agents/intent.indexer.js.map +1 -0
  37. package/dist/agents/intent.inferrer.d.ts +95 -0
  38. package/dist/agents/intent.inferrer.d.ts.map +1 -0
  39. package/dist/agents/intent.inferrer.js +238 -0
  40. package/dist/agents/intent.inferrer.js.map +1 -0
  41. package/dist/agents/intent.reconciler.d.ts +106 -0
  42. package/dist/agents/intent.reconciler.d.ts.map +1 -0
  43. package/dist/agents/intent.reconciler.js +184 -0
  44. package/dist/agents/intent.reconciler.js.map +1 -0
  45. package/dist/agents/intent.verifier.d.ts +97 -0
  46. package/dist/agents/intent.verifier.d.ts.map +1 -0
  47. package/dist/agents/intent.verifier.js +234 -0
  48. package/dist/agents/intent.verifier.js.map +1 -0
  49. package/dist/agents/invite.generator.d.ts +47 -0
  50. package/dist/agents/invite.generator.d.ts.map +1 -0
  51. package/dist/agents/invite.generator.js +56 -0
  52. package/dist/agents/invite.generator.js.map +1 -0
  53. package/dist/agents/lens.inferrer.d.ts +37 -0
  54. package/dist/agents/lens.inferrer.d.ts.map +1 -0
  55. package/dist/agents/lens.inferrer.js +98 -0
  56. package/dist/agents/lens.inferrer.js.map +1 -0
  57. package/dist/agents/model.config.d.ts +120 -0
  58. package/dist/agents/model.config.d.ts.map +1 -0
  59. package/dist/agents/model.config.js +76 -0
  60. package/dist/agents/model.config.js.map +1 -0
  61. package/dist/agents/negotiation.insights.generator.d.ts +32 -0
  62. package/dist/agents/negotiation.insights.generator.d.ts.map +1 -0
  63. package/dist/agents/negotiation.insights.generator.js +105 -0
  64. package/dist/agents/negotiation.insights.generator.js.map +1 -0
  65. package/dist/agents/negotiation.proposer.d.ts +26 -0
  66. package/dist/agents/negotiation.proposer.d.ts.map +1 -0
  67. package/dist/agents/negotiation.proposer.js +67 -0
  68. package/dist/agents/negotiation.proposer.js.map +1 -0
  69. package/dist/agents/negotiation.responder.d.ts +26 -0
  70. package/dist/agents/negotiation.responder.d.ts.map +1 -0
  71. package/dist/agents/negotiation.responder.js +71 -0
  72. package/dist/agents/negotiation.responder.js.map +1 -0
  73. package/dist/agents/opportunity.evaluator.d.ts +253 -0
  74. package/dist/agents/opportunity.evaluator.d.ts.map +1 -0
  75. package/dist/agents/opportunity.evaluator.js +413 -0
  76. package/dist/agents/opportunity.evaluator.js.map +1 -0
  77. package/dist/agents/opportunity.presenter.d.ts +115 -0
  78. package/dist/agents/opportunity.presenter.d.ts.map +1 -0
  79. package/dist/agents/opportunity.presenter.js +524 -0
  80. package/dist/agents/opportunity.presenter.js.map +1 -0
  81. package/dist/agents/profile.generator.d.ts +67 -0
  82. package/dist/agents/profile.generator.d.ts.map +1 -0
  83. package/dist/agents/profile.generator.js +97 -0
  84. package/dist/agents/profile.generator.js.map +1 -0
  85. package/dist/agents/profile.hyde.generator.d.ts +43 -0
  86. package/dist/agents/profile.hyde.generator.d.ts.map +1 -0
  87. package/dist/agents/profile.hyde.generator.js +113 -0
  88. package/dist/agents/profile.hyde.generator.js.map +1 -0
  89. package/dist/agents/suggestion.generator.d.ts +24 -0
  90. package/dist/agents/suggestion.generator.d.ts.map +1 -0
  91. package/dist/agents/suggestion.generator.js +96 -0
  92. package/dist/agents/suggestion.generator.js.map +1 -0
  93. package/dist/graphs/chat.graph.d.ts +312 -0
  94. package/dist/graphs/chat.graph.d.ts.map +1 -0
  95. package/dist/graphs/chat.graph.js +267 -0
  96. package/dist/graphs/chat.graph.js.map +1 -0
  97. package/dist/graphs/home.graph.d.ts +180 -0
  98. package/dist/graphs/home.graph.d.ts.map +1 -0
  99. package/dist/graphs/home.graph.js +598 -0
  100. package/dist/graphs/home.graph.js.map +1 -0
  101. package/dist/graphs/hyde.graph.d.ts +110 -0
  102. package/dist/graphs/hyde.graph.d.ts.map +1 -0
  103. package/dist/graphs/hyde.graph.js +235 -0
  104. package/dist/graphs/hyde.graph.js.map +1 -0
  105. package/dist/graphs/index.graph.d.ts +620 -0
  106. package/dist/graphs/index.graph.d.ts.map +1 -0
  107. package/dist/graphs/index.graph.js +226 -0
  108. package/dist/graphs/index.graph.js.map +1 -0
  109. package/dist/graphs/index_membership.graph.d.ts +250 -0
  110. package/dist/graphs/index_membership.graph.d.ts.map +1 -0
  111. package/dist/graphs/index_membership.graph.js +204 -0
  112. package/dist/graphs/index_membership.graph.js.map +1 -0
  113. package/dist/graphs/intent.graph.d.ts +490 -0
  114. package/dist/graphs/intent.graph.d.ts.map +1 -0
  115. package/dist/graphs/intent.graph.js +787 -0
  116. package/dist/graphs/intent.graph.js.map +1 -0
  117. package/dist/graphs/intent_index.graph.d.ts +396 -0
  118. package/dist/graphs/intent_index.graph.d.ts.map +1 -0
  119. package/dist/graphs/intent_index.graph.js +331 -0
  120. package/dist/graphs/intent_index.graph.js.map +1 -0
  121. package/dist/graphs/maintenance.graph.d.ts +177 -0
  122. package/dist/graphs/maintenance.graph.d.ts.map +1 -0
  123. package/dist/graphs/maintenance.graph.js +173 -0
  124. package/dist/graphs/maintenance.graph.js.map +1 -0
  125. package/dist/graphs/negotiation.graph.d.ts +819 -0
  126. package/dist/graphs/negotiation.graph.d.ts.map +1 -0
  127. package/dist/graphs/negotiation.graph.js +255 -0
  128. package/dist/graphs/negotiation.graph.js.map +1 -0
  129. package/dist/graphs/opportunity.graph.d.ts +1082 -0
  130. package/dist/graphs/opportunity.graph.d.ts.map +1 -0
  131. package/dist/graphs/opportunity.graph.js +2534 -0
  132. package/dist/graphs/opportunity.graph.js.map +1 -0
  133. package/dist/graphs/profile.graph.d.ts +617 -0
  134. package/dist/graphs/profile.graph.d.ts.map +1 -0
  135. package/dist/graphs/profile.graph.js +839 -0
  136. package/dist/graphs/profile.graph.js.map +1 -0
  137. package/dist/graphs/tests/chat.graph.mocks.d.ts +104 -0
  138. package/dist/graphs/tests/chat.graph.mocks.d.ts.map +1 -0
  139. package/dist/graphs/tests/chat.graph.mocks.js +225 -0
  140. package/dist/graphs/tests/chat.graph.mocks.js.map +1 -0
  141. package/dist/index.d.ts +62 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +44 -0
  144. package/dist/index.js.map +1 -0
  145. package/dist/interfaces/auth.interface.d.ts +15 -0
  146. package/dist/interfaces/auth.interface.d.ts.map +1 -0
  147. package/dist/interfaces/auth.interface.js +2 -0
  148. package/dist/interfaces/auth.interface.js.map +1 -0
  149. package/dist/interfaces/cache.interface.d.ts +43 -0
  150. package/dist/interfaces/cache.interface.d.ts.map +1 -0
  151. package/dist/interfaces/cache.interface.js +6 -0
  152. package/dist/interfaces/cache.interface.js.map +1 -0
  153. package/dist/interfaces/chat-session.interface.d.ts +11 -0
  154. package/dist/interfaces/chat-session.interface.d.ts.map +1 -0
  155. package/dist/interfaces/chat-session.interface.js +2 -0
  156. package/dist/interfaces/chat-session.interface.js.map +1 -0
  157. package/dist/interfaces/contact.interface.d.ts +48 -0
  158. package/dist/interfaces/contact.interface.d.ts.map +1 -0
  159. package/dist/interfaces/contact.interface.js +2 -0
  160. package/dist/interfaces/contact.interface.js.map +1 -0
  161. package/dist/interfaces/database.interface.d.ts +1495 -0
  162. package/dist/interfaces/database.interface.d.ts.map +1 -0
  163. package/dist/interfaces/database.interface.js +2 -0
  164. package/dist/interfaces/database.interface.js.map +1 -0
  165. package/dist/interfaces/embedder.interface.d.ts +85 -0
  166. package/dist/interfaces/embedder.interface.d.ts.map +1 -0
  167. package/dist/interfaces/embedder.interface.js +5 -0
  168. package/dist/interfaces/embedder.interface.js.map +1 -0
  169. package/dist/interfaces/enrichment.interface.d.ts +40 -0
  170. package/dist/interfaces/enrichment.interface.d.ts.map +1 -0
  171. package/dist/interfaces/enrichment.interface.js +2 -0
  172. package/dist/interfaces/enrichment.interface.js.map +1 -0
  173. package/dist/interfaces/integration.interface.d.ts +91 -0
  174. package/dist/interfaces/integration.interface.d.ts.map +1 -0
  175. package/dist/interfaces/integration.interface.js +2 -0
  176. package/dist/interfaces/integration.interface.js.map +1 -0
  177. package/dist/interfaces/queue.interface.d.ts +17 -0
  178. package/dist/interfaces/queue.interface.d.ts.map +1 -0
  179. package/dist/interfaces/queue.interface.js +5 -0
  180. package/dist/interfaces/queue.interface.js.map +1 -0
  181. package/dist/interfaces/scraper.interface.d.ts +31 -0
  182. package/dist/interfaces/scraper.interface.d.ts.map +1 -0
  183. package/dist/interfaces/scraper.interface.js +2 -0
  184. package/dist/interfaces/scraper.interface.js.map +1 -0
  185. package/dist/interfaces/storage.interface.d.ts +46 -0
  186. package/dist/interfaces/storage.interface.d.ts.map +1 -0
  187. package/dist/interfaces/storage.interface.js +6 -0
  188. package/dist/interfaces/storage.interface.js.map +1 -0
  189. package/dist/mcp/mcp.server.d.ts +29 -0
  190. package/dist/mcp/mcp.server.d.ts.map +1 -0
  191. package/dist/mcp/mcp.server.js +171 -0
  192. package/dist/mcp/mcp.server.js.map +1 -0
  193. package/dist/states/chat.state.d.ts +126 -0
  194. package/dist/states/chat.state.d.ts.map +1 -0
  195. package/dist/states/chat.state.js +112 -0
  196. package/dist/states/chat.state.js.map +1 -0
  197. package/dist/states/home.state.d.ts +100 -0
  198. package/dist/states/home.state.d.ts.map +1 -0
  199. package/dist/states/home.state.js +74 -0
  200. package/dist/states/home.state.js.map +1 -0
  201. package/dist/states/hyde.state.d.ts +54 -0
  202. package/dist/states/hyde.state.d.ts.map +1 -0
  203. package/dist/states/hyde.state.js +66 -0
  204. package/dist/states/hyde.state.js.map +1 -0
  205. package/dist/states/index.state.d.ts +179 -0
  206. package/dist/states/index.state.d.ts.map +1 -0
  207. package/dist/states/index.state.js +56 -0
  208. package/dist/states/index.state.js.map +1 -0
  209. package/dist/states/index_membership.state.d.ts +77 -0
  210. package/dist/states/index_membership.state.d.ts.map +1 -0
  211. package/dist/states/index_membership.state.js +43 -0
  212. package/dist/states/index_membership.state.js.map +1 -0
  213. package/dist/states/intent.state.d.ts +203 -0
  214. package/dist/states/intent.state.d.ts.map +1 -0
  215. package/dist/states/intent.state.js +153 -0
  216. package/dist/states/intent.state.js.map +1 -0
  217. package/dist/states/intent_index.state.d.ts +148 -0
  218. package/dist/states/intent_index.state.d.ts.map +1 -0
  219. package/dist/states/intent_index.state.js +100 -0
  220. package/dist/states/intent_index.state.js.map +1 -0
  221. package/dist/states/maintenance.state.d.ts +36 -0
  222. package/dist/states/maintenance.state.d.ts.map +1 -0
  223. package/dist/states/maintenance.state.js +56 -0
  224. package/dist/states/maintenance.state.js.map +1 -0
  225. package/dist/states/negotiation.state.d.ts +230 -0
  226. package/dist/states/negotiation.state.d.ts.map +1 -0
  227. package/dist/states/negotiation.state.js +82 -0
  228. package/dist/states/negotiation.state.js.map +1 -0
  229. package/dist/states/opportunity.state.d.ts +300 -0
  230. package/dist/states/opportunity.state.d.ts.map +1 -0
  231. package/dist/states/opportunity.state.js +207 -0
  232. package/dist/states/opportunity.state.js.map +1 -0
  233. package/dist/states/profile.state.d.ts +172 -0
  234. package/dist/states/profile.state.d.ts.map +1 -0
  235. package/dist/states/profile.state.js +133 -0
  236. package/dist/states/profile.state.js.map +1 -0
  237. package/dist/streamers/chat.streamer.d.ts +55 -0
  238. package/dist/streamers/chat.streamer.d.ts.map +1 -0
  239. package/dist/streamers/chat.streamer.js +186 -0
  240. package/dist/streamers/chat.streamer.js.map +1 -0
  241. package/dist/streamers/index.d.ts +3 -0
  242. package/dist/streamers/index.d.ts.map +1 -0
  243. package/dist/streamers/index.js +3 -0
  244. package/dist/streamers/index.js.map +1 -0
  245. package/dist/streamers/response.streamer.d.ts +36 -0
  246. package/dist/streamers/response.streamer.d.ts.map +1 -0
  247. package/dist/streamers/response.streamer.js +46 -0
  248. package/dist/streamers/response.streamer.js.map +1 -0
  249. package/dist/support/chat.utils.d.ts +42 -0
  250. package/dist/support/chat.utils.d.ts.map +1 -0
  251. package/dist/support/chat.utils.js +89 -0
  252. package/dist/support/chat.utils.js.map +1 -0
  253. package/dist/support/debug-meta.sanitizer.d.ts +18 -0
  254. package/dist/support/debug-meta.sanitizer.d.ts.map +1 -0
  255. package/dist/support/debug-meta.sanitizer.js +82 -0
  256. package/dist/support/debug-meta.sanitizer.js.map +1 -0
  257. package/dist/support/feed.health.d.ts +32 -0
  258. package/dist/support/feed.health.d.ts.map +1 -0
  259. package/dist/support/feed.health.js +76 -0
  260. package/dist/support/feed.health.js.map +1 -0
  261. package/dist/support/introducer.discovery.d.ts +78 -0
  262. package/dist/support/introducer.discovery.d.ts.map +1 -0
  263. package/dist/support/introducer.discovery.js +101 -0
  264. package/dist/support/introducer.discovery.js.map +1 -0
  265. package/dist/support/log.d.ts +65 -0
  266. package/dist/support/log.d.ts.map +1 -0
  267. package/dist/support/log.js +76 -0
  268. package/dist/support/log.js.map +1 -0
  269. package/dist/support/lucide.icon-catalog.d.ts +22 -0
  270. package/dist/support/lucide.icon-catalog.d.ts.map +1 -0
  271. package/dist/support/lucide.icon-catalog.js +101 -0
  272. package/dist/support/lucide.icon-catalog.js.map +1 -0
  273. package/dist/support/opportunity.card-text.d.ts +39 -0
  274. package/dist/support/opportunity.card-text.d.ts.map +1 -0
  275. package/dist/support/opportunity.card-text.js +333 -0
  276. package/dist/support/opportunity.card-text.js.map +1 -0
  277. package/dist/support/opportunity.constants.d.ts +9 -0
  278. package/dist/support/opportunity.constants.d.ts.map +1 -0
  279. package/dist/support/opportunity.constants.js +11 -0
  280. package/dist/support/opportunity.constants.js.map +1 -0
  281. package/dist/support/opportunity.discover.d.ts +144 -0
  282. package/dist/support/opportunity.discover.d.ts.map +1 -0
  283. package/dist/support/opportunity.discover.js +610 -0
  284. package/dist/support/opportunity.discover.js.map +1 -0
  285. package/dist/support/opportunity.enricher.d.ts +44 -0
  286. package/dist/support/opportunity.enricher.d.ts.map +1 -0
  287. package/dist/support/opportunity.enricher.js +245 -0
  288. package/dist/support/opportunity.enricher.js.map +1 -0
  289. package/dist/support/opportunity.persist.d.ts +39 -0
  290. package/dist/support/opportunity.persist.d.ts.map +1 -0
  291. package/dist/support/opportunity.persist.js +63 -0
  292. package/dist/support/opportunity.persist.js.map +1 -0
  293. package/dist/support/opportunity.presentation.d.ts +21 -0
  294. package/dist/support/opportunity.presentation.d.ts.map +1 -0
  295. package/dist/support/opportunity.presentation.js +75 -0
  296. package/dist/support/opportunity.presentation.js.map +1 -0
  297. package/dist/support/opportunity.sanitize.d.ts +18 -0
  298. package/dist/support/opportunity.sanitize.d.ts.map +1 -0
  299. package/dist/support/opportunity.sanitize.js +89 -0
  300. package/dist/support/opportunity.sanitize.js.map +1 -0
  301. package/dist/support/opportunity.utils.d.ts +99 -0
  302. package/dist/support/opportunity.utils.d.ts.map +1 -0
  303. package/dist/support/opportunity.utils.js +184 -0
  304. package/dist/support/opportunity.utils.js.map +1 -0
  305. package/dist/support/performance.d.ts +19 -0
  306. package/dist/support/performance.d.ts.map +1 -0
  307. package/dist/support/performance.js +43 -0
  308. package/dist/support/performance.js.map +1 -0
  309. package/dist/support/profile.enrichment-display-name.d.ts +16 -0
  310. package/dist/support/profile.enrichment-display-name.d.ts.map +1 -0
  311. package/dist/support/profile.enrichment-display-name.js +22 -0
  312. package/dist/support/profile.enrichment-display-name.js.map +1 -0
  313. package/dist/support/protocol.logger.d.ts +22 -0
  314. package/dist/support/protocol.logger.d.ts.map +1 -0
  315. package/dist/support/protocol.logger.js +44 -0
  316. package/dist/support/protocol.logger.js.map +1 -0
  317. package/dist/support/request-context.d.ts +19 -0
  318. package/dist/support/request-context.d.ts.map +1 -0
  319. package/dist/support/request-context.js +7 -0
  320. package/dist/support/request-context.js.map +1 -0
  321. package/dist/tools/contact.tools.d.ts +7 -0
  322. package/dist/tools/contact.tools.d.ts.map +1 -0
  323. package/dist/tools/contact.tools.js +115 -0
  324. package/dist/tools/contact.tools.js.map +1 -0
  325. package/dist/tools/index.d.ts +17 -0
  326. package/dist/tools/index.d.ts.map +1 -0
  327. package/dist/tools/index.js +140 -0
  328. package/dist/tools/index.js.map +1 -0
  329. package/dist/tools/index.tools.d.ts +3 -0
  330. package/dist/tools/index.tools.d.ts.map +1 -0
  331. package/dist/tools/index.tools.js +423 -0
  332. package/dist/tools/index.tools.js.map +1 -0
  333. package/dist/tools/integration.tools.d.ts +13 -0
  334. package/dist/tools/integration.tools.d.ts.map +1 -0
  335. package/dist/tools/integration.tools.js +77 -0
  336. package/dist/tools/integration.tools.js.map +1 -0
  337. package/dist/tools/intent.tools.d.ts +3 -0
  338. package/dist/tools/intent.tools.d.ts.map +1 -0
  339. package/dist/tools/intent.tools.js +458 -0
  340. package/dist/tools/intent.tools.js.map +1 -0
  341. package/dist/tools/opportunity.tools.d.ts +44 -0
  342. package/dist/tools/opportunity.tools.d.ts.map +1 -0
  343. package/dist/tools/opportunity.tools.js +814 -0
  344. package/dist/tools/opportunity.tools.js.map +1 -0
  345. package/dist/tools/profile.tools.d.ts +3 -0
  346. package/dist/tools/profile.tools.d.ts.map +1 -0
  347. package/dist/tools/profile.tools.js +513 -0
  348. package/dist/tools/profile.tools.js.map +1 -0
  349. package/dist/tools/tool.helpers.d.ts +225 -0
  350. package/dist/tools/tool.helpers.d.ts.map +1 -0
  351. package/dist/tools/tool.helpers.js +172 -0
  352. package/dist/tools/tool.helpers.js.map +1 -0
  353. package/dist/tools/tool.registry.d.ts +12 -0
  354. package/dist/tools/tool.registry.d.ts.map +1 -0
  355. package/dist/tools/tool.registry.js +62 -0
  356. package/dist/tools/tool.registry.js.map +1 -0
  357. package/dist/tools/utility.tools.d.ts +3 -0
  358. package/dist/tools/utility.tools.d.ts.map +1 -0
  359. package/dist/tools/utility.tools.js +107 -0
  360. package/dist/tools/utility.tools.js.map +1 -0
  361. package/dist/types/chat-streaming.types.d.ts +472 -0
  362. package/dist/types/chat-streaming.types.d.ts.map +1 -0
  363. package/dist/types/chat-streaming.types.js +260 -0
  364. package/dist/types/chat-streaming.types.js.map +1 -0
  365. package/package.json +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opportunity.tools.js","sourceRoot":"","sources":["../../src/tools/opportunity.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DefineTool, ToolDeps } from "./tool.helpers.js";
2
+ export declare function createProfileTools(defineTool: DefineTool, deps: ToolDeps): readonly [any, any, any, any];
3
+ //# sourceMappingURL=profile.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.tools.d.ts","sourceRoot":"","sources":["../../src/tools/profile.tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAkB9D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,iCA8hBxE"}
@@ -0,0 +1,513 @@
1
+ import { z } from "zod";
2
+ import { requestContext } from "../support/request-context.js";
3
+ import { success, error, needsClarification, UUID_REGEX } from "./tool.helpers.js";
4
+ import { protocolLogger } from "../support/protocol.logger.js";
5
+ const logger = protocolLogger("ChatTools:Profile");
6
+ function isMeaningfulEnrichment(enrichment) {
7
+ return !!enrichment &&
8
+ enrichment.confidentMatch &&
9
+ (enrichment.identity.bio.trim().length > 0 ||
10
+ enrichment.narrative.context.trim().length > 0 ||
11
+ enrichment.attributes.skills.length > 0 ||
12
+ enrichment.attributes.interests.length > 0);
13
+ }
14
+ export function createProfileTools(defineTool, deps) {
15
+ const { userDb, systemDb, database, graphs, enricher } = deps;
16
+ async function enrichFromUserRecord(user) {
17
+ return enricher.enrichUserProfile({
18
+ name: user.name || undefined,
19
+ email: user.email || undefined,
20
+ linkedin: user.socials?.linkedin || undefined,
21
+ twitter: user.socials?.x || undefined,
22
+ github: user.socials?.github || undefined,
23
+ websites: user.socials?.websites?.length ? user.socials.websites : undefined,
24
+ });
25
+ }
26
+ const readUserProfiles = defineTool({
27
+ name: "read_user_profiles",
28
+ description: "Find or read user profiles. When the user asks to find, look up, or learn about a specific person by name, use `query` — this is the primary way to look up people by name. With `query`: finds members by name (case-insensitive) across the user's indexes (or a specific index if `indexId` also provided). With `userId`: returns that user's profile. With `indexId` alone: returns profiles of all members in that index. In an index-scoped chat, no args returns the current user's profile. Outside an index-scoped chat, at least one parameter is required.",
29
+ querySchema: z.object({
30
+ userId: z.string().optional().describe("Optional user ID to fetch a specific user's profile"),
31
+ indexId: z.string().optional().describe("Optional index ID to fetch profiles of all members in that index"),
32
+ query: z.string().optional().describe("Name to find (case-insensitive substring match). Searches across the user's indexes, or within a specific index if indexId is also provided."),
33
+ }),
34
+ handler: async ({ context, query }) => {
35
+ const effectiveIndexId = query.indexId?.trim() || undefined;
36
+ const targetUserId = query.userId?.trim() || undefined;
37
+ const nameQuery = query.query?.trim() || undefined;
38
+ if (effectiveIndexId && !UUID_REGEX.test(effectiveIndexId)) {
39
+ return error("Invalid index ID format. Use the exact UUID from read_indexes.");
40
+ }
41
+ // --- Name search mode: query provided → find members by name ---
42
+ if (nameQuery) {
43
+ const pattern = nameQuery.toLowerCase();
44
+ const MAX_RESULTS = 20;
45
+ // When chat is index-scoped, restrict name search to that index
46
+ const searchIndexId = effectiveIndexId || context.indexId || undefined;
47
+ let candidates;
48
+ if (searchIndexId) {
49
+ // Scoped to a specific index
50
+ if (context.indexId && searchIndexId !== context.indexId) {
51
+ return error(context.indexName
52
+ ? `This chat is scoped to ${context.indexName}. You can only look up people in this community.`
53
+ : `This chat is scoped to this index. You can only look up people in this community.`);
54
+ }
55
+ const callerIsMember = await systemDb.isIndexMember(searchIndexId, context.userId);
56
+ if (!callerIsMember) {
57
+ return error("You can only look up people in indexes you are a member of.");
58
+ }
59
+ const members = await systemDb.getIndexMembers(searchIndexId);
60
+ candidates = members.map((m) => ({ userId: m.userId, name: m.name, avatar: m.avatar ?? null }));
61
+ }
62
+ else {
63
+ // Search across all user's indexes
64
+ candidates = await systemDb.getMembersFromScope();
65
+ }
66
+ logger.verbose("Name search candidates", {
67
+ query: nameQuery,
68
+ pattern,
69
+ candidateCount: candidates.length,
70
+ userId: context.userId,
71
+ });
72
+ // Filter by name (case-insensitive substring), exclude self
73
+ const matched = candidates
74
+ .filter((c) => c.userId !== context.userId && c.name.toLowerCase().includes(pattern))
75
+ .slice(0, MAX_RESULTS);
76
+ if (matched.length === 0) {
77
+ return success({ query: nameQuery, matchCount: 0, profiles: [], message: "No members found matching that name." });
78
+ }
79
+ // Fetch full profiles for matches
80
+ const profiles = await Promise.all(matched.map(async (m) => {
81
+ const profile = await systemDb.getProfile(m.userId);
82
+ return {
83
+ userId: m.userId,
84
+ name: m.name,
85
+ hasProfile: !!profile,
86
+ profile: profile
87
+ ? {
88
+ name: profile.identity.name,
89
+ bio: profile.identity.bio,
90
+ location: profile.identity.location,
91
+ skills: profile.attributes.skills,
92
+ interests: profile.attributes.interests,
93
+ }
94
+ : undefined,
95
+ };
96
+ }));
97
+ return success({ query: nameQuery, matchCount: profiles.length, profiles });
98
+ }
99
+ // Guard: when chat is NOT index-scoped and no userId/indexId provided, disallow
100
+ if (!effectiveIndexId && !targetUserId && !context.indexId) {
101
+ return error("Please provide a userId, indexId, or query. Outside of an index-scoped chat, read_user_profiles requires at least one of these parameters. To read your own profile, pass your own userId.");
102
+ }
103
+ // --- Mode 3: indexId provided → fetch all member profiles ---
104
+ if (effectiveIndexId) {
105
+ // Strict scope enforcement: when chat is index-scoped, only allow querying that index
106
+ if (context.indexId && effectiveIndexId !== context.indexId) {
107
+ return error(context.indexName
108
+ ? `This chat is scoped to ${context.indexName}. You can only read profiles from this community.`
109
+ : `This chat is scoped to this index. You can only read profiles from this community.`);
110
+ }
111
+ // Verify the caller is a member of the index they're querying
112
+ const callerIsMember = await systemDb.isIndexMember(effectiveIndexId, context.userId);
113
+ if (!callerIsMember) {
114
+ return error("You can only read profiles from indexes you are a member of.");
115
+ }
116
+ // Use systemDb for cross-user access within shared indexes
117
+ const members = await systemDb.getIndexMembers(effectiveIndexId);
118
+ const profiles = await Promise.all(members.map(async (member) => {
119
+ const profile = await systemDb.getProfile(member.userId);
120
+ return {
121
+ userId: member.userId,
122
+ name: member.name,
123
+ hasProfile: !!profile,
124
+ profile: profile
125
+ ? {
126
+ name: profile.identity.name,
127
+ bio: profile.identity.bio,
128
+ location: profile.identity.location,
129
+ skills: profile.attributes.skills,
130
+ interests: profile.attributes.interests,
131
+ }
132
+ : undefined,
133
+ };
134
+ }));
135
+ return success({ indexId: effectiveIndexId, memberCount: members.length, profiles });
136
+ }
137
+ // --- Mode 2: userId provided (different user) → fetch single profile directly ---
138
+ if (targetUserId && targetUserId !== context.userId) {
139
+ // Strict scope enforcement: when chat is index-scoped, verify user is in that index
140
+ if (context.indexId) {
141
+ const isInScopedIndex = await systemDb.isIndexMember(context.indexId, targetUserId);
142
+ if (!isInScopedIndex) {
143
+ return error(context.indexName
144
+ ? `This chat is scoped to ${context.indexName}. You can only read profiles of members in this community.`
145
+ : `This chat is scoped to this index. You can only read profiles of members in this community.`);
146
+ }
147
+ }
148
+ // Use systemDb for cross-user profile access (requires shared index)
149
+ const profile = await systemDb.getProfile(targetUserId);
150
+ if (profile) {
151
+ return success({
152
+ hasProfile: true,
153
+ profile: {
154
+ name: profile.identity.name,
155
+ bio: profile.identity.bio,
156
+ location: profile.identity.location,
157
+ skills: profile.attributes.skills,
158
+ interests: profile.attributes.interests,
159
+ },
160
+ });
161
+ }
162
+ return success({ hasProfile: false, message: "This user does not have a profile yet." });
163
+ }
164
+ // --- Mode 1: No args / self → use profileGraph query (returns id for updates) ---
165
+ const _readProfileGraphStart = Date.now();
166
+ const _readProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
167
+ _readProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
168
+ const result = await graphs.profile.invoke({
169
+ userId: context.userId,
170
+ operationMode: 'query',
171
+ });
172
+ const _readProfileGraphMs = Date.now() - _readProfileGraphStart;
173
+ _readProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _readProfileGraphMs });
174
+ if (result.readResult) {
175
+ return success({ ...result.readResult, _graphTimings: [{ name: 'profile', durationMs: _readProfileGraphMs, agents: result.agentTimings ?? [] }] });
176
+ }
177
+ if (result.profile) {
178
+ return success({
179
+ hasProfile: true,
180
+ profile: {
181
+ name: result.profile.identity.name,
182
+ bio: result.profile.identity.bio,
183
+ location: result.profile.identity.location,
184
+ skills: result.profile.attributes.skills,
185
+ interests: result.profile.attributes.interests,
186
+ },
187
+ _graphTimings: [{ name: 'profile', durationMs: _readProfileGraphMs, agents: result.agentTimings ?? [] }],
188
+ });
189
+ }
190
+ return success({
191
+ hasProfile: false,
192
+ message: "You don't have a profile yet. Would you like to create one? You can share your LinkedIn, GitHub, or X/Twitter profile, or just tell me about yourself.",
193
+ _graphTimings: [{ name: 'profile', durationMs: _readProfileGraphMs, agents: result.agentTimings ?? [] }],
194
+ });
195
+ },
196
+ });
197
+ const createUserProfile = defineTool({
198
+ name: "create_user_profile",
199
+ description: "Auto-generates (or regenerates) a profile from the user's account data (name, email, social links) via web lookup, or from explicit text when the user provides a short description (e.g. role, skills, location). When the user provides a profile URL in their message, pass it in the matching parameter (e.g. linkedinUrl) so that URL is used for this request, not their saved links. Works whether or not the user already has a profile. Call with no args first; if it returns missing fields, ask the user conversationally for their full name and/or social URLs, then call again with those fields filled in. During onboarding, the first call returns a preview without saving. When the user confirms, call again with confirm=true to save.",
200
+ querySchema: z.object({
201
+ name: z.string().optional().describe("User's full name (first and last), if provided by the user"),
202
+ linkedinUrl: z.string().optional().describe("LinkedIn profile URL"),
203
+ githubUrl: z.string().optional().describe("GitHub profile URL"),
204
+ twitterUrl: z.string().optional().describe("X/Twitter profile URL"),
205
+ websites: z.array(z.string()).optional().describe("Personal or portfolio website URLs"),
206
+ location: z.string().optional().describe("User's location (city, country)"),
207
+ bioOrDescription: z.string().optional().describe("Explicit profile text from the user (e.g. 'software engineer, AI/ML, SF Bay Area'); creates or updates profile from this text only, no scraping"),
208
+ confirm: z.boolean().optional().describe("Pass true to save a previously previewed profile during onboarding"),
209
+ }),
210
+ handler: async ({ context, query }) => {
211
+ // Persist user-info fields (name, location, socials) to users table before any branching.
212
+ // This ensures users.name is always updated regardless of which code path runs.
213
+ // Trim all string fields to avoid persisting whitespace-only values.
214
+ const name = query.name?.trim();
215
+ const location = query.location?.trim();
216
+ const linkedinUrl = query.linkedinUrl?.trim();
217
+ const githubUrl = query.githubUrl?.trim();
218
+ const twitterUrl = query.twitterUrl?.trim();
219
+ const websites = query.websites?.map((url) => url.trim()).filter(Boolean);
220
+ const hasSocialsFromQuery = Boolean(linkedinUrl || githubUrl || twitterUrl || websites?.length);
221
+ if (name || location || hasSocialsFromQuery) {
222
+ const socialsUpdate = {};
223
+ if (linkedinUrl)
224
+ socialsUpdate.linkedin = linkedinUrl;
225
+ if (githubUrl)
226
+ socialsUpdate.github = githubUrl;
227
+ if (twitterUrl)
228
+ socialsUpdate.x = twitterUrl;
229
+ if (websites?.length)
230
+ socialsUpdate.websites = websites;
231
+ await userDb.updateUser({
232
+ ...(name ? { name } : {}),
233
+ ...(location ? { location } : {}),
234
+ ...(hasSocialsFromQuery ? { socials: socialsUpdate } : {}),
235
+ });
236
+ logger.verbose("Persisted user-info fields to user record", { userId: context.userId });
237
+ }
238
+ const isOnboarding = !(context.user.onboarding?.completedAt);
239
+ if (isOnboarding) {
240
+ const existingProfile = await userDb.getProfile();
241
+ if (existingProfile) {
242
+ return success({
243
+ alreadyExists: true,
244
+ message: "Profile already exists. If the user confirmed it, call complete_onboarding() to finish setup. If they want changes, use create_user_profile(bioOrDescription=\"...\", confirm=true).",
245
+ profile: {
246
+ name: existingProfile.identity.name,
247
+ bio: existingProfile.identity.bio,
248
+ location: existingProfile.identity.location,
249
+ skills: existingProfile.attributes.skills,
250
+ interests: existingProfile.attributes.interests,
251
+ },
252
+ });
253
+ }
254
+ // Preview mode: enrich and persist enrichment results, but don't generate full profile
255
+ if (!query.confirm) {
256
+ try {
257
+ const user = await userDb.getUser();
258
+ const enrichment = user ? await enrichFromUserRecord(user) : null;
259
+ if (isMeaningfulEnrichment(enrichment)) {
260
+ // Persist enrichment data to user record so confirm path has it
261
+ const updatePayload = {};
262
+ // No ghost guard needed: onboarding users are active (non-ghost) and
263
+ // haven't confirmed a name yet — the enriched name is a preview they accept or edit.
264
+ if (enrichment.identity.name?.trim()) {
265
+ updatePayload.name = enrichment.identity.name.trim();
266
+ }
267
+ if (enrichment.identity.bio?.trim())
268
+ updatePayload.intro = enrichment.identity.bio.trim();
269
+ if (enrichment.identity.location?.trim())
270
+ updatePayload.location = enrichment.identity.location.trim();
271
+ const socials = {};
272
+ if (enrichment.socials.twitter)
273
+ socials.x = enrichment.socials.twitter;
274
+ if (enrichment.socials.linkedin)
275
+ socials.linkedin = enrichment.socials.linkedin;
276
+ if (enrichment.socials.github)
277
+ socials.github = enrichment.socials.github;
278
+ if (enrichment.socials.websites?.length)
279
+ socials.websites = enrichment.socials.websites;
280
+ if (Object.keys(socials).length > 0)
281
+ updatePayload.socials = socials;
282
+ if (Object.keys(updatePayload).length > 0)
283
+ await userDb.updateUser(updatePayload);
284
+ return success({
285
+ preview: true,
286
+ message: "Profile preview generated. Call create_user_profile(confirm=true) to save.",
287
+ profile: {
288
+ name: enrichment.identity.name,
289
+ bio: enrichment.identity.bio,
290
+ location: enrichment.identity.location,
291
+ skills: enrichment.attributes.skills,
292
+ interests: enrichment.attributes.interests,
293
+ },
294
+ });
295
+ }
296
+ }
297
+ catch (err) {
298
+ logger.warn("Enrichment preview failed", {
299
+ error: err instanceof Error ? err.message : String(err),
300
+ });
301
+ }
302
+ return needsClarification({
303
+ missingFields: ['bio_or_social_urls'],
304
+ message: "I couldn't find enough public info. Could you share a short description of yourself, or a LinkedIn/GitHub/X profile link?",
305
+ });
306
+ }
307
+ // Confirm mode: invoke graph in generate mode (enrichment data already persisted during preview)
308
+ // Do NOT re-run enrichFromUserRecord — the graph's autoGenerateNode handles enrichment
309
+ // from the (now well-populated) user record, avoiding non-deterministic drift.
310
+ try {
311
+ const _confirmGraphStart = Date.now();
312
+ const _confirmTraceEmitter = requestContext.getStore()?.traceEmitter;
313
+ _confirmTraceEmitter?.({ type: "graph_start", name: "profile" });
314
+ const result = await graphs.profile.invoke({
315
+ userId: context.userId,
316
+ operationMode: 'generate',
317
+ });
318
+ const _confirmGraphMs = Date.now() - _confirmGraphStart;
319
+ _confirmTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _confirmGraphMs });
320
+ if (result.error)
321
+ return error(result.error);
322
+ if (result.profile) {
323
+ return success({
324
+ created: true,
325
+ message: "Profile saved.",
326
+ profile: {
327
+ name: result.profile.identity.name,
328
+ bio: result.profile.identity.bio,
329
+ location: result.profile.identity.location,
330
+ skills: result.profile.attributes.skills,
331
+ interests: result.profile.attributes.interests,
332
+ },
333
+ _graphTimings: [{ name: 'profile', durationMs: _confirmGraphMs, agents: result.agentTimings ?? [] }],
334
+ });
335
+ }
336
+ }
337
+ catch (err) {
338
+ logger.warn("Profile generation on confirm failed, falling back to full graph", {
339
+ error: err instanceof Error ? err.message : String(err),
340
+ });
341
+ }
342
+ // Fallback: graph invocation failed on confirm, fall through to full graph invocation
343
+ }
344
+ const hasBioOrDescription = !!query.bioOrDescription?.trim();
345
+ if (hasBioOrDescription) {
346
+ // Create/update profile from user's explicit text only; do not persist to user record
347
+ // Include name and location in the input if provided so the ProfileGenerator can use them
348
+ const inputParts = [];
349
+ if (name)
350
+ inputParts.push(`Name: ${name}`);
351
+ if (location)
352
+ inputParts.push(`Location: ${location}`);
353
+ inputParts.push(query.bioOrDescription.trim());
354
+ const profileInput = inputParts.join('\n');
355
+ const _bioProfileGraphStart = Date.now();
356
+ const _bioProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
357
+ _bioProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
358
+ const result = await graphs.profile.invoke({
359
+ userId: context.userId,
360
+ operationMode: 'write',
361
+ input: profileInput,
362
+ forceUpdate: true,
363
+ });
364
+ const _bioProfileGraphMs = Date.now() - _bioProfileGraphStart;
365
+ _bioProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _bioProfileGraphMs });
366
+ if (result.error) {
367
+ return error(result.error);
368
+ }
369
+ if (result.profile) {
370
+ return success({
371
+ created: true,
372
+ message: "Profile created/updated with the information you provided.",
373
+ profile: {
374
+ name: result.profile.identity.name,
375
+ bio: result.profile.identity.bio,
376
+ location: result.profile.identity.location,
377
+ skills: result.profile.attributes.skills,
378
+ interests: result.profile.attributes.interests,
379
+ },
380
+ _graphTimings: [{ name: 'profile', durationMs: _bioProfileGraphMs, agents: result.agentTimings ?? [] }],
381
+ });
382
+ }
383
+ return success({
384
+ created: true,
385
+ message: "Profile created/updated with the information you provided.",
386
+ _graphTimings: [{ name: 'profile', durationMs: _bioProfileGraphMs, agents: result.agentTimings ?? [] }],
387
+ });
388
+ }
389
+ // Invoke profile graph in generate mode (uses enrichUserProfile Chat API)
390
+ const _generateProfileGraphStart = Date.now();
391
+ const _generateProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
392
+ _generateProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
393
+ const result = await graphs.profile.invoke({
394
+ userId: context.userId,
395
+ operationMode: 'generate',
396
+ forceUpdate: true,
397
+ });
398
+ const _generateProfileGraphMs = Date.now() - _generateProfileGraphStart;
399
+ _generateProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _generateProfileGraphMs });
400
+ // If user info is insufficient, ask conversationally
401
+ if (result.needsUserInfo) {
402
+ return needsClarification({
403
+ missingFields: result.missingUserInfo || ['social_urls', 'full_name'],
404
+ 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)?",
405
+ });
406
+ }
407
+ if (result.error) {
408
+ return error(result.error);
409
+ }
410
+ if (result.profile) {
411
+ return success({
412
+ created: true,
413
+ message: "Profile generated from your account data.",
414
+ profile: {
415
+ name: result.profile.identity.name,
416
+ bio: result.profile.identity.bio,
417
+ location: result.profile.identity.location,
418
+ skills: result.profile.attributes.skills,
419
+ interests: result.profile.attributes.interests,
420
+ },
421
+ _graphTimings: [{ name: 'profile', durationMs: _generateProfileGraphMs, agents: result.agentTimings ?? [] }],
422
+ });
423
+ }
424
+ return error("Failed to create profile. Please try again.");
425
+ },
426
+ });
427
+ const updateUserProfile = defineTool({
428
+ name: "update_user_profile",
429
+ description: "Updates the user's existing profile. For the current user's profile, profileId can be omitted and the tool will use their profile. Use ONE call per request with all changes in action (and details if needed). For profile URLs call scrape_url first, then pass scraped content in details.",
430
+ querySchema: z.object({
431
+ profileId: z.string().optional().describe("Optional profile id from read_user_profiles; omit for current user's profile"),
432
+ action: z.string().describe("What to do: one or more changes, e.g. 'update bio to X', 'add Python to skills'"),
433
+ details: z.string().optional().describe("Additional context or pasted content"),
434
+ }),
435
+ handler: async ({ context, query }) => {
436
+ // Use profileGraph query mode to validate profile existence and get id
437
+ const _updateQueryProfileGraphStart = Date.now();
438
+ const _updateQueryProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
439
+ _updateQueryProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
440
+ const queryResult = await graphs.profile.invoke({ userId: context.userId, operationMode: 'query' });
441
+ const _updateQueryProfileGraphMs = Date.now() - _updateQueryProfileGraphStart;
442
+ _updateQueryProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _updateQueryProfileGraphMs });
443
+ if (!queryResult.readResult?.hasProfile && !queryResult.profile) {
444
+ return error("You don't have a profile yet. Use create_user_profile first.");
445
+ }
446
+ const existingProfileId = queryResult.readResult?.profile?.id;
447
+ const providedProfileId = query.profileId?.trim();
448
+ if (providedProfileId && existingProfileId && providedProfileId !== existingProfileId) {
449
+ return error("Invalid profileId. Use the profile id from read_user_profiles.");
450
+ }
451
+ const inputForProfile = [query.action, query.details].filter(Boolean).join("\n") || (query.details ?? query.action);
452
+ if (!inputForProfile.trim()) {
453
+ return error("Please specify what to update (e.g. action: 'update bio to X').");
454
+ }
455
+ // Execute update directly
456
+ const _updateWriteProfileGraphStart = Date.now();
457
+ const _updateWriteProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
458
+ _updateWriteProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
459
+ const _writeResult = await graphs.profile.invoke({
460
+ userId: context.userId,
461
+ operationMode: "write",
462
+ input: inputForProfile,
463
+ forceUpdate: true,
464
+ });
465
+ const _updateWriteProfileGraphMs = Date.now() - _updateWriteProfileGraphStart;
466
+ _updateWriteProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _updateWriteProfileGraphMs });
467
+ if (_writeResult.error) {
468
+ return error(_writeResult.error);
469
+ }
470
+ return success({
471
+ message: "Profile updated.",
472
+ _graphTimings: [
473
+ { name: 'profile', durationMs: _updateQueryProfileGraphMs, agents: queryResult.agentTimings ?? [] },
474
+ { name: 'profile', durationMs: _updateWriteProfileGraphMs, agents: _writeResult.agentTimings ?? [] },
475
+ ],
476
+ });
477
+ },
478
+ });
479
+ const completeOnboarding = defineTool({
480
+ name: "complete_onboarding",
481
+ description: "Marks onboarding as complete. Call this ONLY after the user has explicitly confirmed their profile is correct. Do NOT call this until the user says 'yes', 'looks good', 'that's right', or similar confirmation.",
482
+ querySchema: z.object({}),
483
+ handler: async ({ context }) => {
484
+ const currentOnboarding = context.user.onboarding ?? {};
485
+ if (currentOnboarding.completedAt) {
486
+ logger.verbose("Onboarding already completed, skipping", { userId: context.userId });
487
+ return success({ message: "Onboarding already completed." });
488
+ }
489
+ await userDb.updateUser({
490
+ onboarding: {
491
+ ...currentOnboarding,
492
+ completedAt: new Date().toISOString(),
493
+ },
494
+ });
495
+ const autoJoinIds = (process.env.AUTO_JOIN_INDEX_IDS ?? '')
496
+ .split(',')
497
+ .map(id => id.trim())
498
+ .filter(Boolean);
499
+ for (const indexId of autoJoinIds) {
500
+ try {
501
+ await database.addMemberToIndex(indexId, context.userId, 'member');
502
+ }
503
+ catch (err) {
504
+ logger.warn('Auto-join index failed (non-fatal)', { indexId, userId: context.userId, error: err instanceof Error ? err.message : String(err) });
505
+ }
506
+ }
507
+ logger.info("Onboarding completed", { userId: context.userId, autoJoinedIndexes: autoJoinIds.length });
508
+ return success({ message: "Onboarding complete." });
509
+ },
510
+ });
511
+ return [readUserProfiles, createUserProfile, updateUserProfile, completeOnboarding];
512
+ }
513
+ //# sourceMappingURL=profile.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.tools.js","sourceRoot":"","sources":["../../src/tools/profile.tools.ts"],"names":[],"mappings":"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"}