keyring-agent-core 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 (318) hide show
  1. package/README.md +169 -0
  2. package/dist/agent/AgentCore.d.ts +220 -0
  3. package/dist/agent/AgentCore.d.ts.map +1 -0
  4. package/dist/agent/AgentCore.js +950 -0
  5. package/dist/agent/AgentCore.js.map +1 -0
  6. package/dist/agent/QueryRewriter.d.ts +67 -0
  7. package/dist/agent/QueryRewriter.d.ts.map +1 -0
  8. package/dist/agent/QueryRewriter.js +262 -0
  9. package/dist/agent/QueryRewriter.js.map +1 -0
  10. package/dist/agent/Router.d.ts +33 -0
  11. package/dist/agent/Router.d.ts.map +1 -0
  12. package/dist/agent/Router.js +191 -0
  13. package/dist/agent/Router.js.map +1 -0
  14. package/dist/agent/Subagent.d.ts +63 -0
  15. package/dist/agent/Subagent.d.ts.map +1 -0
  16. package/dist/agent/Subagent.js +240 -0
  17. package/dist/agent/Subagent.js.map +1 -0
  18. package/dist/agent/Synthesizer.d.ts +11 -0
  19. package/dist/agent/Synthesizer.d.ts.map +1 -0
  20. package/dist/agent/Synthesizer.js +86 -0
  21. package/dist/agent/Synthesizer.js.map +1 -0
  22. package/dist/agent/index.d.ts +10 -0
  23. package/dist/agent/index.d.ts.map +1 -0
  24. package/dist/agent/index.js +24 -0
  25. package/dist/agent/index.js.map +1 -0
  26. package/dist/agent/subagents/AiAgent.d.ts +6 -0
  27. package/dist/agent/subagents/AiAgent.d.ts.map +1 -0
  28. package/dist/agent/subagents/AiAgent.js +48 -0
  29. package/dist/agent/subagents/AiAgent.js.map +1 -0
  30. package/dist/agent/subagents/NftAgent.d.ts +6 -0
  31. package/dist/agent/subagents/NftAgent.d.ts.map +1 -0
  32. package/dist/agent/subagents/NftAgent.js +69 -0
  33. package/dist/agent/subagents/NftAgent.js.map +1 -0
  34. package/dist/agent/subagents/PoolAgent.d.ts +6 -0
  35. package/dist/agent/subagents/PoolAgent.d.ts.map +1 -0
  36. package/dist/agent/subagents/PoolAgent.js +184 -0
  37. package/dist/agent/subagents/PoolAgent.js.map +1 -0
  38. package/dist/agent/subagents/TokenAgent.d.ts +6 -0
  39. package/dist/agent/subagents/TokenAgent.d.ts.map +1 -0
  40. package/dist/agent/subagents/TokenAgent.js +75 -0
  41. package/dist/agent/subagents/TokenAgent.js.map +1 -0
  42. package/dist/agent/subagents/WalletAgent.d.ts +6 -0
  43. package/dist/agent/subagents/WalletAgent.d.ts.map +1 -0
  44. package/dist/agent/subagents/WalletAgent.js +92 -0
  45. package/dist/agent/subagents/WalletAgent.js.map +1 -0
  46. package/dist/agent/subagents/index.d.ts +14 -0
  47. package/dist/agent/subagents/index.d.ts.map +1 -0
  48. package/dist/agent/subagents/index.js +38 -0
  49. package/dist/agent/subagents/index.js.map +1 -0
  50. package/dist/constants/abi.d.ts +520 -0
  51. package/dist/constants/abi.d.ts.map +1 -0
  52. package/dist/constants/abi.js +667 -0
  53. package/dist/constants/abi.js.map +1 -0
  54. package/dist/functions/pool.d.ts +25 -0
  55. package/dist/functions/pool.d.ts.map +1 -0
  56. package/dist/functions/pool.js +151 -0
  57. package/dist/functions/pool.js.map +1 -0
  58. package/dist/functions/web3.d.ts +32 -0
  59. package/dist/functions/web3.d.ts.map +1 -0
  60. package/dist/functions/web3.js +277 -0
  61. package/dist/functions/web3.js.map +1 -0
  62. package/dist/index.d.ts +24 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +65 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/llm/GeminiProvider.d.ts +16 -0
  67. package/dist/llm/GeminiProvider.d.ts.map +1 -0
  68. package/dist/llm/GeminiProvider.js +248 -0
  69. package/dist/llm/GeminiProvider.js.map +1 -0
  70. package/dist/llm/index.d.ts +2 -0
  71. package/dist/llm/index.d.ts.map +1 -0
  72. package/dist/llm/index.js +6 -0
  73. package/dist/llm/index.js.map +1 -0
  74. package/dist/memory/ChatHistory.d.ts +83 -0
  75. package/dist/memory/ChatHistory.d.ts.map +1 -0
  76. package/dist/memory/ChatHistory.js +143 -0
  77. package/dist/memory/ChatHistory.js.map +1 -0
  78. package/dist/memory/KnowledgeBase.d.ts +38 -0
  79. package/dist/memory/KnowledgeBase.d.ts.map +1 -0
  80. package/dist/memory/KnowledgeBase.js +139 -0
  81. package/dist/memory/KnowledgeBase.js.map +1 -0
  82. package/dist/memory/Summarizer.d.ts +12 -0
  83. package/dist/memory/Summarizer.d.ts.map +1 -0
  84. package/dist/memory/Summarizer.js +39 -0
  85. package/dist/memory/Summarizer.js.map +1 -0
  86. package/dist/memory/UpstashKnowledgeBase.d.ts +124 -0
  87. package/dist/memory/UpstashKnowledgeBase.d.ts.map +1 -0
  88. package/dist/memory/UpstashKnowledgeBase.js +152 -0
  89. package/dist/memory/UpstashKnowledgeBase.js.map +1 -0
  90. package/dist/memory/historyUtils.d.ts +58 -0
  91. package/dist/memory/historyUtils.d.ts.map +1 -0
  92. package/dist/memory/historyUtils.js +190 -0
  93. package/dist/memory/historyUtils.js.map +1 -0
  94. package/dist/memory/index.d.ts +7 -0
  95. package/dist/memory/index.d.ts.map +1 -0
  96. package/dist/memory/index.js +12 -0
  97. package/dist/memory/index.js.map +1 -0
  98. package/dist/memory/ingestKnowledgeBase.d.ts +17 -0
  99. package/dist/memory/ingestKnowledgeBase.d.ts.map +1 -0
  100. package/dist/memory/ingestKnowledgeBase.js +35 -0
  101. package/dist/memory/ingestKnowledgeBase.js.map +1 -0
  102. package/dist/services/MoralisService.d.ts +1350 -0
  103. package/dist/services/MoralisService.d.ts.map +1 -0
  104. package/dist/services/MoralisService.js +1364 -0
  105. package/dist/services/MoralisService.js.map +1 -0
  106. package/dist/services/PantographService.d.ts +38 -0
  107. package/dist/services/PantographService.d.ts.map +1 -0
  108. package/dist/services/PantographService.js +199 -0
  109. package/dist/services/PantographService.js.map +1 -0
  110. package/dist/services/PoolService.d.ts +241 -0
  111. package/dist/services/PoolService.d.ts.map +1 -0
  112. package/dist/services/PoolService.js +507 -0
  113. package/dist/services/PoolService.js.map +1 -0
  114. package/dist/services/UniswapService.d.ts +289 -0
  115. package/dist/services/UniswapService.d.ts.map +1 -0
  116. package/dist/services/UniswapService.js +585 -0
  117. package/dist/services/UniswapService.js.map +1 -0
  118. package/dist/services/swap/BaseSwapService.d.ts +17 -0
  119. package/dist/services/swap/BaseSwapService.d.ts.map +1 -0
  120. package/dist/services/swap/BaseSwapService.js +19 -0
  121. package/dist/services/swap/BaseSwapService.js.map +1 -0
  122. package/dist/services/swap/DebridgeAdapter.d.ts +20 -0
  123. package/dist/services/swap/DebridgeAdapter.d.ts.map +1 -0
  124. package/dist/services/swap/DebridgeAdapter.js +175 -0
  125. package/dist/services/swap/DebridgeAdapter.js.map +1 -0
  126. package/dist/services/swap/RelayAdapter.d.ts +19 -0
  127. package/dist/services/swap/RelayAdapter.d.ts.map +1 -0
  128. package/dist/services/swap/RelayAdapter.js +189 -0
  129. package/dist/services/swap/RelayAdapter.js.map +1 -0
  130. package/dist/services/swap/SwapServiceFactory.d.ts +24 -0
  131. package/dist/services/swap/SwapServiceFactory.d.ts.map +1 -0
  132. package/dist/services/swap/SwapServiceFactory.js +74 -0
  133. package/dist/services/swap/SwapServiceFactory.js.map +1 -0
  134. package/dist/services/swap/addresses.d.ts +3 -0
  135. package/dist/services/swap/addresses.d.ts.map +1 -0
  136. package/dist/services/swap/addresses.js +68 -0
  137. package/dist/services/swap/addresses.js.map +1 -0
  138. package/dist/services/swap/affiliate.d.ts +17 -0
  139. package/dist/services/swap/affiliate.d.ts.map +1 -0
  140. package/dist/services/swap/affiliate.js +126 -0
  141. package/dist/services/swap/affiliate.js.map +1 -0
  142. package/dist/services/swap/config.d.ts +9 -0
  143. package/dist/services/swap/config.d.ts.map +1 -0
  144. package/dist/services/swap/config.js +19 -0
  145. package/dist/services/swap/config.js.map +1 -0
  146. package/dist/services/swap/index.d.ts +10 -0
  147. package/dist/services/swap/index.d.ts.map +1 -0
  148. package/dist/services/swap/index.js +22 -0
  149. package/dist/services/swap/index.js.map +1 -0
  150. package/dist/services/swap/types.d.ts +89 -0
  151. package/dist/services/swap/types.d.ts.map +1 -0
  152. package/dist/services/swap/types.js +6 -0
  153. package/dist/services/swap/types.js.map +1 -0
  154. package/dist/tools/BaseTool.d.ts +15 -0
  155. package/dist/tools/BaseTool.d.ts.map +1 -0
  156. package/dist/tools/BaseTool.js +35 -0
  157. package/dist/tools/BaseTool.js.map +1 -0
  158. package/dist/tools/ToolRegistry.d.ts +27 -0
  159. package/dist/tools/ToolRegistry.d.ts.map +1 -0
  160. package/dist/tools/ToolRegistry.js +80 -0
  161. package/dist/tools/ToolRegistry.js.map +1 -0
  162. package/dist/tools/builtin/ai/MoralisCortexTool.d.ts +33 -0
  163. package/dist/tools/builtin/ai/MoralisCortexTool.d.ts.map +1 -0
  164. package/dist/tools/builtin/ai/MoralisCortexTool.js +76 -0
  165. package/dist/tools/builtin/ai/MoralisCortexTool.js.map +1 -0
  166. package/dist/tools/builtin/ai/SolanaCortexTool.d.ts +22 -0
  167. package/dist/tools/builtin/ai/SolanaCortexTool.d.ts.map +1 -0
  168. package/dist/tools/builtin/ai/SolanaCortexTool.js +80 -0
  169. package/dist/tools/builtin/ai/SolanaCortexTool.js.map +1 -0
  170. package/dist/tools/builtin/ai/index.d.ts +5 -0
  171. package/dist/tools/builtin/ai/index.d.ts.map +1 -0
  172. package/dist/tools/builtin/ai/index.js +8 -0
  173. package/dist/tools/builtin/ai/index.js.map +1 -0
  174. package/dist/tools/builtin/index.d.ts +6 -0
  175. package/dist/tools/builtin/index.d.ts.map +1 -0
  176. package/dist/tools/builtin/index.js +22 -0
  177. package/dist/tools/builtin/index.js.map +1 -0
  178. package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts +21 -0
  179. package/dist/tools/builtin/nft/NFTContractInfoTool.d.ts.map +1 -0
  180. package/dist/tools/builtin/nft/NFTContractInfoTool.js +54 -0
  181. package/dist/tools/builtin/nft/NFTContractInfoTool.js.map +1 -0
  182. package/dist/tools/builtin/nft/NFTMetadataTool.d.ts +121 -0
  183. package/dist/tools/builtin/nft/NFTMetadataTool.d.ts.map +1 -0
  184. package/dist/tools/builtin/nft/NFTMetadataTool.js +159 -0
  185. package/dist/tools/builtin/nft/NFTMetadataTool.js.map +1 -0
  186. package/dist/tools/builtin/nft/WalletNFTsTool.d.ts +82 -0
  187. package/dist/tools/builtin/nft/WalletNFTsTool.d.ts.map +1 -0
  188. package/dist/tools/builtin/nft/WalletNFTsTool.js +172 -0
  189. package/dist/tools/builtin/nft/WalletNFTsTool.js.map +1 -0
  190. package/dist/tools/builtin/nft/index.d.ts +7 -0
  191. package/dist/tools/builtin/nft/index.d.ts.map +1 -0
  192. package/dist/tools/builtin/nft/index.js +10 -0
  193. package/dist/tools/builtin/nft/index.js.map +1 -0
  194. package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts +124 -0
  195. package/dist/tools/builtin/pool/EstimatePoolYieldTool.d.ts.map +1 -0
  196. package/dist/tools/builtin/pool/EstimatePoolYieldTool.js +235 -0
  197. package/dist/tools/builtin/pool/EstimatePoolYieldTool.js.map +1 -0
  198. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts +127 -0
  199. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.d.ts.map +1 -0
  200. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js +517 -0
  201. package/dist/tools/builtin/pool/OpenAddLiquidityFormTool.js.map +1 -0
  202. package/dist/tools/builtin/pool/PoolByAddressTool.d.ts +127 -0
  203. package/dist/tools/builtin/pool/PoolByAddressTool.d.ts.map +1 -0
  204. package/dist/tools/builtin/pool/PoolByAddressTool.js +237 -0
  205. package/dist/tools/builtin/pool/PoolByAddressTool.js.map +1 -0
  206. package/dist/tools/builtin/pool/PoolDetailTool.d.ts +127 -0
  207. package/dist/tools/builtin/pool/PoolDetailTool.d.ts.map +1 -0
  208. package/dist/tools/builtin/pool/PoolDetailTool.js +272 -0
  209. package/dist/tools/builtin/pool/PoolDetailTool.js.map +1 -0
  210. package/dist/tools/builtin/pool/PoolSearchTool.d.ts +50 -0
  211. package/dist/tools/builtin/pool/PoolSearchTool.d.ts.map +1 -0
  212. package/dist/tools/builtin/pool/PoolSearchTool.js +159 -0
  213. package/dist/tools/builtin/pool/PoolSearchTool.js.map +1 -0
  214. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts +123 -0
  215. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.d.ts.map +1 -0
  216. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js +380 -0
  217. package/dist/tools/builtin/pool/PreviewAddLiquidityTool.js.map +1 -0
  218. package/dist/tools/builtin/pool/TopPoolsTool.d.ts +68 -0
  219. package/dist/tools/builtin/pool/TopPoolsTool.d.ts.map +1 -0
  220. package/dist/tools/builtin/pool/TopPoolsTool.js +158 -0
  221. package/dist/tools/builtin/pool/TopPoolsTool.js.map +1 -0
  222. package/dist/tools/builtin/pool/index.d.ts +15 -0
  223. package/dist/tools/builtin/pool/index.d.ts.map +1 -0
  224. package/dist/tools/builtin/pool/index.js +18 -0
  225. package/dist/tools/builtin/pool/index.js.map +1 -0
  226. package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts +71 -0
  227. package/dist/tools/builtin/token/TokenAnalyticsTool.d.ts.map +1 -0
  228. package/dist/tools/builtin/token/TokenAnalyticsTool.js +146 -0
  229. package/dist/tools/builtin/token/TokenAnalyticsTool.js.map +1 -0
  230. package/dist/tools/builtin/token/TokenHoldersTool.d.ts +81 -0
  231. package/dist/tools/builtin/token/TokenHoldersTool.d.ts.map +1 -0
  232. package/dist/tools/builtin/token/TokenHoldersTool.js +138 -0
  233. package/dist/tools/builtin/token/TokenHoldersTool.js.map +1 -0
  234. package/dist/tools/builtin/token/TokenInfoTool.d.ts +36 -0
  235. package/dist/tools/builtin/token/TokenInfoTool.d.ts.map +1 -0
  236. package/dist/tools/builtin/token/TokenInfoTool.js +163 -0
  237. package/dist/tools/builtin/token/TokenInfoTool.js.map +1 -0
  238. package/dist/tools/builtin/token/TokenScoreTool.d.ts +63 -0
  239. package/dist/tools/builtin/token/TokenScoreTool.d.ts.map +1 -0
  240. package/dist/tools/builtin/token/TokenScoreTool.js +147 -0
  241. package/dist/tools/builtin/token/TokenScoreTool.js.map +1 -0
  242. package/dist/tools/builtin/token/TopGainersTool.d.ts +46 -0
  243. package/dist/tools/builtin/token/TopGainersTool.d.ts.map +1 -0
  244. package/dist/tools/builtin/token/TopGainersTool.js +110 -0
  245. package/dist/tools/builtin/token/TopGainersTool.js.map +1 -0
  246. package/dist/tools/builtin/token/TopLosersTool.d.ts +66 -0
  247. package/dist/tools/builtin/token/TopLosersTool.d.ts.map +1 -0
  248. package/dist/tools/builtin/token/TopLosersTool.js +128 -0
  249. package/dist/tools/builtin/token/TopLosersTool.js.map +1 -0
  250. package/dist/tools/builtin/token/TrendingTokensTool.d.ts +39 -0
  251. package/dist/tools/builtin/token/TrendingTokensTool.d.ts.map +1 -0
  252. package/dist/tools/builtin/token/TrendingTokensTool.js +75 -0
  253. package/dist/tools/builtin/token/TrendingTokensTool.js.map +1 -0
  254. package/dist/tools/builtin/token/index.d.ts +15 -0
  255. package/dist/tools/builtin/token/index.d.ts.map +1 -0
  256. package/dist/tools/builtin/token/index.js +18 -0
  257. package/dist/tools/builtin/token/index.js.map +1 -0
  258. package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts +70 -0
  259. package/dist/tools/builtin/wallet/TransactionByHashTool.d.ts.map +1 -0
  260. package/dist/tools/builtin/wallet/TransactionByHashTool.js +110 -0
  261. package/dist/tools/builtin/wallet/TransactionByHashTool.js.map +1 -0
  262. package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts +107 -0
  263. package/dist/tools/builtin/wallet/WalletApprovalsTool.d.ts.map +1 -0
  264. package/dist/tools/builtin/wallet/WalletApprovalsTool.js +163 -0
  265. package/dist/tools/builtin/wallet/WalletApprovalsTool.js.map +1 -0
  266. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts +61 -0
  267. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.d.ts.map +1 -0
  268. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js +99 -0
  269. package/dist/tools/builtin/wallet/WalletDefiPositionsTool.js.map +1 -0
  270. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts +68 -0
  271. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.d.ts.map +1 -0
  272. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js +114 -0
  273. package/dist/tools/builtin/wallet/WalletDefiProtocolPositionsTool.js.map +1 -0
  274. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts +50 -0
  275. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.d.ts.map +1 -0
  276. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js +79 -0
  277. package/dist/tools/builtin/wallet/WalletDefiSummaryTool.js.map +1 -0
  278. package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts +31 -0
  279. package/dist/tools/builtin/wallet/WalletHistoryTool.d.ts.map +1 -0
  280. package/dist/tools/builtin/wallet/WalletHistoryTool.js +153 -0
  281. package/dist/tools/builtin/wallet/WalletHistoryTool.js.map +1 -0
  282. package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts +44 -0
  283. package/dist/tools/builtin/wallet/WalletNetWorthTool.d.ts.map +1 -0
  284. package/dist/tools/builtin/wallet/WalletNetWorthTool.js +122 -0
  285. package/dist/tools/builtin/wallet/WalletNetWorthTool.js.map +1 -0
  286. package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts +86 -0
  287. package/dist/tools/builtin/wallet/WalletNftTransfersTool.d.ts.map +1 -0
  288. package/dist/tools/builtin/wallet/WalletNftTransfersTool.js +264 -0
  289. package/dist/tools/builtin/wallet/WalletNftTransfersTool.js.map +1 -0
  290. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts +43 -0
  291. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.d.ts.map +1 -0
  292. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js +88 -0
  293. package/dist/tools/builtin/wallet/WalletPnlSummaryTool.js.map +1 -0
  294. package/dist/tools/builtin/wallet/WalletPnlTool.d.ts +43 -0
  295. package/dist/tools/builtin/wallet/WalletPnlTool.d.ts.map +1 -0
  296. package/dist/tools/builtin/wallet/WalletPnlTool.js +174 -0
  297. package/dist/tools/builtin/wallet/WalletPnlTool.js.map +1 -0
  298. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts +35 -0
  299. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.d.ts.map +1 -0
  300. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js +67 -0
  301. package/dist/tools/builtin/wallet/WalletTokenBalancesTool.js.map +1 -0
  302. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts +109 -0
  303. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.d.ts.map +1 -0
  304. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js +353 -0
  305. package/dist/tools/builtin/wallet/WalletTokenTransfersTool.js.map +1 -0
  306. package/dist/tools/builtin/wallet/index.d.ts +25 -0
  307. package/dist/tools/builtin/wallet/index.d.ts.map +1 -0
  308. package/dist/tools/builtin/wallet/index.js +28 -0
  309. package/dist/tools/builtin/wallet/index.js.map +1 -0
  310. package/dist/tools/index.d.ts +4 -0
  311. package/dist/tools/index.d.ts.map +1 -0
  312. package/dist/tools/index.js +23 -0
  313. package/dist/tools/index.js.map +1 -0
  314. package/dist/types/index.d.ts +566 -0
  315. package/dist/types/index.d.ts.map +1 -0
  316. package/dist/types/index.js +6 -0
  317. package/dist/types/index.js.map +1 -0
  318. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentCore.js","sourceRoot":"","sources":["../../src/agent/AgentCore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { ChatMessage, LLMProvider } from '../types';
