@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,458 @@
1
+ import { z } from "zod";
2
+ import { protocolLogger } from "../support/protocol.logger.js";
3
+ import { requestContext } from "../support/request-context.js";
4
+ import { success, error, UUID_REGEX } from "./tool.helpers.js";
5
+ const logger = protocolLogger("ChatTools:Intent");
6
+ /**
7
+ * Sanitize JSON string for use inside a markdown code fence (```). Escapes backticks
8
+ * so embedded ``` cannot close the fence prematurely.
9
+ */
10
+ function sanitizeJsonForCodeFence(json) {
11
+ return json.replace(/`/g, "\\u0060");
12
+ }
13
+ /** When context is index-scoped, verifies the caller is still a member of that index. Returns error message or null. */
14
+ async function ensureScopedMembership(context, systemDb) {
15
+ if (!context.indexId)
16
+ return null;
17
+ const isMember = await systemDb.isIndexMember(context.indexId, context.userId);
18
+ if (!isMember) {
19
+ return `This chat is scoped to ${context.indexName ?? 'this index'}. You are no longer a member of this community.`;
20
+ }
21
+ return null;
22
+ }
23
+ export function createIntentTools(defineTool, deps) {
24
+ const { graphs } = deps;
25
+ // ─────────────────────────────────────────────────────────────────────────────
26
+ // INTENT CRUD
27
+ // ─────────────────────────────────────────────────────────────────────────────
28
+ const readIntents = defineTool({
29
+ name: "read_intents",
30
+ description: "Reads intents (what people are looking for). No indexId: returns the user's own active intents. With indexId: returns all intents in that index; add userId to filter to one user. To find other members' intents, use read_index_memberships first, then read_intents per index.",
31
+ querySchema: z.object({
32
+ indexId: z.string().optional().describe("Index UUID — filters intents to this index. Defaults to current index when scoped."),
33
+ userId: z.string().optional().describe("User ID — filters to this user's intents. Combined with indexId: that user's intents in that index."),
34
+ limit: z.number().int().min(1).max(100).optional().describe("Page size (1-100)."),
35
+ page: z.number().int().min(1).optional().describe("Page number (1-based)."),
36
+ }),
37
+ handler: async ({ context, query }) => {
38
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
39
+ if (scopeErr)
40
+ return error(scopeErr);
41
+ // Strict scope enforcement: when chat is index-scoped, only allow querying that index
42
+ if (context.indexId && query.indexId?.trim() && query.indexId.trim() !== context.indexId) {
43
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only read intents from this community.`);
44
+ }
45
+ const effectiveIndexId = context.indexId || query.indexId?.trim() || undefined;
46
+ if (effectiveIndexId && !UUID_REGEX.test(effectiveIndexId)) {
47
+ return error("Invalid index ID format.");
48
+ }
49
+ const queryUserId = query.userId?.trim() || undefined;
50
+ // When scoped, reading another user's intents is restricted to the scoped index
51
+ if (context.indexId && queryUserId && queryUserId !== context.userId) {
52
+ // Verify target user is a member of the scoped index
53
+ const db = deps.systemDb;
54
+ const isInScopedIndex = await db.isIndexMember(context.indexId, queryUserId);
55
+ if (!isInScopedIndex) {
56
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only read intents from members of this community.`);
57
+ }
58
+ }
59
+ if (!effectiveIndexId && queryUserId && queryUserId !== context.userId) {
60
+ return error("Cannot read another user's global intents. Use indexId to scope to a shared index.");
61
+ }
62
+ // Verify the caller is a member of the index they're querying (unscoped chat only - scoped is already validated)
63
+ if (!context.indexId && effectiveIndexId) {
64
+ const db = deps.systemDb;
65
+ const callerIsMember = await db.isIndexMember(effectiveIndexId, context.userId);
66
+ if (!callerIsMember) {
67
+ return error("You can only read intents from indexes you are a member of.");
68
+ }
69
+ }
70
+ // When scoped, we should NOT return all user intents across indexes - only those in the scoped index
71
+ const allUserIntents = !context.indexId && !effectiveIndexId && (!queryUserId || queryUserId === context.userId);
72
+ const _readIntentGraphStart = Date.now();
73
+ const _readIntentTraceEmitter = requestContext.getStore()?.traceEmitter;
74
+ _readIntentTraceEmitter?.({ type: "graph_start", name: "intent" });
75
+ const result = await graphs.intent.invoke({
76
+ userId: context.userId,
77
+ userProfile: "",
78
+ indexId: effectiveIndexId,
79
+ operationMode: 'read',
80
+ queryUserId,
81
+ allUserIntents,
82
+ });
83
+ const _readIntentGraphMs = Date.now() - _readIntentGraphStart;
84
+ _readIntentTraceEmitter?.({ type: "graph_end", name: "intent", durationMs: _readIntentGraphMs });
85
+ if (result.readResult) {
86
+ if (result.readResult.count === 0 && result.readResult.message && /not a member|Index not found/i.test(result.readResult.message)) {
87
+ return error(result.readResult.message);
88
+ }
89
+ const shouldPaginate = query.limit !== undefined || query.page !== undefined;
90
+ if (shouldPaginate && Array.isArray(result.readResult.intents)) {
91
+ const limit = query.limit ?? 20;
92
+ const page = query.page ?? 1;
93
+ const offset = (page - 1) * limit;
94
+ const pagedIntents = result.readResult.intents.slice(offset, offset + limit);
95
+ return success({
96
+ ...result.readResult,
97
+ count: pagedIntents.length,
98
+ totalCount: result.readResult.intents.length,
99
+ limit,
100
+ page,
101
+ totalPages: Math.ceil(result.readResult.intents.length / limit),
102
+ intents: pagedIntents,
103
+ _graphTimings: [{ name: 'intent', durationMs: _readIntentGraphMs, agents: result.agentTimings ?? [] }],
104
+ });
105
+ }
106
+ return success({ ...result.readResult, _graphTimings: [{ name: 'intent', durationMs: _readIntentGraphMs, agents: result.agentTimings ?? [] }] });
107
+ }
108
+ return error("Failed to fetch intents.");
109
+ },
110
+ });
111
+ const createIntent = defineTool({
112
+ name: "create_intent",
113
+ description: "Proposes a new intent for the user to approve. Returns a proposal widget (intent_proposal code block) that you MUST include verbatim in your response. The user will see an interactive card and can approve or skip. Pass a clear, concept-based description. The orchestrator should handle URL scraping and vagueness checks BEFORE calling this tool.",
114
+ querySchema: z.object({
115
+ description: z.string().describe("The intent in conceptual terms (scrape URLs and check specificity before calling)"),
116
+ indexId: z.string().optional().describe("Index UUID to link the intent to. Defaults to current index when scoped."),
117
+ }),
118
+ handler: async ({ context, query }) => {
119
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
120
+ if (scopeErr)
121
+ return error(scopeErr);
122
+ if (!query.description?.trim()) {
123
+ return error("Description is required.");
124
+ }
125
+ // Strict scope enforcement
126
+ if (context.indexId && query.indexId?.trim() && query.indexId.trim() !== context.indexId) {
127
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only create intents in this community.`);
128
+ }
129
+ const effectiveIndexId = context.indexId || query.indexId?.trim() || undefined;
130
+ // Fetch profile (the intent graph needs it for inference)
131
+ const _profileGraphStart1 = Date.now();
132
+ const _createIntentProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
133
+ _createIntentProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
134
+ const profileResult = await graphs.profile.invoke({ userId: context.userId, operationMode: 'query' });
135
+ const _profileGraphMs1 = Date.now() - _profileGraphStart1;
136
+ _createIntentProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _profileGraphMs1 });
137
+ const userProfile = profileResult.profile ? JSON.stringify(profileResult.profile) : "";
138
+ // Run inference + verification only (propose mode — no DB persistence)
139
+ const _intentGraphStart1 = Date.now();
140
+ const _createIntentTraceEmitter = requestContext.getStore()?.traceEmitter;
141
+ _createIntentTraceEmitter?.({ type: "graph_start", name: "intent" });
142
+ const result = await graphs.intent.invoke({
143
+ userId: context.userId,
144
+ userProfile,
145
+ inputContent: query.description,
146
+ operationMode: 'propose',
147
+ ...(effectiveIndexId ? { indexId: effectiveIndexId } : {}),
148
+ });
149
+ const _intentGraphMs1 = Date.now() - _intentGraphStart1;
150
+ _createIntentTraceEmitter?.({ type: "graph_end", name: "intent", durationMs: _intentGraphMs1 });
151
+ logger.debug("Intent graph propose response", { result });
152
+ const verified = result.verifiedIntents || [];
153
+ // Extract trace from graph and convert to debugSteps
154
+ const trace = Array.isArray(result.trace) ? result.trace : [];
155
+ const debugSteps = trace.map((t) => ({
156
+ step: t.node,
157
+ detail: t.detail,
158
+ ...(t.data ? { data: t.data } : {}),
159
+ }));
160
+ if (verified.length === 0) {
161
+ // Build a descriptive rejection reason from the trace so the ReACT agent
162
+ // can retry with a better description or ask the user for clarification.
163
+ // When inference produces 0 intents, propose mode exits before verification
164
+ // runs — so we check inference trace first.
165
+ const verificationTrace = debugSteps.find((s) => s.step === "verification");
166
+ if (!verificationTrace) {
167
+ const inferenceHint = debugSteps.find((s) => s.step === "inference")?.detail
168
+ ?? "no intents extracted";
169
+ return error(`No actionable intent was extracted (${inferenceHint}). ` +
170
+ `Please retry with a more specific goal (what kind, what for, and/or timeframe), ` +
171
+ `or ask the user to clarify.`, debugSteps);
172
+ }
173
+ const rejectionHint = verificationTrace.detail ?? "all candidate intents were filtered as invalid or too vague";
174
+ return error(`Intent verification failed (${rejectionHint}). ` +
175
+ `The description may be too vague or was classified as a statement rather than a goal. ` +
176
+ `Either retry with a more specific description (e.g. include what kind, what for, or a timeframe) ` +
177
+ `or ask the user to clarify what exactly they are looking for.`, debugSteps);
178
+ }
179
+ // Build intent_proposal code fences for each verified intent
180
+ const proposalBlocks = verified.map((v) => {
181
+ const proposalId = crypto.randomUUID();
182
+ const data = {
183
+ proposalId,
184
+ description: v.description,
185
+ ...(effectiveIndexId ? { indexId: effectiveIndexId } : {}),
186
+ confidence: v.score != null ? Math.round(v.score * 100) / 100 : null,
187
+ speechActType: v.verification?.classification ?? null,
188
+ };
189
+ return ("```intent_proposal\n" +
190
+ sanitizeJsonForCodeFence(JSON.stringify(data)) +
191
+ "\n```");
192
+ });
193
+ const blocksText = proposalBlocks.join("\n\n");
194
+ return success({
195
+ proposed: true,
196
+ count: verified.length,
197
+ message: `IMPORTANT: Include the following \`\`\`intent_proposal code blocks EXACTLY as-is in your response (they render as interactive cards for the user to approve or skip):\n\n${blocksText}`,
198
+ debugSteps,
199
+ _graphTimings: [
200
+ { name: 'profile', durationMs: _profileGraphMs1, agents: profileResult.agentTimings ?? [] },
201
+ { name: 'intent', durationMs: _intentGraphMs1, agents: result.agentTimings ?? [] },
202
+ ],
203
+ });
204
+ },
205
+ });
206
+ const updateIntent = defineTool({
207
+ name: "update_intent",
208
+ description: "Updates an existing intent's description. Requires intentId from read_intents. When chat is index-scoped, can only update intents linked to that index.",
209
+ querySchema: z.object({
210
+ intentId: z.string().describe("Intent UUID from read_intents"),
211
+ newDescription: z.string().describe("New description for the intent"),
212
+ }),
213
+ handler: async ({ context, query }) => {
214
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
215
+ if (scopeErr)
216
+ return error(scopeErr);
217
+ const intentId = query.intentId?.trim() ?? "";
218
+ if (!UUID_REGEX.test(intentId)) {
219
+ return error("Invalid intent ID format.");
220
+ }
221
+ // Strict scope enforcement: when chat is index-scoped, verify intent is linked to that index
222
+ if (context.indexId) {
223
+ const db = deps.userDb;
224
+ const intentIndexes = await db.getIndexIdsForIntent(intentId);
225
+ if (!intentIndexes.includes(context.indexId)) {
226
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only update intents linked to this community.`);
227
+ }
228
+ }
229
+ const _profileGraphStart2 = Date.now();
230
+ const _updateIntentProfileTraceEmitter = requestContext.getStore()?.traceEmitter;
231
+ _updateIntentProfileTraceEmitter?.({ type: "graph_start", name: "profile" });
232
+ const profileResult = await graphs.profile.invoke({ userId: context.userId, operationMode: 'query' });
233
+ const _profileGraphMs2 = Date.now() - _profileGraphStart2;
234
+ _updateIntentProfileTraceEmitter?.({ type: "graph_end", name: "profile", durationMs: _profileGraphMs2 });
235
+ const userProfile = profileResult.profile ? JSON.stringify(profileResult.profile) : "";
236
+ const _intentGraphStart2 = Date.now();
237
+ const _updateIntentTraceEmitter = requestContext.getStore()?.traceEmitter;
238
+ _updateIntentTraceEmitter?.({ type: "graph_start", name: "intent" });
239
+ const result = await graphs.intent.invoke({
240
+ userId: context.userId,
241
+ userProfile,
242
+ operationMode: 'update',
243
+ inputContent: query.newDescription,
244
+ targetIntentIds: [intentId],
245
+ ...(context.indexId && { indexId: context.indexId }),
246
+ });
247
+ const _intentGraphMs2 = Date.now() - _intentGraphStart2;
248
+ _updateIntentTraceEmitter?.({ type: "graph_end", name: "intent", durationMs: _intentGraphMs2 });
249
+ if (result.executionResults?.some((r) => !r.success)) {
250
+ return error("Failed to update intent.");
251
+ }
252
+ return success({
253
+ message: "Intent updated.",
254
+ _graphTimings: [
255
+ { name: 'profile', durationMs: _profileGraphMs2, agents: profileResult.agentTimings ?? [] },
256
+ { name: 'intent', durationMs: _intentGraphMs2, agents: result.agentTimings ?? [] },
257
+ ],
258
+ });
259
+ },
260
+ });
261
+ const deleteIntent = defineTool({
262
+ name: "delete_intent",
263
+ description: "Deletes (archives) an intent. Requires intentId from read_intents. When chat is index-scoped, can only delete intents linked to that index.",
264
+ querySchema: z.object({
265
+ intentId: z.string().describe("Intent UUID from read_intents"),
266
+ }),
267
+ handler: async ({ context, query }) => {
268
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
269
+ if (scopeErr)
270
+ return error(scopeErr);
271
+ const intentId = query.intentId?.trim() ?? "";
272
+ if (!UUID_REGEX.test(intentId)) {
273
+ return error("Invalid intent ID format.");
274
+ }
275
+ // Strict scope enforcement: when chat is index-scoped, verify intent is linked to that index
276
+ if (context.indexId) {
277
+ const db = deps.userDb;
278
+ const intentIndexes = await db.getIndexIdsForIntent(intentId);
279
+ if (!intentIndexes.includes(context.indexId)) {
280
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only delete intents linked to this community.`);
281
+ }
282
+ }
283
+ const _deleteIntentGraphStart = Date.now();
284
+ const _deleteIntentTraceEmitter = requestContext.getStore()?.traceEmitter;
285
+ _deleteIntentTraceEmitter?.({ type: "graph_start", name: "intent" });
286
+ const result = await graphs.intent.invoke({
287
+ userId: context.userId,
288
+ userProfile: "",
289
+ operationMode: 'delete',
290
+ targetIntentIds: [intentId],
291
+ ...(context.indexId && { indexId: context.indexId }),
292
+ });
293
+ const _deleteIntentGraphMs = Date.now() - _deleteIntentGraphStart;
294
+ _deleteIntentTraceEmitter?.({ type: "graph_end", name: "intent", durationMs: _deleteIntentGraphMs });
295
+ if (result.executionResults?.some((r) => !r.success)) {
296
+ return error("Failed to delete intent.");
297
+ }
298
+ return success({
299
+ message: "Intent archived.",
300
+ _graphTimings: [{ name: 'intent', durationMs: _deleteIntentGraphMs, agents: result.agentTimings ?? [] }],
301
+ });
302
+ },
303
+ });
304
+ // ─────────────────────────────────────────────────────────────────────────────
305
+ // INTENT–INDEX JUNCTION (link / list / unlink)
306
+ // ─────────────────────────────────────────────────────────────────────────────
307
+ const createIntentIndex = defineTool({
308
+ name: "create_intent_index",
309
+ description: "Links an intent to an index. Requires intentId and indexId. When chat is index-scoped, can only link to the scoped index.",
310
+ querySchema: z.object({
311
+ intentId: z.string().describe("Intent UUID from read_intents"),
312
+ indexId: z.string().optional().describe("Index UUID from read_indexes. Defaults to current index when scoped."),
313
+ }),
314
+ handler: async ({ context, query }) => {
315
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
316
+ if (scopeErr)
317
+ return error(scopeErr);
318
+ const intentId = query.intentId?.trim() ?? "";
319
+ const indexId = query.indexId?.trim() || context.indexId || "";
320
+ if (!UUID_REGEX.test(intentId) || !UUID_REGEX.test(indexId)) {
321
+ return error("Invalid ID format. Both must be UUIDs.");
322
+ }
323
+ // Strict scope enforcement: when chat is index-scoped, only allow linking to that index
324
+ if (context.indexId && indexId !== context.indexId) {
325
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only link intents to this community.`);
326
+ }
327
+ const _createIntentIndexGraphStart = Date.now();
328
+ const _createIntentIndexTraceEmitter = requestContext.getStore()?.traceEmitter;
329
+ _createIntentIndexTraceEmitter?.({ type: "graph_start", name: "intent_index" });
330
+ const result = await graphs.intentIndex.invoke({
331
+ userId: context.userId,
332
+ indexId,
333
+ intentId,
334
+ operationMode: 'create',
335
+ skipEvaluation: true,
336
+ });
337
+ const _createIntentIndexGraphMs = Date.now() - _createIntentIndexGraphStart;
338
+ _createIntentIndexTraceEmitter?.({ type: "graph_end", name: "intent_index", durationMs: _createIntentIndexGraphMs });
339
+ if (result.mutationResult) {
340
+ if (result.mutationResult.success) {
341
+ return success({
342
+ created: true,
343
+ message: result.mutationResult.message,
344
+ _graphTimings: [{ name: 'intent_index', durationMs: _createIntentIndexGraphMs, agents: result.agentTimings ?? [] }],
345
+ });
346
+ }
347
+ return error(result.mutationResult.error || "Failed to link intent to index.");
348
+ }
349
+ return error("Failed to link intent to index.");
350
+ },
351
+ });
352
+ const readIntentIndexes = defineTool({
353
+ name: "read_intent_indexes",
354
+ description: "Reads intent-index links. Pass indexId to list intents in that index (add userId to filter). Pass intentId to check if it's linked to an index. When chat is index-scoped, only the scoped index can be queried.",
355
+ querySchema: z.object({
356
+ intentId: z.string().optional().describe("Intent UUID — checks if linked to the current/specified index."),
357
+ indexId: z.string().optional().describe("Index UUID — returns intents in this index. Defaults to current index when scoped."),
358
+ userId: z.string().optional().describe("Filter by user when listing by index."),
359
+ }),
360
+ handler: async ({ context, query }) => {
361
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
362
+ if (scopeErr)
363
+ return error(scopeErr);
364
+ const intentId = query.intentId?.trim() || undefined;
365
+ let indexId = query.indexId?.trim() || context.indexId || undefined;
366
+ const queryUserId = query.userId?.trim() || undefined;
367
+ if (intentId && !UUID_REGEX.test(intentId)) {
368
+ return error("Invalid intent ID format.");
369
+ }
370
+ if (indexId && !UUID_REGEX.test(indexId)) {
371
+ return error("Invalid index ID format.");
372
+ }
373
+ if (!intentId && !indexId) {
374
+ return error("Provide indexId or intentId.");
375
+ }
376
+ // Strict scope enforcement: when chat is index-scoped, only allow querying that index
377
+ if (context.indexId && indexId && indexId !== context.indexId) {
378
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only read intent links from this community.`);
379
+ }
380
+ // When only intentId is provided, enforce scope - don't reveal all linked indexes
381
+ if (intentId && !indexId) {
382
+ if (context.indexId) {
383
+ // When scoped, only check if intent is linked to the scoped index
384
+ indexId = context.indexId;
385
+ }
386
+ else {
387
+ // When unscoped, still don't reveal all indexes - require explicit indexId
388
+ return error("Please provide an indexId to check if the intent is linked to a specific index. Listing all linked indexes is not supported.");
389
+ }
390
+ }
391
+ const _readIntentIndexGraphStart = Date.now();
392
+ const _readIntentIndexTraceEmitter = requestContext.getStore()?.traceEmitter;
393
+ _readIntentIndexTraceEmitter?.({ type: "graph_start", name: "intent_index" });
394
+ const result = await graphs.intentIndex.invoke({
395
+ userId: context.userId,
396
+ indexId,
397
+ intentId,
398
+ operationMode: 'read',
399
+ queryUserId,
400
+ });
401
+ const _readIntentIndexGraphMs = Date.now() - _readIntentIndexGraphStart;
402
+ _readIntentIndexTraceEmitter?.({ type: "graph_end", name: "intent_index", durationMs: _readIntentIndexGraphMs });
403
+ if (result.error) {
404
+ return error(result.error);
405
+ }
406
+ if (result.readResult) {
407
+ return success({ ...result.readResult, _graphTimings: [{ name: 'intent_index', durationMs: _readIntentIndexGraphMs, agents: result.agentTimings ?? [] }] });
408
+ }
409
+ return error("Failed to fetch intent-index links.");
410
+ },
411
+ });
412
+ const deleteIntentIndex = defineTool({
413
+ name: "delete_intent_index",
414
+ description: "Unlinks an intent from an index. Does not delete the intent itself. When chat is index-scoped, can only unlink from the scoped index.",
415
+ querySchema: z.object({
416
+ intentId: z.string().describe("Intent UUID"),
417
+ indexId: z.string().optional().describe("Index UUID. Defaults to current index when scoped."),
418
+ }),
419
+ handler: async ({ context, query }) => {
420
+ const scopeErr = await ensureScopedMembership(context, deps.systemDb);
421
+ if (scopeErr)
422
+ return error(scopeErr);
423
+ const intentId = query.intentId?.trim() ?? "";
424
+ const indexId = query.indexId?.trim() || context.indexId || "";
425
+ if (!UUID_REGEX.test(intentId) || !UUID_REGEX.test(indexId)) {
426
+ return error("Invalid ID format. Both must be UUIDs.");
427
+ }
428
+ // Strict scope enforcement: when chat is index-scoped, only allow unlinking from that index
429
+ if (context.indexId && indexId !== context.indexId) {
430
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only unlink intents from this community.`);
431
+ }
432
+ const _deleteIntentIndexGraphStart = Date.now();
433
+ const _deleteIntentIndexTraceEmitter = requestContext.getStore()?.traceEmitter;
434
+ _deleteIntentIndexTraceEmitter?.({ type: "graph_start", name: "intent_index" });
435
+ const result = await graphs.intentIndex.invoke({
436
+ userId: context.userId,
437
+ indexId,
438
+ intentId,
439
+ operationMode: 'delete',
440
+ });
441
+ const _deleteIntentIndexGraphMs = Date.now() - _deleteIntentIndexGraphStart;
442
+ _deleteIntentIndexTraceEmitter?.({ type: "graph_end", name: "intent_index", durationMs: _deleteIntentIndexGraphMs });
443
+ if (result.mutationResult) {
444
+ if (result.mutationResult.success) {
445
+ return success({
446
+ deleted: true,
447
+ message: result.mutationResult.message,
448
+ _graphTimings: [{ name: 'intent_index', durationMs: _deleteIntentIndexGraphMs, agents: result.agentTimings ?? [] }],
449
+ });
450
+ }
451
+ return error(result.mutationResult.error || "Failed to unlink.");
452
+ }
453
+ return error("Failed to unlink intent from index.");
454
+ },
455
+ });
456
+ return [readIntents, createIntent, updateIntent, deleteIntent, createIntentIndex, readIntentIndexes, deleteIntentIndex];
457
+ }
458
+ //# sourceMappingURL=intent.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.tools.js","sourceRoot":"","sources":["../../src/tools/intent.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { DefineTool, ToolDeps } from "./tool.helpers.js";
2
+ import type { Opportunity } from "../interfaces/database.interface.js";
3
+ /**
4
+ * Build minimal opportunity card data for chat without calling the LLM presenter.
5
+ * Uses only required fields from the opportunity record and counterpart name/avatar
6
+ * so list_opportunities and discovery return quickly.
7
+ *
8
+ * Note: narratorChip.text is generated via regex heuristics (narratorRemarkFromReasoning)
9
+ * rather than the OpportunityPresenter LLM. If narrator quality becomes an issue again,
10
+ * consider making this function async and delegating to OpportunityPresenter.presentHomeCard()
11
+ * which already produces a high-quality narratorRemark via LLM (used by the home graph
12
+ * and discovery pipeline). The trade-off is 5-20s latency per card.
13
+ *
14
+ * Exported for use in tests (opportunity.tools.spec.ts).
15
+ */
16
+ export declare function buildMinimalOpportunityCard(opp: Opportunity, viewerId: string, counterpartUserId: string, counterpartName: string, counterpartAvatar: string | null, introducerName?: string | null, introducerAvatar?: string | null, viewerName?: string, secondPartyName?: string, secondPartyAvatar?: string | null, secondPartyUserId?: string, isCounterpartGhost?: boolean): {
17
+ opportunityId: string;
18
+ userId: string;
19
+ name: string;
20
+ avatar: string | null;
21
+ mainText: string;
22
+ cta: string;
23
+ headline: string;
24
+ primaryActionLabel: string;
25
+ secondaryActionLabel: string;
26
+ mutualIntentsLabel: string;
27
+ narratorChip: {
28
+ name: string;
29
+ text: string;
30
+ avatar?: string | null;
31
+ userId?: string;
32
+ };
33
+ viewerRole: string;
34
+ score: number | undefined;
35
+ status: string;
36
+ isGhost: boolean;
37
+ secondParty?: {
38
+ name: string;
39
+ avatar?: string | null;
40
+ userId?: string;
41
+ };
42
+ };
43
+ export declare function createOpportunityTools(defineTool: DefineTool, deps: ToolDeps): readonly [any, any, any];
44
+ //# sourceMappingURL=opportunity.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opportunity.tools.d.ts","sourceRoot":"","sources":["../../src/tools/opportunity.tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAkBvE;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,EACxB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,EACjC,iBAAiB,CAAC,EAAE,MAAM,EAC1B,kBAAkB,CAAC,EAAE,OAAO,GAC3B;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE,CA6DA;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,4BA+2B5E"}