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
package/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # keyring-agent-core
2
+
3
+ Core AI chat agent package with **multi-agent architecture**, **ReAct agentic pattern**, and a modular tool system — powered by Google Gemini.
4
+
5
+ ## Architecture
6
+
7
+ ```
8
+ User Message
9
+
10
+
11
+ ┌─────────────────┐
12
+ │ AgentCore │ ← Orchestrator
13
+ │ (chat history) │
14
+ └────────┬────────┘
15
+
16
+
17
+ ┌─────────────────┐
18
+ │ Planner │ ← Analyses query, decides which tools to call
19
+ └────────┬────────┘
20
+ │ ExecutionPlan
21
+
22
+ ┌─────────────────┐
23
+ │ Executor │ ← ReAct loop: Think → Act → Observe
24
+ │ (Tool calls) │
25
+ └────────┬────────┘
26
+ │ ReActTrace
27
+
28
+ ┌─────────────────┐
29
+ │ Synthesizer │ ← Produces polished user-facing answer
30
+ └─────────────────┘
31
+ ```
32
+
33
+ ### Key patterns
34
+ - **Plan → Task → Get Data → Answer**: The Planner creates a structured execution plan; the Executor runs tools and gathers data; the Synthesizer produces the answer.
35
+ - **ReAct (Reason + Act)**: The Executor uses a Think → Act → Observe loop, allowing multi-step reasoning with tool calls.
36
+ - **Multi-agent**: Planner, Executor, and Synthesizer are independent agents, each with specialised system prompts.
37
+ - **Conversation memory**: Automatic chat history management with LLM-based summarisation when the conversation grows too long.
38
+
39
+ ## Installation
40
+
41
+ ```bash
42
+ npm install keyring-agent-core @google/generative-ai
43
+ ```
44
+
45
+ ## Quick Start
46
+
47
+ ```typescript
48
+ import { AgentCore, BaseTool, ToolParameter } from 'keyring-agent-core';
49
+
50
+ // 1. Create a tool
51
+ class FaqTool extends BaseTool {
52
+ name = 'get-faq';
53
+ description = 'Fetch FAQ data from the CoinPool API';
54
+ parameters: ToolParameter[] = [
55
+ {
56
+ name: 'query',
57
+ type: 'string',
58
+ description: 'Search query for FAQ',
59
+ required: false,
60
+ },
61
+ ];
62
+
63
+ protected async run(args: Record<string, unknown>) {
64
+ const res = await fetch('https://api.coinpool.app/faq');
65
+ return res.json();
66
+ }
67
+ }
68
+
69
+ // 2. Initialise the agent
70
+ const agent = new AgentCore({
71
+ llm: {
72
+ apiKey: process.env.GEMINI_API_KEY!,
73
+ model: 'gemini-2.5-flash-lite',
74
+ },
75
+ maxIterations: 8,
76
+ maxHistoryMessages: 40,
77
+ systemPrompt: 'You are the CoinPool assistant. Help users with their questions.',
78
+ debug: true,
79
+ });
80
+
81
+ // 3. Register tools
82
+ agent.registerTool(new FaqTool());
83
+
84
+ // 4. Chat
85
+ const response = await agent.chat('What are the fees on CoinPool?');
86
+ console.log(response.answer);
87
+ ```
88
+
89
+ ## Creating Custom Tools
90
+
91
+ Extend `BaseTool` and implement the `run()` method:
92
+
93
+ ```typescript
94
+ import { BaseTool, ToolParameter } from 'keyring-agent-core';
95
+
96
+ class MoralisAITool extends BaseTool {
97
+ name = 'moralis-ai';
98
+ description = 'Call Moralis AI for blockchain analysis';
99
+ category = 'ai';
100
+ parameters: ToolParameter[] = [
101
+ { name: 'prompt', type: 'string', description: 'Prompt for Moralis AI', required: true },
102
+ ];
103
+
104
+ protected async run(args: Record<string, unknown>) {
105
+ const response = await fetch('https://your-moralis-endpoint.com/ai', {
106
+ method: 'POST',
107
+ headers: { 'Content-Type': 'application/json' },
108
+ body: JSON.stringify({ prompt: args.prompt }),
109
+ });
110
+ return response.json();
111
+ }
112
+ }
113
+ ```
114
+
115
+ Each tool is **independent** — add or remove tools without affecting others.
116
+
117
+ ## Chat History & Summarisation
118
+
119
+ The agent automatically manages conversation history:
120
+ - Messages are stored in a `ChatHistory` instance
121
+ - When the history exceeds `maxHistoryMessages`, it is automatically summarised using the LLM and compacted
122
+ - You can persist/restore history:
123
+
124
+ ```typescript
125
+ // Save
126
+ const data = agent.serialiseHistory();
127
+ await saveToDatabase(data);
128
+
129
+ // Restore
130
+ const saved = await loadFromDatabase();
131
+ agent.restoreHistory(saved);
132
+ ```
133
+
134
+ ## API Reference
135
+
136
+ ### `AgentCore`
137
+
138
+ | Method | Description |
139
+ |---|---|
140
+ | `chat(message: string)` | Process a user message and get an answer |
141
+ | `registerTool(tool)` | Register a tool |
142
+ | `registerTools(tools)` | Register multiple tools |
143
+ | `unregisterTool(name)` | Remove a tool |
144
+ | `listTools()` | List registered tool names |
145
+ | `getHistory()` | Get full conversation history |
146
+ | `clearHistory()` | Clear conversation history |
147
+ | `serialiseHistory()` | Serialise history for persistence |
148
+ | `restoreHistory(messages)` | Restore history from saved data |
149
+
150
+ ### `AgentConfig`
151
+
152
+ ```typescript
153
+ {
154
+ llm: {
155
+ apiKey: string;
156
+ model?: string; // default: 'gemini-2.5-flash-lite'
157
+ maxTokens?: number; // default: 4096
158
+ temperature?: number; // default: 0.7
159
+ };
160
+ maxIterations?: number; // default: 10
161
+ maxHistoryMessages?: number; // default: 50
162
+ systemPrompt?: string;
163
+ debug?: boolean;
164
+ }
165
+ ```
166
+
167
+ ## License
168
+
169
+ MIT
@@ -0,0 +1,220 @@
1
+ import type { AgentConfig, ChatMessage, KnowledgeBaseEntry, LLMProvider, ReActTrace, RouterDecision, SubagentResult, Tool, UIPayload, UserContext } from '../types';
2
+ import { ToolRegistry } from '../tools/ToolRegistry';
3
+ import type { Subagent } from './Subagent';
4
+ import { type RewriteResult } from './QueryRewriter';
5
+ export interface AgentResponse {
6
+ /** The final user-facing answer */
7
+ answer: string;
8
+ /**
9
+ * Stable id for this response turn. The FE can use this as a key to persist
10
+ * `uiActions` alongside the message — e.g. `storage.set(messageId, JSON.stringify(uiActions))`.
11
+ * Format: 8-char hex derived from timestamp + random — unique within a session.
12
+ */
13
+ messageId: string;
14
+ /** Suggested follow-up prompts for the user */
15
+ suggestedPrompts?: string[];
16
+ /**
17
+ * UI components the FE should render this turn. Each entry is emitted by a
18
+ * tool with kind='ui' or 'action'. Order preserved (subagent execution order).
19
+ * The FE switches on `component` and forwards `props` verbatim.
20
+ */
21
+ uiActions?: UIPayload[];
22
+ /** Full ReAct trace (for debugging / logging) — flattened across all subagents */
23
+ trace?: ReActTrace;
24
+ /** The router's decision for this turn (for debugging) */
25
+ routerDecision?: RouterDecision;
26
+ /** Per-subagent results (for debugging / richer UIs) */
27
+ subagentResults?: SubagentResult[];
28
+ /** Query-rewrite result (standalone version of the user message, for debugging) */
29
+ rewrite?: RewriteResult;
30
+ }
31
+ /**
32
+ * Top-level orchestrator. Two-layer architecture:
33
+ *
34
+ * User query
35
+ * → Router (picks 0..N domain subagents)
36
+ * → Subagent(s) (each runs its own ReAct loop over a narrow tool set, in parallel)
37
+ * → Synthesizer (merges subagent answers into the final reply)
38
+ *
39
+ * Compared to a flat planner that sees every tool, this keeps per-call prompt
40
+ * size bounded regardless of how many tools are registered.
41
+ */
42
+ export declare class AgentCore {
43
+ private llm;
44
+ private registry;
45
+ private history;
46
+ private summarizer;
47
+ private router;
48
+ private rewriter;
49
+ private subagents;
50
+ private synthesizer;
51
+ private systemPrompt;
52
+ private debug;
53
+ private userContext;
54
+ private storage;
55
+ private storageKey;
56
+ private persistHistoryEnabled;
57
+ /** Active KB used at search time. May be the legacy LLM matcher or a vector backend. */
58
+ private kb;
59
+ /** Always-present in-memory KB that holds the original entries (used for autoIngest + as fallback). */
60
+ private kbEntries;
61
+ private vectorKB;
62
+ private vectorKBAutoIngested;
63
+ private vectorKBAutoIngestPromise;
64
+ private autoIngestEnabled;
65
+ private kbAnswerThreshold;
66
+ private suggestionsEnabled;
67
+ private historyLoaded;
68
+ private historyLoadingPromise;
69
+ /**
70
+ * Resolves once the initial persisted-history load attempt has finished
71
+ * (success or failure). Only meaningful when `persistHistory: true` and a
72
+ * `storage` provider is configured — in that case consumers rendering a
73
+ * chat list on mount should `await agent.historyReady` before calling
74
+ * {@link getHistory} / {@link getDisplayHistory}, otherwise the first read
75
+ * happens before storage has been hydrated and returns an empty array.
76
+ * With persistence disabled this still resolves (immediately), so it is
77
+ * always safe to await.
78
+ */
79
+ readonly historyReady: Promise<void>;
80
+ constructor(config: AgentConfig);
81
+ /** Register a tool so the agent can use it. */
82
+ registerTool(tool: Tool): void;
83
+ /** Register multiple tools at once. */
84
+ registerTools(tools: Tool[]): void;
85
+ /** Unregister a tool by name. */
86
+ unregisterTool(name: string): boolean;
87
+ /** List registered tool names. */
88
+ listTools(): string[];
89
+ /**
90
+ * Directly invoke a tool with structured args, bypassing the LLM/router.
91
+ *
92
+ * Use this from the FE for **deterministic actions** where the user has
93
+ * already supplied structured input via a UI form (e.g. confirming an
94
+ * AddLiquidityForm with a chosen strategy + amount). It is faster, cheaper,
95
+ * and removes the risk of the LLM mis-parsing numeric values from form data.
96
+ *
97
+ * The result is returned with the same `AgentResponse` shape as `chat()` —
98
+ * including `uiActions` collected from the tool's UI payload — so the FE
99
+ * renders it uniformly. The interaction is also recorded in chat history so
100
+ * subsequent conversational turns retain context.
101
+ *
102
+ * Use `chat()` (the LLM-driven path) for free-form natural-language input.
103
+ */
104
+ invokeTool(name: string, args: Record<string, unknown>, options?: {
105
+ userMessage?: string;
106
+ }): Promise<AgentResponse>;
107
+ /**
108
+ * Register a custom subagent. Replaces any existing subagent with the same name.
109
+ * Advanced: most consumers should rely on the default wallet/token/nft/ai agents.
110
+ */
111
+ registerSubagent(agent: Subagent): void;
112
+ /** Unregister a subagent by name. */
113
+ unregisterSubagent(name: string): boolean;
114
+ /** List registered subagent names. */
115
+ listSubagents(): string[];
116
+ /**
117
+ * Replace all in-memory KB entries. When vector mode is enabled, the new
118
+ * entries become the source of truth for the next `ingestKnowledgeBase()`
119
+ * call but are NOT auto-pushed to the remote index — call that explicitly.
120
+ */
121
+ setKnowledgeBase(entries: KnowledgeBaseEntry[]): void;
122
+ addKnowledgeBase(entries: KnowledgeBaseEntry[]): void;
123
+ /**
124
+ * Push the current in-memory KB entries to the configured vector backend.
125
+ * Idempotent. No-op when vector mode is disabled or there are no entries.
126
+ */
127
+ ingestKnowledgeBase(): Promise<{
128
+ count: number;
129
+ }>;
130
+ private maybeAutoIngest;
131
+ setUserContext(ctx: UserContext): void;
132
+ getUserContext(): UserContext;
133
+ loadHistory(): Promise<void>;
134
+ private _doLoadHistory;
135
+ private persistHistory;
136
+ /**
137
+ * Process a user message and return an answer. Main entry point.
138
+ */
139
+ chat(userMessage: string, options?: {
140
+ generateSuggestions?: boolean;
141
+ }): Promise<AgentResponse>;
142
+ /**
143
+ * Aggregate UI payloads from this turn's tool calls. Tools with kind='ui' or
144
+ * 'action' attach a `ui` field to their ToolResult; the FE renders one
145
+ * component per entry in the order they were produced.
146
+ */
147
+ private collectUiActions;
148
+ /**
149
+ * Stamp the rewriter-detected user-message language onto a UIPayload so FE
150
+ * renders the component in whichever language the user just typed in. Tools
151
+ * never set this themselves — it is a transport-level concern owned by
152
+ * AgentCore. No-op when the rewriter did not produce a language (FE may
153
+ * fall back to its own locale in that rare case).
154
+ */
155
+ private stampLanguage;
156
+ private addUserMessage;
157
+ /** Single KB lookup — callers reuse the result for both context + short-circuit. */
158
+ private searchKB;
159
+ private snippet;
160
+ /** Format KB hits as a reference-block string for LLM consumption. */
161
+ private formatKBContext;
162
+ private tryAnswerFromKB;
163
+ private answerDirectly;
164
+ /**
165
+ * Flatten the per-subagent ReAct steps into a single trace that the
166
+ * Synthesizer can consume. The `finalAnswer` here is a compact
167
+ * concatenation of each subagent's own answer, labelled by name.
168
+ */
169
+ private mergeTrace;
170
+ private finaliseAnswer;
171
+ private generateSuggestions;
172
+ getHistory(): ChatMessage[];
173
+ /**
174
+ * History filtered down to user-facing messages only — the user's prompts
175
+ * and each turn's final assistant reply. Internal records (tool calls,
176
+ * tool results, system summaries, and `_intermediate` bridging assistant
177
+ * messages) are dropped, as is any assistant message with empty content
178
+ * (a pure tool-call turn). Use this to seed a chat UI on mount.
179
+ */
180
+ getDisplayHistory(): ChatMessage[];
181
+ /**
182
+ * Suggested follow-up prompts attached to the most recent final assistant
183
+ * turn, or `[]` if none. Used to re-seed suggestion chips after restoring
184
+ * a persisted session — the chips travel with the assistant message in
185
+ * storage, so this just locates the last one.
186
+ */
187
+ getLastSuggestions(): string[];
188
+ clearHistory(): Promise<void>;
189
+ restoreHistory(data: {
190
+ messages: ChatMessage[];
191
+ summary?: string | null;
192
+ fullMessages?: ChatMessage[];
193
+ } | ChatMessage[]): void;
194
+ serialiseHistory(): {
195
+ messages: ChatMessage[];
196
+ summary: string | null;
197
+ fullMessages: ChatMessage[];
198
+ };
199
+ private compactHistory;
200
+ /**
201
+ * Persist the interleaved assistant+toolCalls / role:'tool' messages from
202
+ * each subagent run into ChatHistory, followed by the subagent's finalAnswer
203
+ * as a plain assistant turn.
204
+ *
205
+ * The full sequence stored per subagent is:
206
+ * model(functionCall) → function(response) → ... → model(text: finalAnswer)
207
+ *
208
+ * This satisfies Gemini's strict turn-order rule: a function-response turn
209
+ * must always be followed by a model turn before the next user message.
210
+ * Without the trailing model(text), the history ends with function(response)
211
+ * and the next user message causes a 400 "function call turn must come
212
+ * immediately after a user turn" error.
213
+ */
214
+ private persistToolMessages;
215
+ /** Expose the LLM provider for advanced usage. */
216
+ getLLMProvider(): LLMProvider;
217
+ /** Expose the tool registry for advanced usage. */
218
+ getToolRegistry(): ToolRegistry;
219
+ }
220
+ //# sourceMappingURL=AgentCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentCore.d.ts","sourceRoot":"","sources":["../../src/agent/AgentCore.ts"],"names":[],"mappings":"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"}