2
+ /**
3
+ * Structured result of rewriting a user turn into a standalone query.
4
+ *
5
+ * We follow the 2025 "Contextualizer" pattern (Alhena RAG) + the findings of
6
+ * "LLMs Get Lost in Multi-Turn Conversation" (ICLR 2025): a dedicated, narrow
7
+ * LLM pass resolves coreferences and ellipsis BEFORE routing, so downstream
8
+ * components (Router, Subagent) can operate on a fully-specified question.
9
+ */
10
+ export interface RewriteResult {
11
+ /** True if the user message depends on prior turns (pronoun, ellipsis, confirmation, continuation). */
12
+ isFollowUp: boolean;
13
+ /**
14
+ * The fully-resolved, self-contained version of the user query in the user's
15
+ * language. Equal to the original message when `isFollowUp` is false.
16
+ */
17
+ rewrittenQuery: string;
18
+ /** True if the user has clearly switched topics vs recent turns (reset preferences). */
19
+ topicChanged: boolean;
20
+ /** One-line explanation, for debug only. */
21
+ reasoning: string;
22
+ /**
23
+ * BCP-47 language tag of the user's CURRENT message (e.g. "en", "vi", "ja",
24
+ * "zh", "ko"). Empty string when the LLM cannot decide. Used by AgentCore
25
+ * to stamp `language` on UIPayloads so FE renders components in the same
26
+ * language the user just typed in.
27
+ */
28
+ language: string;
29
+ }
30
+ export interface QueryRewriterOptions {
31
+ /** How many recent messages to feed the rewriter. Default: 8 */
32
+ historyMessages?: number;
33
+ /** Enable debug logging. Default: false */
34
+ debug?: boolean;
35
+ }
36
+ /**
37
+ * Dedicated query-rewriting stage — runs BEFORE the Router.
38
+ *
39
+ * Why a separate component (vs inlining in Router prompt):
40
+ * - Single responsibility → smaller, more reliable prompt for a small model.
41
+ * - Easy to test and log (you see the rewrite before routing happens).
42
+ * - Graceful degradation: any failure falls back to the original message.
43
+ * - Reusable: the rewritten query can also feed KB search later.
44
+ *
45
+ * References:
46
+ * - Alhena "Contextualizer" pattern (2025 production RAG)
47
+ * - "LLMs Get Lost in Multi-Turn Conversation" (ICLR 2025)
48
+ * - QuReTeC query resolution for conversational search
49
+ */
50
+ export declare class QueryRewriter {
51
+ private llm;
52
+ private historyMessages;
53
+ private debug;
54
+ constructor(llm: LLMProvider, options?: QueryRewriterOptions);
55
+ /**
56
+ * Rewrite the user message into a self-contained query. On any failure
57
+ * (LLM error, invalid JSON, empty output), returns the original message
58
+ * as a non-follow-up so the caller never has to handle errors.
59
+ *
60
+ * @param lastSubagents Names of the subagent(s) that handled the previous
61
+ * assistant turn. Used as a strong domain hint — short follow-ups almost
62
+ * always belong to the same domain.
63
+ */
64
+ rewrite(userMessage: string, conversationHistory: ChatMessage[], lastSubagents?: string[]): Promise<RewriteResult>;
65
+ private parseJSON;
66
+ }
67
+ //# sourceMappingURL=QueryRewriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryRewriter.d.ts","sourceRoot":"","sources":["../../src/agent/QueryRewriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGzD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,uGAAuG;IACvG,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,YAAY,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqHD,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAAU;gBAEX,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAM5D;;;;;;;;OAQG;IACG,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,WAAW,EAAE,EAClC,aAAa,GAAE,MAAM,EAAO,GAC3B,OAAO,CAAC,aAAa,CAAC;IA4GzB,OAAO,CAAC,SAAS;CAUlB"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryRewriter = void 0;
4
+ const historyUtils_1 = require("../memory/historyUtils");
5
+ const REWRITER_SYSTEM_PROMPT = `You are a CONTEXTUALIZER.
6
+
7
+ Your ONLY job: read the conversation history + the user's latest message,
8
+ and produce a SELF-CONTAINED version of that message.
9
+
10
+ Output STRICT JSON with this shape (no prose, no code fences):
11
+
12
+ {
13
+ "isFollowUp": <true|false>,
14
+ "rewrittenQuery": "<self-contained question in the user's language>",
15
+ "topicChanged": <true|false>,
16
+ "reasoning": "<one short line, user's language>"
17
+ }
18
+
19
+ ## DEFINITIONS
20
+
21
+ - "Self-contained" = a reader with ZERO access to prior turns can still
22
+ understand exactly what the user is asking.
23
+ - "Follow-up" = the message depends on prior turns (pronoun, ellipsis,
24
+ short confirmation/negation, ordinal reference, continuation cue, or
25
+ any elliptical reply to a question the assistant just asked).
26
+
27
+ ## RULES
28
+
29
+ 1. If the message is ALREADY self-contained, set isFollowUp=false and
30
+ copy the message verbatim into rewrittenQuery.
31
+ 2. If it's a follow-up, REWRITE it using the most recent relevant turn.
32
+ - Replace pronouns and deictics with their concrete antecedent.
33
+ - Fold in the verb/subject that was implied.
34
+ - Preserve the user's language and tone.
35
+ - Do NOT invent facts not present in history.
36
+ 3. If you cannot resolve the reference from history, set isFollowUp=true,
37
+ topicChanged=false, and copy the message verbatim — downstream code
38
+ will ask the user for clarification.
39
+ 4. topicChanged=true ONLY when the user clearly pivots away from the
40
+ active subject (e.g. after discussing tokens, they suddenly ask about
41
+ a random NFT collection).
42
+ 5. Never answer the user. Never produce tool calls. JSON ONLY.
43
+
44
+ ## EXAMPLES
45
+
46
+ History: assistant listed "1. USDC 2. ETH 3. PEPE"
47
+ User: "detail the first"
48
+ → {"isFollowUp": true, "rewrittenQuery": "show details for USDC",
49
+ "topicChanged": false, "reasoning": "resolved 'the first' → USDC"}
50
+
51
+ History: assistant showed transaction list page 1.
52
+ User: "xem nửa còn lại"
53
+ → {"isFollowUp": true,
54
+ "rewrittenQuery": "xem phần còn lại của lịch sử giao dịch (trang tiếp theo)",
55
+ "topicChanged": false,
56
+ "reasoning": "tiếp tục phân trang lịch sử giao dịch"}
57
+
58
+ History: assistant asked "do you want to see your PnL?"
59
+ User: "yes"
60
+ → {"isFollowUp": true, "rewrittenQuery": "show my PnL",
61
+ "topicChanged": false, "reasoning": "affirmation of PnL question"}
62
+
63
+ History: tool result contained transaction with hash "0x4296cab7553c6ead42c70918fc921f28cae58cdfbf776d2553486f812710f0f3", assistant summarised it.
64
+ User: "Details of this transaction?"
65
+ → {"isFollowUp": true,
66
+ "rewrittenQuery": "Get details of transaction hash 0x4296cab7553c6ead42c70918fc921f28cae58cdfbf776d2553486f812710f0f3",
67
+ "topicChanged": false,
68
+ "reasoning": "resolved 'this transaction' → exact hash from previous tool result"}
69
+
70
+ History: tool result contained wallet history page 1 with cursor "eyJhbGci…", assistant showed transactions.
71
+ User: "show more" / "next page" / "tiếp theo"
72
+ → {"isFollowUp": true,
73
+ "rewrittenQuery": "get next page of wallet history using cursor eyJhbGci…",
74
+ "topicChanged": false,
75
+ "reasoning": "pagination follow-up — cursor extracted from last tool result"}
76
+
77
+ History: discussing wallet tokens.
78
+ User: "what is the floor price of Bored Apes?"
79
+ → {"isFollowUp": false, "rewrittenQuery": "what is the floor price of Bored Apes?",
80
+ "topicChanged": true, "reasoning": "already self-contained; topic pivot to NFTs"}
81
+
82
+ ## IMPORTANT FOR TRANSACTION REFERENCES
83
+
84
+ When the user references "this transaction", "that tx", "the transaction above", "chi tiết giao dịch này", etc.:
85
+ - Scan the conversation history for tool results (role: "tool") that contain transaction data.
86
+ - Extract the EXACT hash value (starts with "0x", 66 chars) from the most recent such result.
87
+ - Include it verbatim in rewrittenQuery. NEVER invent or modify a hash.
88
+ - If no hash is found in history, set rewrittenQuery to the original message verbatim so the subagent knows to fetch it.`;
89
+ const LANGUAGE_DETECTOR_SYSTEM_PROMPT = `You detect the language of a single user message.
90
+
91
+ Output STRICT JSON, no prose, no code fences:
92
+ {"language": "<BCP-47 tag>"}
93
+
94
+ Allowed values: "en", "vi", "ja", "zh", "ko", "ru", "th", "ar", "fr", "es",
95
+ "de", "pt", "it", "id", "hi", "tr". Use "" only when the message has NO
96
+ decidable script signal (e.g. pure numbers, emojis, or empty).
97
+
98
+ Rules:
99
+ - Decide from the CURRENT message text only. Ignore any context.
100
+ - Latin-only short replies ("ok", "yes", "no", "sure") → "en".
101
+ - Vietnamese is detected by diacritics (ă â đ ê ô ơ ư, tone marks) OR
102
+ common Vietnamese words ("không", "có", "xem", "giúp", "làm", "tiếp").
103
+ - Chinese (Han only) → "zh". Japanese (Hiragana/Katakana present) → "ja".
104
+ - Korean (Hangul) → "ko". Cyrillic → "ru". Thai script → "th". Arabic → "ar".
105
+ - Never output anything other than the JSON object above.
106
+
107
+ Examples:
108
+ "hello" → {"language":"en"}
109
+ "xin chào" → {"language":"vi"}
110
+ "bạn có thể giúp mình" → {"language":"vi"}
111
+ "ok" → {"language":"en"}
112
+ "你好" → {"language":"zh"}
113
+ "こんにちは" → {"language":"ja"}
114
+ "안녕하세요" → {"language":"ko"}
115
+ "привет" → {"language":"ru"}
116
+ "สวัสดี" → {"language":"th"}
117
+ "123" → {"language":""}`;
118
+ /**
119
+ * Dedicated query-rewriting stage — runs BEFORE the Router.
120
+ *
121
+ * Why a separate component (vs inlining in Router prompt):
122
+ * - Single responsibility → smaller, more reliable prompt for a small model.
123
+ * - Easy to test and log (you see the rewrite before routing happens).
124
+ * - Graceful degradation: any failure falls back to the original message.
125
+ * - Reusable: the rewritten query can also feed KB search later.
126
+ *
127
+ * References:
128
+ * - Alhena "Contextualizer" pattern (2025 production RAG)
129
+ * - "LLMs Get Lost in Multi-Turn Conversation" (ICLR 2025)
130
+ * - QuReTeC query resolution for conversational search
131
+ */
132
+ class QueryRewriter {
133
+ llm;
134
+ historyMessages;
135
+ debug;
136
+ constructor(llm, options) {
137
+ this.llm = llm;
138
+ this.historyMessages = options?.historyMessages ?? 8;
139
+ this.debug = options?.debug ?? false;
140
+ }
141
+ /**
142
+ * Rewrite the user message into a self-contained query. On any failure
143
+ * (LLM error, invalid JSON, empty output), returns the original message
144
+ * as a non-follow-up so the caller never has to handle errors.
145
+ *
146
+ * @param lastSubagents Names of the subagent(s) that handled the previous
147
+ * assistant turn. Used as a strong domain hint — short follow-ups almost
148
+ * always belong to the same domain.
149
+ */
150
+ async rewrite(userMessage, conversationHistory, lastSubagents = []) {
151
+ // When there is no prior turn, a follow-up is definitionally impossible —
152
+ // BUT we still want the rewriter to run so it can detect the message's
153
+ // language (used to stamp UIPayload.language). We just clamp isFollowUp /
154
+ // topicChanged to false after parsing so the model can't fabricate context.
155
+ const hasPriorTurn = conversationHistory.some((m) => m.role === 'user' || m.role === 'assistant');
156
+ // Extract key data (hashes, cursors) from recent tool results as plain text
157
+ // so the rewriter can resolve references like "details of this tx" or
158
+ // "next page" without receiving raw functionResponse messages (which would
159
+ // cause Gemini errors since no tool schemas are declared here).
160
+ const toolDataHint = (0, historyUtils_1.extractRecentToolDataHint)(conversationHistory);
161
+ // No tools declared here → strip tool messages to avoid orphan
162
+ // functionResponse parts. Then slice a recent window, keeping tool pairs
163
+ // intact (though there should be none after stripping).
164
+ const clean = (0, historyUtils_1.stripToolMessages)(conversationHistory);
165
+ const windowed = (0, historyUtils_1.sliceRecentKeepingToolPairs)(clean, this.historyMessages);
166
+ const hintParts = [];
167
+ if (lastSubagents.length > 0) {
168
+ hintParts.push(`Domain hint: the previous assistant turn was handled by ${lastSubagents.join(', ')}. ` +
169
+ `A short follow-up almost certainly still belongs to that domain — preserve it in the rewrite.`);
170
+ }
171
+ if (toolDataHint) {
172
+ hintParts.push(toolDataHint);
173
+ }
174
+ const hintLine = hintParts.length > 0 ? `\n\n${hintParts.join('\n\n')}` : '';
175
+ const t0 = Date.now();
176
+ const rewriteMessages = [
177
+ { role: 'system', content: REWRITER_SYSTEM_PROMPT, timestamp: 0 },
178
+ ...windowed,
179
+ {
180
+ role: 'user',
181
+ content: `Latest user message to contextualize:\n${userMessage}${hintLine}\n\nReturn JSON only.`,
182
+ timestamp: Date.now(),
183
+ },
184
+ ];
185
+ // Run rewriting and language detection in parallel. Language detection
186
+ // gets ONLY the current message (no history, no hints) so it can't be
187
+ // confused by prior turns in a different language. Splitting the two
188
+ // jobs makes each prompt smaller and far more reliable on small models.
189
+ const detectMessages = [
190
+ { role: 'system', content: LANGUAGE_DETECTOR_SYSTEM_PROMPT, timestamp: 0 },
191
+ { role: 'user', content: userMessage, timestamp: Date.now() },
192
+ ];
193
+ const [rewriteRes, detectRes] = await Promise.allSettled([
194
+ this.llm.chat(rewriteMessages),
195
+ this.llm.chat(detectMessages),
196
+ ]);
197
+ let parsedRewrite = {};
198
+ if (rewriteRes.status === 'fulfilled') {
199
+ try {
200
+ parsedRewrite = this.parseJSON(rewriteRes.value.text);
201
+ }
202
+ catch (err) {
203
+ if (this.debug)
204
+ console.log(`[QueryRewriter] rewrite parse fail: ${err}`);
205
+ }
206
+ }
207
+ else if (this.debug) {
208
+ console.log(`[QueryRewriter] rewrite call fail: ${rewriteRes.reason}`);
209
+ }
210
+ let detectedLang = '';
211
+ if (detectRes.status === 'fulfilled') {
212
+ try {
213
+ const parsedDetect = this.parseJSON(detectRes.value.text);
214
+ if (typeof parsedDetect.language === 'string') {
215
+ detectedLang = parsedDetect.language.trim().toLowerCase();
216
+ }
217
+ }
218
+ catch (err) {
219
+ if (this.debug)
220
+ console.log(`[QueryRewriter] detect parse fail: ${err}`);
221
+ }
222
+ }
223
+ else if (this.debug) {
224
+ console.log(`[QueryRewriter] detect call fail: ${detectRes.reason}`);
225
+ }
226
+ const result = {
227
+ // Without a prior turn there is nothing to follow up on — clamp regardless of what the model said.
228
+ isFollowUp: hasPriorTurn && typeof parsedRewrite.isFollowUp === 'boolean' ? parsedRewrite.isFollowUp : false,
229
+ rewrittenQuery: typeof parsedRewrite.rewrittenQuery === 'string' && parsedRewrite.rewrittenQuery.trim()
230
+ ? parsedRewrite.rewrittenQuery.trim()
231
+ : userMessage,
232
+ topicChanged: hasPriorTurn && typeof parsedRewrite.topicChanged === 'boolean' ? parsedRewrite.topicChanged : false,
233
+ reasoning: typeof parsedRewrite.reasoning === 'string' ? parsedRewrite.reasoning : '',
234
+ language: detectedLang,
235
+ };
236
+ if (this.debug) {
237
+ const ms = Date.now() - t0;
238
+ const changed = result.rewrittenQuery !== userMessage;
239
+ console.log(`\n[QueryRewriter] (${ms}ms)`);
240
+ console.log(` original : "${userMessage}"`);
241
+ console.log(` rewritten : "${result.rewrittenQuery}"${changed ? '' : ' (unchanged)'}`);
242
+ console.log(` followUp : ${result.isFollowUp} topicChanged: ${result.topicChanged}`);
243
+ if (result.reasoning)
244
+ console.log(` reasoning : ${result.reasoning}`);
245
+ console.log(` language : ${result.language}`);
246
+ }
247
+ return result;
248
+ }
249
+ parseJSON(text) {
250
+ let clean = text.trim();
251
+ if (clean.startsWith('```')) {
252
+ clean = clean.replace(/^```(?:json)?\s*/, '').replace(/```\s*$/, '');
253
+ }
254
+ // Some models prefix with "Here is the JSON:" — extract the first {...} block.
255
+ const match = clean.match(/\{[\s\S]*\}/);
256
+ if (match)
257
+ clean = match[0];
258
+ return JSON.parse(clean);
259
+ }
260
+ }
261
+ exports.QueryRewriter = QueryRewriter;
262
+ //# sourceMappingURL=QueryRewriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryRewriter.js","sourceRoot":"","sources":["../../src/agent/QueryRewriter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ChatMessage, LLMProvider, RouterDecision, SubagentCard, SubagentResult, UserContext } from '../types';
2
+ import type { Subagent } from './Subagent';
3
+ /**
4
+ * Router — top-level orchestrator in the Router → Subagent → Tool architecture.
5
+ *
6
+ * The router's LLM sees only subagent "cards" (name + one-liner), which keeps
7
+ * the planning prompt small and predictable regardless of how many tools
8
+ * each subagent owns.
9
+ */
10
+ export declare class Router {
11
+ private llm;
12
+ private historyMessages;
13
+ private debug;
14
+ constructor(llm: LLMProvider, options?: {
15
+ historyMessages?: number;
16
+ debug?: boolean;
17
+ });
18
+ /**
19
+ * Ask the LLM to decide which subagent(s) should handle the query.
20
+ * Returns `{ assignments: [] }` when no subagent is needed.
21
+ *
22
+ * @param lastSubagents Subagent(s) that handled the previous assistant
23
+ * turn. Passed as a "sticky" hint — useful for short follow-ups.
24
+ */
25
+ route(userQuery: string, conversationHistory: ChatMessage[], cards: SubagentCard[], userContext?: UserContext, lastSubagents?: string[]): Promise<RouterDecision>;
26
+ /**
27
+ * Dispatch assignments to the matching subagents in parallel.
28
+ * Each subagent runs its own ReAct loop and returns a SubagentResult.
29
+ */
30
+ dispatch(decision: RouterDecision, subagents: Map<string, Subagent>, conversationHistory: ChatMessage[], userContext?: UserContext): Promise<SubagentResult[]>;
31
+ private parseJSON;
32
+ }
33
+ //# sourceMappingURL=Router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../src/agent/Router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2C3C;;;;;;GAMG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAAU;gBAEX,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAQrF;;;;;;OAMG;IACG,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,WAAW,EAAE,EAClC,KAAK,EAAE,YAAY,EAAE,EACrB,WAAW,CAAC,EAAE,WAAW,EACzB,aAAa,GAAE,MAAM,EAAO,GAC3B,OAAO,CAAC,cAAc,CAAC;IAmF1B;;;OAGG;IACG,QAAQ,CACZ,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAChC,mBAAmB,EAAE,WAAW,EAAE,EAClC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC5B,OAAO,CAAC,SAAS;CAOlB"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Router = void 0;
4
+ const historyUtils_1 = require("../memory/historyUtils");
5
+ const ROUTER_SYSTEM_PROMPT = `You are a ROUTER.
6
+
7
+ The incoming user query has ALREADY been contextualized upstream — it is a
8
+ self-contained, standalone question. Your ONLY job: decide which subagent(s)
9
+ to call. You MUST NOT answer the user — output JSON only.
10
+
11
+ ## OUTPUT FORMAT
12
+
13
+ {
14
+ "analysis": "<one-line intent summary in user's language>",
15
+ "assignments": [
16
+ {
17
+ "subagent": "<exact subagent name>",
18
+ "query": "<focused sub-query for that subagent, user's language>",
19
+ "reasoning": "<one-line reason>"
20
+ }
21
+ ]
22
+ }
23
+
24
+ ## HOW TO DECIDE
25
+
26
+ Read each subagent's description carefully — they fully define what each agent handles and what it does NOT handle.
27
+ Apply this priority order:
28
+
29
+ 1. Does the query match a specific subagent's described scope? → assign it.
30
+ 2. Does it span multiple subagent scopes? → emit MULTIPLE assignments (they run in PARALLEL).
31
+ 3. No specific subagent matches BUT the query is about blockchain / crypto / token / NFT / wallet / DeFi / on-chain data / smart contracts / any chain (EVM or Solana) → assign "ai-agent" with the user's original query.
32
+ 4. Only return "assignments": [] for pure general knowledge, small-talk, or clearly non-crypto queries.
33
+
34
+ NOTE: wallet-agent / token-agent / nft-agent each have an internal AI Cortex fallback,
35
+ so it is safe to route a wallet/token/NFT-shaped query to its matching domain agent even
36
+ if no specific structured tool obviously fits — the agent will fall back to Cortex on its own.
37
+
38
+ ## HARD RULES
39
+
40
+ - ONLY use subagent names from the provided list. NEVER invent names.
41
+ - Keep each "query" focused and concise — do not copy the full user message if only part belongs to that subagent.
42
+ - Do NOT include tool names, chain ids, or implementation details in the query field.
43
+ - Match the user's language in all fields.`;
44
+ /**
45
+ * Router — top-level orchestrator in the Router → Subagent → Tool architecture.
46
+ *
47
+ * The router's LLM sees only subagent "cards" (name + one-liner), which keeps
48
+ * the planning prompt small and predictable regardless of how many tools
49
+ * each subagent owns.
50
+ */
51
+ class Router {
52
+ llm;
53
+ historyMessages;
54
+ debug;
55
+ constructor(llm, options) {
56
+ this.llm = llm;
57
+ // Wider default window so follow-ups ("the first one", "yes") can still
58
+ // see the previous assistant reply even after a couple of short turns.
59
+ this.historyMessages = options?.historyMessages ?? 10;
60
+ this.debug = options?.debug ?? false;
61
+ }
62
+ /**
63
+ * Ask the LLM to decide which subagent(s) should handle the query.
64
+ * Returns `{ assignments: [] }` when no subagent is needed.
65
+ *
66
+ * @param lastSubagents Subagent(s) that handled the previous assistant
67
+ * turn. Passed as a "sticky" hint — useful for short follow-ups.
68
+ */
69
+ async route(userQuery, conversationHistory, cards, userContext, lastSubagents = []) {
70
+ const cardsText = cards.map((c) => `### ${c.name} (domain: ${c.domain})\n${c.description}`).join('\n\n');
71
+ const contextParts = [];
72
+ if (userContext?.walletAddress)
73
+ contextParts.push(`Connected wallet: ${userContext.walletAddress}`);
74
+ if (userContext?.chain)
75
+ contextParts.push(`Current chain: ${userContext.chain}`);
76
+ const contextSection = contextParts.length > 0 ? `\n\nUser context:\n${contextParts.join('\n')}` : '';
77
+ // Sticky-routing hint: if the previous turn was handled by subagent X,
78
+ // a follow-up very likely belongs to X too. The router is free to
79
+ // override when the query clearly belongs elsewhere.
80
+ const stickyHint = lastSubagents.length > 0
81
+ ? `\n\nPrevious turn handled by: ${lastSubagents.join(', ')}. ` +
82
+ `If this query is a natural continuation (same topic), prefer the same subagent(s). ` +
83
+ `Override only if the query clearly belongs to a different domain.`
84
+ : '';
85
+ // Router has NO tools declared, so strip tool messages (otherwise Gemini
86
+ // sees orphan functionResponse parts). Then keep the recent window
87
+ // without splitting any remaining tool-call group.
88
+ const cleanHistory = (0, historyUtils_1.stripToolMessages)(conversationHistory);
89
+ const windowed = (0, historyUtils_1.sliceRecentKeepingToolPairs)(cleanHistory, this.historyMessages);
90
+ if (this.debug) {
91
+ console.log(`\n[Router] history window (${windowed.length} msg${windowed.length === 1 ? '' : 's'}):`);
92
+ console.log(`[Router] user query: "${userQuery}"`);
93
+ }
94
+ const messages = [
95
+ { role: 'system', content: ROUTER_SYSTEM_PROMPT, timestamp: 0 },
96
+ ...windowed,
97
+ {
98
+ role: 'user',
99
+ content: `Available subagents:\n${cardsText}${contextSection}${stickyHint}\n\nUser query: ${userQuery}`,
100
+ timestamp: Date.now(),
101
+ },
102
+ ];
103
+ const t0 = Date.now();
104
+ const response = await this.llm.chat(messages);
105
+ const routerMs = Date.now() - t0;
106
+ try {
107
+ const parsed = this.parseJSON(response.text);
108
+ const validNames = new Set(cards.map((c) => c.name));
109
+ const assignments = Array.isArray(parsed.assignments)
110
+ ? parsed.assignments
111
+ .filter((a) => !!a && typeof a.subagent === 'string')
112
+ .filter((a) => validNames.has(a.subagent))
113
+ .map((a) => ({
114
+ subagent: a.subagent,
115
+ query: typeof a.query === 'string' && a.query ? a.query : userQuery,
116
+ reasoning: typeof a.reasoning === 'string' ? a.reasoning : '',
117
+ }))
118
+ : [];
119
+ if (this.debug) {
120
+ const label = assignments.length > 0 ? assignments.map((a) => a.subagent).join(', ') : '(none — direct answer)';
121
+ console.log(`\n[Router] (${routerMs}ms)`);
122
+ console.log(` analysis : ${parsed.analysis ?? ''}`);
123
+ console.log(` dispatch : ${label}`);
124
+ if (assignments.length > 0) {
125
+ for (const a of assignments) {
126
+ console.log(` → ${a.subagent}: "${a.query}"`);
127
+ console.log(` reason: ${a.reasoning}`);
128
+ }
129
+ }
130
+ }
131
+ return {
132
+ analysis: typeof parsed.analysis === 'string' ? parsed.analysis : '',
133
+ assignments,
134
+ };
135
+ }
136
+ catch (err) {
137
+ if (this.debug) {
138
+ console.log(`[Router] JSON parse failed: ${err}`);
139
+ console.log(`[Router] raw response: ${response.text.slice(0, 300)}`);
140
+ }
141
+ return { analysis: 'Router could not parse response.', assignments: [] };
142
+ }
143
+ }
144
+ /**
145
+ * Dispatch assignments to the matching subagents in parallel.
146
+ * Each subagent runs its own ReAct loop and returns a SubagentResult.
147
+ */
148
+ async dispatch(decision, subagents, conversationHistory, userContext) {
149
+ if (decision.assignments.length === 0)
150
+ return [];
151
+ if (this.debug) {
152
+ console.log(`\n[Router] dispatching ${decision.assignments.length} subagent(s) in parallel…`);
153
+ }
154
+ const t0 = Date.now();
155
+ const runs = decision.assignments.map(async (a) => {
156
+ const agent = subagents.get(a.subagent);
157
+ if (!agent) {
158
+ if (this.debug)
159
+ console.log(`[Router] WARN: subagent "${a.subagent}" not registered`);
160
+ return {
161
+ subagentName: a.subagent,
162
+ steps: [],
163
+ finalAnswer: `Subagent "${a.subagent}" is not registered.`,
164
+ toolResults: [],
165
+ toolMessages: [],
166
+ };
167
+ }
168
+ const t1 = Date.now();
169
+ const result = await agent.run({ query: a.query, reasoning: a.reasoning }, conversationHistory, userContext);
170
+ if (this.debug) {
171
+ const toolNames = result.toolResults.map((r) => r.toolName).join(', ') || '—';
172
+ console.log(`[Router] ${a.subagent} done in ${Date.now() - t1}ms | tools: ${toolNames}`);
173
+ }
174
+ return result;
175
+ });
176
+ const results = await Promise.all(runs);
177
+ if (this.debug) {
178
+ console.log(`[Router] all subagents done in ${Date.now() - t0}ms total`);
179
+ }
180
+ return results;
181
+ }
182
+ parseJSON(text) {
183
+ let clean = text.trim();
184
+ if (clean.startsWith('```')) {
185
+ clean = clean.replace(/^```(?:json)?\s*/, '').replace(/```\s*$/, '');
186
+ }
187
+ return JSON.parse(clean);
188
+ }
189
+ }
190
+ exports.Router = Router;
191
+ //# sourceMappingURL=Router.js.map