@quantulabs/8004-mcp 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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/dist/chains/evm/index.d.ts +2 -0
  4. package/dist/chains/evm/index.d.ts.map +1 -0
  5. package/dist/chains/evm/index.js +3 -0
  6. package/dist/chains/evm/index.js.map +1 -0
  7. package/dist/chains/evm/provider.d.ts +48 -0
  8. package/dist/chains/evm/provider.d.ts.map +1 -0
  9. package/dist/chains/evm/provider.js +446 -0
  10. package/dist/chains/evm/provider.js.map +1 -0
  11. package/dist/chains/index.d.ts +3 -0
  12. package/dist/chains/index.d.ts.map +1 -0
  13. package/dist/chains/index.js +4 -0
  14. package/dist/chains/index.js.map +1 -0
  15. package/dist/chains/solana/data-source.d.ts +17 -0
  16. package/dist/chains/solana/data-source.d.ts.map +1 -0
  17. package/dist/chains/solana/data-source.js +65 -0
  18. package/dist/chains/solana/data-source.js.map +1 -0
  19. package/dist/chains/solana/index.d.ts +8 -0
  20. package/dist/chains/solana/index.d.ts.map +1 -0
  21. package/dist/chains/solana/index.js +9 -0
  22. package/dist/chains/solana/index.js.map +1 -0
  23. package/dist/chains/solana/parsers.d.ts +11 -0
  24. package/dist/chains/solana/parsers.d.ts.map +1 -0
  25. package/dist/chains/solana/parsers.js +94 -0
  26. package/dist/chains/solana/parsers.js.map +1 -0
  27. package/dist/chains/solana/provider.d.ts +33 -0
  28. package/dist/chains/solana/provider.d.ts.map +1 -0
  29. package/dist/chains/solana/provider.js +407 -0
  30. package/dist/chains/solana/provider.js.map +1 -0
  31. package/dist/chains/solana/state.d.ts +55 -0
  32. package/dist/chains/solana/state.d.ts.map +1 -0
  33. package/dist/chains/solana/state.js +162 -0
  34. package/dist/chains/solana/state.js.map +1 -0
  35. package/dist/chains/solana/tools/atom.d.ts +45 -0
  36. package/dist/chains/solana/tools/atom.d.ts.map +1 -0
  37. package/dist/chains/solana/tools/atom.js +115 -0
  38. package/dist/chains/solana/tools/atom.js.map +1 -0
  39. package/dist/chains/solana/tools/validation.d.ts +45 -0
  40. package/dist/chains/solana/tools/validation.d.ts.map +1 -0
  41. package/dist/chains/solana/tools/validation.js +212 -0
  42. package/dist/chains/solana/tools/validation.js.map +1 -0
  43. package/dist/chains/solana/tools/wallet.d.ts +45 -0
  44. package/dist/chains/solana/tools/wallet.d.ts.map +1 -0
  45. package/dist/chains/solana/tools/wallet.js +103 -0
  46. package/dist/chains/solana/tools/wallet.js.map +1 -0
  47. package/dist/config/defaults.d.ts +68 -0
  48. package/dist/config/defaults.d.ts.map +1 -0
  49. package/dist/config/defaults.js +247 -0
  50. package/dist/config/defaults.js.map +1 -0
  51. package/dist/config/env.d.ts +33 -0
  52. package/dist/config/env.d.ts.map +1 -0
  53. package/dist/config/env.js +42 -0
  54. package/dist/config/env.js.map +1 -0
  55. package/dist/config/index.d.ts +3 -0
  56. package/dist/config/index.d.ts.map +1 -0
  57. package/dist/config/index.js +3 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/core/cache/agent-cache.d.ts +36 -0
  60. package/dist/core/cache/agent-cache.d.ts.map +1 -0
  61. package/dist/core/cache/agent-cache.js +87 -0
  62. package/dist/core/cache/agent-cache.js.map +1 -0
  63. package/dist/core/cache/data-source.d.ts +31 -0
  64. package/dist/core/cache/data-source.d.ts.map +1 -0
  65. package/dist/core/cache/data-source.js +6 -0
  66. package/dist/core/cache/data-source.js.map +1 -0
  67. package/dist/core/cache/index.d.ts +7 -0
  68. package/dist/core/cache/index.d.ts.map +1 -0
  69. package/dist/core/cache/index.js +9 -0
  70. package/dist/core/cache/index.js.map +1 -0
  71. package/dist/core/cache/lazy-cache.d.ts +30 -0
  72. package/dist/core/cache/lazy-cache.d.ts.map +1 -0
  73. package/dist/core/cache/lazy-cache.js +79 -0
  74. package/dist/core/cache/lazy-cache.js.map +1 -0
  75. package/dist/core/cache/slim-store.d.ts +66 -0
  76. package/dist/core/cache/slim-store.d.ts.map +1 -0
  77. package/dist/core/cache/slim-store.js +285 -0
  78. package/dist/core/cache/slim-store.js.map +1 -0
  79. package/dist/core/cache/sqlite-store.d.ts +99 -0
  80. package/dist/core/cache/sqlite-store.d.ts.map +1 -0
  81. package/dist/core/cache/sqlite-store.js +470 -0
  82. package/dist/core/cache/sqlite-store.js.map +1 -0
  83. package/dist/core/cache/sync-manager.d.ts +38 -0
  84. package/dist/core/cache/sync-manager.d.ts.map +1 -0
  85. package/dist/core/cache/sync-manager.js +213 -0
  86. package/dist/core/cache/sync-manager.js.map +1 -0
  87. package/dist/core/errors/index.d.ts +2 -0
  88. package/dist/core/errors/index.d.ts.map +1 -0
  89. package/dist/core/errors/index.js +2 -0
  90. package/dist/core/errors/index.js.map +1 -0
  91. package/dist/core/errors/mcp-error.d.ts +39 -0
  92. package/dist/core/errors/mcp-error.d.ts.map +1 -0
  93. package/dist/core/errors/mcp-error.js +79 -0
  94. package/dist/core/errors/mcp-error.js.map +1 -0
  95. package/dist/core/interfaces/agent.d.ts +84 -0
  96. package/dist/core/interfaces/agent.d.ts.map +1 -0
  97. package/dist/core/interfaces/agent.js +40 -0
  98. package/dist/core/interfaces/agent.js.map +1 -0
  99. package/dist/core/interfaces/chain-provider.d.ts +50 -0
  100. package/dist/core/interfaces/chain-provider.d.ts.map +1 -0
  101. package/dist/core/interfaces/chain-provider.js +5 -0
  102. package/dist/core/interfaces/chain-provider.js.map +1 -0
  103. package/dist/core/interfaces/feedback.d.ts +46 -0
  104. package/dist/core/interfaces/feedback.d.ts.map +1 -0
  105. package/dist/core/interfaces/feedback.js +3 -0
  106. package/dist/core/interfaces/feedback.js.map +1 -0
  107. package/dist/core/interfaces/index.d.ts +6 -0
  108. package/dist/core/interfaces/index.d.ts.map +1 -0
  109. package/dist/core/interfaces/index.js +7 -0
  110. package/dist/core/interfaces/index.js.map +1 -0
  111. package/dist/core/interfaces/reputation.d.ts +47 -0
  112. package/dist/core/interfaces/reputation.d.ts.map +1 -0
  113. package/dist/core/interfaces/reputation.js +30 -0
  114. package/dist/core/interfaces/reputation.js.map +1 -0
  115. package/dist/core/interfaces/x402.d.ts +226 -0
  116. package/dist/core/interfaces/x402.d.ts.map +1 -0
  117. package/dist/core/interfaces/x402.js +120 -0
  118. package/dist/core/interfaces/x402.js.map +1 -0
  119. package/dist/core/parsers/common.d.ts +31 -0
  120. package/dist/core/parsers/common.d.ts.map +1 -0
  121. package/dist/core/parsers/common.js +185 -0
  122. package/dist/core/parsers/common.js.map +1 -0
  123. package/dist/core/parsers/index.d.ts +2 -0
  124. package/dist/core/parsers/index.d.ts.map +1 -0
  125. package/dist/core/parsers/index.js +2 -0
  126. package/dist/core/parsers/index.js.map +1 -0
  127. package/dist/core/registry/chain-registry.d.ts +26 -0
  128. package/dist/core/registry/chain-registry.d.ts.map +1 -0
  129. package/dist/core/registry/chain-registry.js +141 -0
  130. package/dist/core/registry/chain-registry.js.map +1 -0
  131. package/dist/core/registry/index.d.ts +3 -0
  132. package/dist/core/registry/index.d.ts.map +1 -0
  133. package/dist/core/registry/index.js +3 -0
  134. package/dist/core/registry/index.js.map +1 -0
  135. package/dist/core/registry/tool-registry.d.ts +23 -0
  136. package/dist/core/registry/tool-registry.d.ts.map +1 -0
  137. package/dist/core/registry/tool-registry.js +66 -0
  138. package/dist/core/registry/tool-registry.js.map +1 -0
  139. package/dist/core/serializers/common.d.ts +20 -0
  140. package/dist/core/serializers/common.d.ts.map +1 -0
  141. package/dist/core/serializers/common.js +76 -0
  142. package/dist/core/serializers/common.js.map +1 -0
  143. package/dist/core/serializers/index.d.ts +2 -0
  144. package/dist/core/serializers/index.d.ts.map +1 -0
  145. package/dist/core/serializers/index.js +2 -0
  146. package/dist/core/serializers/index.js.map +1 -0
  147. package/dist/core/services/index.d.ts +3 -0
  148. package/dist/core/services/index.d.ts.map +1 -0
  149. package/dist/core/services/index.js +3 -0
  150. package/dist/core/services/index.js.map +1 -0
  151. package/dist/core/services/ipfs-service.d.ts +59 -0
  152. package/dist/core/services/ipfs-service.d.ts.map +1 -0
  153. package/dist/core/services/ipfs-service.js +84 -0
  154. package/dist/core/services/ipfs-service.js.map +1 -0
  155. package/dist/core/utils/tags.d.ts +38 -0
  156. package/dist/core/utils/tags.d.ts.map +1 -0
  157. package/dist/core/utils/tags.js +77 -0
  158. package/dist/core/utils/tags.js.map +1 -0
  159. package/dist/core/utils/value-encoding.d.ts +36 -0
  160. package/dist/core/utils/value-encoding.d.ts.map +1 -0
  161. package/dist/core/utils/value-encoding.js +196 -0
  162. package/dist/core/utils/value-encoding.js.map +1 -0
  163. package/dist/core/wallet/index.d.ts +2 -0
  164. package/dist/core/wallet/index.d.ts.map +1 -0
  165. package/dist/core/wallet/index.js +3 -0
  166. package/dist/core/wallet/index.js.map +1 -0
  167. package/dist/core/wallet/wallet-manager.d.ts +86 -0
  168. package/dist/core/wallet/wallet-manager.d.ts.map +1 -0
  169. package/dist/core/wallet/wallet-manager.js +783 -0
  170. package/dist/core/wallet/wallet-manager.js.map +1 -0
  171. package/dist/core/x402/index.d.ts +2 -0
  172. package/dist/core/x402/index.d.ts.map +1 -0
  173. package/dist/core/x402/index.js +3 -0
  174. package/dist/core/x402/index.js.map +1 -0
  175. package/dist/core/x402/proof-validator.d.ts +57 -0
  176. package/dist/core/x402/proof-validator.d.ts.map +1 -0
  177. package/dist/core/x402/proof-validator.js +103 -0
  178. package/dist/core/x402/proof-validator.js.map +1 -0
  179. package/dist/index.d.ts +3 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +135 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/state/global-state.d.ts +98 -0
  184. package/dist/state/global-state.d.ts.map +1 -0
  185. package/dist/state/global-state.js +258 -0
  186. package/dist/state/global-state.js.map +1 -0
  187. package/dist/tools/definitions.d.ts +10 -0
  188. package/dist/tools/definitions.d.ts.map +1 -0
  189. package/dist/tools/definitions.js +163 -0
  190. package/dist/tools/definitions.js.map +1 -0
  191. package/dist/tools/unified/agent.d.ts +5 -0
  192. package/dist/tools/unified/agent.d.ts.map +1 -0
  193. package/dist/tools/unified/agent.js +300 -0
  194. package/dist/tools/unified/agent.js.map +1 -0
  195. package/dist/tools/unified/cache.d.ts +5 -0
  196. package/dist/tools/unified/cache.d.ts.map +1 -0
  197. package/dist/tools/unified/cache.js +207 -0
  198. package/dist/tools/unified/cache.js.map +1 -0
  199. package/dist/tools/unified/collection.d.ts +5 -0
  200. package/dist/tools/unified/collection.d.ts.map +1 -0
  201. package/dist/tools/unified/collection.js +162 -0
  202. package/dist/tools/unified/collection.js.map +1 -0
  203. package/dist/tools/unified/config.d.ts +5 -0
  204. package/dist/tools/unified/config.d.ts.map +1 -0
  205. package/dist/tools/unified/config.js +217 -0
  206. package/dist/tools/unified/config.js.map +1 -0
  207. package/dist/tools/unified/crawler.d.ts +5 -0
  208. package/dist/tools/unified/crawler.d.ts.map +1 -0
  209. package/dist/tools/unified/crawler.js +212 -0
  210. package/dist/tools/unified/crawler.js.map +1 -0
  211. package/dist/tools/unified/feedback.d.ts +5 -0
  212. package/dist/tools/unified/feedback.d.ts.map +1 -0
  213. package/dist/tools/unified/feedback.js +274 -0
  214. package/dist/tools/unified/feedback.js.map +1 -0
  215. package/dist/tools/unified/ipfs.d.ts +5 -0
  216. package/dist/tools/unified/ipfs.d.ts.map +1 -0
  217. package/dist/tools/unified/ipfs.js +156 -0
  218. package/dist/tools/unified/ipfs.js.map +1 -0
  219. package/dist/tools/unified/oasf.d.ts +5 -0
  220. package/dist/tools/unified/oasf.d.ts.map +1 -0
  221. package/dist/tools/unified/oasf.js +167 -0
  222. package/dist/tools/unified/oasf.js.map +1 -0
  223. package/dist/tools/unified/registration.d.ts +5 -0
  224. package/dist/tools/unified/registration.d.ts.map +1 -0
  225. package/dist/tools/unified/registration.js +223 -0
  226. package/dist/tools/unified/registration.js.map +1 -0
  227. package/dist/tools/unified/reputation.d.ts +5 -0
  228. package/dist/tools/unified/reputation.d.ts.map +1 -0
  229. package/dist/tools/unified/reputation.js +121 -0
  230. package/dist/tools/unified/reputation.js.map +1 -0
  231. package/dist/tools/unified/wallet.d.ts +5 -0
  232. package/dist/tools/unified/wallet.d.ts.map +1 -0
  233. package/dist/tools/unified/wallet.js +434 -0
  234. package/dist/tools/unified/wallet.js.map +1 -0
  235. package/dist/tools/unified/write-operations.d.ts +5 -0
  236. package/dist/tools/unified/write-operations.d.ts.map +1 -0
  237. package/dist/tools/unified/write-operations.js +582 -0
  238. package/dist/tools/unified/write-operations.js.map +1 -0
  239. package/dist/tools/unified/x402.d.ts +5 -0
  240. package/dist/tools/unified/x402.d.ts.map +1 -0
  241. package/dist/tools/unified/x402.js +594 -0
  242. package/dist/tools/unified/x402.js.map +1 -0
  243. package/package.json +67 -0
@@ -0,0 +1,446 @@
1
+ // EVM chain provider implementation with agent0-sdk
2
+ import { encodeFunctionData } from 'viem';
3
+ import { SDK as Agent0SDK, SubgraphClient, REPUTATION_REGISTRY_ABI, } from 'agent0-sdk';
4
+ import { toGlobalId } from '../../core/interfaces/agent.js';
5
+ import { TrustTier, getTrustTierName } from '../../core/interfaces/reputation.js';
6
+ import { getWalletManager } from '../../core/wallet/index.js';
7
+ export class EVMChainProvider {
8
+ chainType = 'evm';
9
+ chainPrefix;
10
+ chainId;
11
+ displayName;
12
+ config;
13
+ _ready = false;
14
+ _sdk;
15
+ _subgraph;
16
+ constructor(config) {
17
+ this.config = config;
18
+ this.chainPrefix = config.chainPrefix;
19
+ this.chainId = `${config.chainPrefix}:${config.chainId}`;
20
+ this.displayName = this.getDisplayName(config.chainPrefix, config.chainId);
21
+ }
22
+ getDisplayName(prefix, chainId) {
23
+ const names = {
24
+ base: { 8453: 'Base Mainnet', 84532: 'Base Sepolia' },
25
+ eth: { 1: 'Ethereum Mainnet', 11155111: 'Sepolia' },
26
+ arb: { 42161: 'Arbitrum One', 421614: 'Arbitrum Sepolia' },
27
+ poly: { 137: 'Polygon', 80002: 'Polygon Amoy' },
28
+ op: { 10: 'Optimism', 11155420: 'Optimism Sepolia' },
29
+ };
30
+ return names[prefix]?.[chainId] ?? `EVM ${prefix}:${chainId}`;
31
+ }
32
+ // Get or create SDK instance (public for registration tools)
33
+ getSdk() {
34
+ if (!this._sdk) {
35
+ const walletManager = getWalletManager();
36
+ const privateKey = this.config.privateKey ?? walletManager.getAnyUnlockedEvmPrivateKey();
37
+ const sdkConfig = {
38
+ chainId: this.config.chainId,
39
+ rpcUrl: this.config.rpcUrl,
40
+ privateKey: privateKey,
41
+ subgraphUrl: this.config.subgraphUrl,
42
+ };
43
+ this._sdk = new Agent0SDK(sdkConfig);
44
+ }
45
+ return this._sdk;
46
+ }
47
+ // Get subgraph client for direct GraphQL queries (faster reads, no RPC)
48
+ getSubgraph() {
49
+ if (!this.config.subgraphUrl)
50
+ return undefined;
51
+ if (!this._subgraph) {
52
+ this._subgraph = new SubgraphClient(this.config.subgraphUrl);
53
+ }
54
+ return this._subgraph;
55
+ }
56
+ // Invalidate SDK (e.g., after wallet unlock)
57
+ invalidateSdk() {
58
+ this._sdk = undefined;
59
+ }
60
+ // Lifecycle
61
+ async initialize() {
62
+ // Verify we can create SDK
63
+ this.getSdk();
64
+ this._ready = true;
65
+ }
66
+ isReady() {
67
+ return this._ready;
68
+ }
69
+ canWrite() {
70
+ return !!(this.config.privateKey || getWalletManager().getAnyUnlockedEvmAccount());
71
+ }
72
+ getConfig() {
73
+ return {
74
+ chainType: this.chainType,
75
+ chainPrefix: this.chainPrefix,
76
+ chainId: String(this.config.chainId),
77
+ displayName: this.displayName,
78
+ rpcUrl: this.config.rpcUrl,
79
+ indexerUrl: this.config.subgraphUrl,
80
+ isDefault: false,
81
+ priority: 2,
82
+ };
83
+ }
84
+ // Agent Operations
85
+ async getAgent(agentId) {
86
+ try {
87
+ const sdk = this.getSdk();
88
+ const agent = await sdk.getAgent(agentId);
89
+ if (!agent)
90
+ return null;
91
+ return {
92
+ id: agentId,
93
+ globalId: toGlobalId(this.chainPrefix, agentId, String(this.config.chainId)),
94
+ chainType: 'evm',
95
+ chainPrefix: this.chainPrefix,
96
+ name: agent.name ?? `Agent #${agentId}`,
97
+ description: agent.description,
98
+ owner: agent.owners?.[0] ?? '',
99
+ createdAt: Date.now(),
100
+ updatedAt: Date.now(),
101
+ };
102
+ }
103
+ catch (err) {
104
+ console.warn(`EVMChainProvider.getAgent error: ${err}`);
105
+ return null;
106
+ }
107
+ }
108
+ async agentExists(agentId) {
109
+ const agent = await this.getAgent(agentId);
110
+ return agent !== null;
111
+ }
112
+ async searchAgents(params) {
113
+ const limit = params.limit ?? 20;
114
+ const offset = params.offset ?? 0;
115
+ // Determine the name query to use based on search mode
116
+ const mode = params.searchMode ?? 'all';
117
+ let nameFilter = params.nameQuery ?? params.query;
118
+ // For description mode, use descriptionQuery if provided
119
+ if (mode === 'description' && params.descriptionQuery) {
120
+ nameFilter = params.descriptionQuery;
121
+ }
122
+ // Endpoint search: filter by mcp/a2a capabilities (AgentSummary doesn't have endpoint URLs)
123
+ // endpointQuery can match against mcpTools, a2aSkills, or require mcp/a2a support
124
+ const endpointFilter = (mode === 'endpoint' || mode === 'all') ? params.endpointQuery : undefined;
125
+ try {
126
+ // Prefer subgraph for reads (faster, no RPC calls)
127
+ const subgraph = this.getSubgraph();
128
+ if (subgraph) {
129
+ // Fetch more if we need to filter client-side
130
+ const fetchLimit = endpointFilter ? Math.min(limit * 3, 100) : limit;
131
+ const agents = await subgraph.searchAgents({
132
+ owners: params.owner ? [params.owner] : undefined,
133
+ name: nameFilter,
134
+ }, fetchLimit, offset);
135
+ // Apply client-side filtering if needed
136
+ let filteredAgents = agents;
137
+ if (endpointFilter) {
138
+ const lowerEndpoint = endpointFilter.toLowerCase();
139
+ filteredAgents = agents.filter((a) => {
140
+ // Search in mcpTools, a2aSkills, mcpPrompts, mcpResources
141
+ const allCapabilities = [
142
+ ...(a.mcpTools ?? []),
143
+ ...(a.a2aSkills ?? []),
144
+ ...(a.mcpPrompts ?? []),
145
+ ...(a.mcpResources ?? []),
146
+ ];
147
+ // Also match if looking for mcp/a2a support
148
+ if (lowerEndpoint === 'mcp' && a.mcp)
149
+ return true;
150
+ if (lowerEndpoint === 'a2a' && a.a2a)
151
+ return true;
152
+ return allCapabilities.some(cap => cap.toLowerCase().includes(lowerEndpoint));
153
+ });
154
+ }
155
+ // Apply limit after filtering
156
+ const paginatedAgents = filteredAgents.slice(0, limit);
157
+ return {
158
+ results: paginatedAgents.map((a) => ({
159
+ id: a.agentId,
160
+ globalId: toGlobalId(this.chainPrefix, a.agentId, String(this.config.chainId)),
161
+ chainType: 'evm',
162
+ chainPrefix: this.chainPrefix,
163
+ name: a.name ?? `Agent #${a.agentId}`,
164
+ owner: a.owners?.[0] ?? '',
165
+ // Include capability flags for better search results
166
+ mcp: a.mcp,
167
+ a2a: a.a2a,
168
+ })),
169
+ total: filteredAgents.length,
170
+ hasMore: filteredAgents.length > limit,
171
+ offset,
172
+ limit,
173
+ };
174
+ }
175
+ // Fallback to SDK (may use RPC)
176
+ const sdk = this.getSdk();
177
+ // Note: agent0-sdk uses cursor-based pagination, not offset-based.
178
+ // For offset>0, we need to iterate through pages to skip results.
179
+ // This is inefficient for large offsets but maintains API compatibility.
180
+ let cursor;
181
+ let allItems = [];
182
+ // Fetch pages until we have enough items to satisfy offset + limit
183
+ do {
184
+ const results = await sdk.searchAgents({
185
+ owners: params.owner ? [params.owner] : undefined,
186
+ name: nameFilter,
187
+ }, {
188
+ pageSize: Math.min(100, limit + offset), // Fetch more to handle offset
189
+ cursor,
190
+ });
191
+ allItems = allItems.concat(results.items);
192
+ cursor = results.nextCursor;
193
+ // If we have enough items or no more pages, stop
194
+ if (allItems.length >= offset + limit || !cursor) {
195
+ break;
196
+ }
197
+ } while (cursor);
198
+ // Apply offset by slicing
199
+ const paginatedItems = allItems.slice(offset, offset + limit);
200
+ return {
201
+ results: paginatedItems.map((a) => ({
202
+ id: a.agentId,
203
+ globalId: toGlobalId(this.chainPrefix, a.agentId, String(this.config.chainId)),
204
+ chainType: 'evm',
205
+ chainPrefix: this.chainPrefix,
206
+ name: a.name ?? `Agent #${a.agentId}`,
207
+ owner: a.owners?.[0] ?? '',
208
+ })),
209
+ total: allItems.length,
210
+ hasMore: allItems.length > offset + limit || !!cursor,
211
+ offset,
212
+ limit,
213
+ };
214
+ }
215
+ catch (err) {
216
+ console.warn(`EVMChainProvider.searchAgents error: ${err}`);
217
+ return {
218
+ results: [],
219
+ total: 0,
220
+ hasMore: false,
221
+ offset,
222
+ limit,
223
+ };
224
+ }
225
+ }
226
+ // Feedback Operations
227
+ async getFeedback(agentId, client, index) {
228
+ try {
229
+ const sdk = this.getSdk();
230
+ const feedback = await sdk.getFeedback(agentId, client, Number(index));
231
+ if (!feedback)
232
+ return null;
233
+ // ERC-8004 EVM: SDK returns decoded value (no raw value/decimals exposed separately)
234
+ // Score field does not exist on EVM per spec - only value/valueDecimals on-chain
235
+ return {
236
+ agentId,
237
+ client,
238
+ index,
239
+ // SDK returns decoded value as number - raw encoding not available from SDK
240
+ value: undefined,
241
+ valueDecimals: undefined,
242
+ // No score field on EVM per ERC-8004 spec
243
+ score: null,
244
+ tag1: feedback.tags?.[0],
245
+ tag2: feedback.tags?.[1],
246
+ endpoint: feedback.endpoint,
247
+ comment: feedback.text,
248
+ timestamp: feedback.createdAt ?? Date.now(),
249
+ chainType: 'evm',
250
+ };
251
+ }
252
+ catch (err) {
253
+ console.warn(`EVMChainProvider.getFeedback error: ${err}`);
254
+ return null;
255
+ }
256
+ }
257
+ async listFeedbacks(query) {
258
+ try {
259
+ // Prefer subgraph for reads (faster, no RPC calls)
260
+ const subgraph = this.getSubgraph();
261
+ if (subgraph) {
262
+ const feedbacks = await subgraph.searchFeedback({
263
+ agents: [query.agentId],
264
+ reviewers: query.client ? [query.client] : undefined,
265
+ includeRevoked: query.includeRevoked,
266
+ }, query.limit ?? 20, query.offset ?? 0);
267
+ return {
268
+ feedbacks: feedbacks.map((f) => ({
269
+ agentId: String(f.agentId ?? query.agentId),
270
+ client: String(f.reviewer ?? ''),
271
+ index: BigInt(typeof f.index === 'number' || typeof f.index === 'string' ? f.index : 0),
272
+ value: undefined,
273
+ valueDecimals: undefined,
274
+ score: null,
275
+ tag1: f.tags?.[0],
276
+ tag2: f.tags?.[1],
277
+ endpoint: f.endpoint,
278
+ comment: f.text,
279
+ timestamp: Number(f.createdAt ?? Date.now()),
280
+ chainType: 'evm',
281
+ })),
282
+ total: feedbacks.length,
283
+ hasMore: feedbacks.length === (query.limit ?? 20),
284
+ };
285
+ }
286
+ // Fallback to SDK (may use RPC)
287
+ const sdk = this.getSdk();
288
+ const feedbacks = await sdk.searchFeedback({
289
+ agentId: query.agentId,
290
+ reviewers: query.client ? [query.client] : undefined,
291
+ includeRevoked: query.includeRevoked,
292
+ });
293
+ return {
294
+ feedbacks: feedbacks.map((f) => {
295
+ // ERC-8004 EVM: SDK returns decoded value (no raw value/decimals exposed separately)
296
+ // Score field does not exist on EVM per spec - only value/valueDecimals on-chain
297
+ return {
298
+ agentId: f.agentId,
299
+ client: f.reviewer,
300
+ index: BigInt(f.id[2]),
301
+ // SDK returns decoded value as number - raw encoding not available from SDK
302
+ value: undefined,
303
+ valueDecimals: undefined,
304
+ // No score field on EVM per ERC-8004 spec
305
+ score: null,
306
+ tag1: f.tags?.[0],
307
+ tag2: f.tags?.[1],
308
+ endpoint: f.endpoint,
309
+ comment: f.text,
310
+ timestamp: f.createdAt ?? Date.now(),
311
+ chainType: 'evm',
312
+ };
313
+ }),
314
+ total: feedbacks.length,
315
+ hasMore: false, // searchFeedback doesn't support pagination yet
316
+ };
317
+ }
318
+ catch (err) {
319
+ console.warn(`EVMChainProvider.listFeedbacks error: ${err}`);
320
+ return { feedbacks: [], total: 0, hasMore: false };
321
+ }
322
+ }
323
+ // Write operations with skipSend support
324
+ async giveFeedback(input, options) {
325
+ const skipSend = options?.skipSend ?? false;
326
+ const sdk = this.getSdk();
327
+ // Get reputation registry address from SDK
328
+ const reputationRegistry = sdk.reputationRegistryAddress();
329
+ if (!reputationRegistry) {
330
+ throw new Error('Reputation registry address not configured for this chain');
331
+ }
332
+ // Prepare feedback parameters
333
+ // agentId can be "tokenId" or "chainId:tokenId" format - extract just the token ID
334
+ const rawAgentId = input.agentId.includes(':') ? input.agentId.split(':').pop() : input.agentId;
335
+ const agentId = BigInt(rawAgentId);
336
+ const value = typeof input.value === 'bigint' ? input.value : BigInt(input.value);
337
+ const valueDecimals = input.valueDecimals ?? 0;
338
+ const tag1 = input.tag1 ?? '';
339
+ const tag2 = input.tag2 ?? '';
340
+ const endpoint = input.endpoint ?? '';
341
+ const feedbackUri = input.feedbackUri ?? '';
342
+ const feedbackHash = input.feedbackHash
343
+ ? (typeof input.feedbackHash === 'string' ? input.feedbackHash : `0x${Buffer.from(input.feedbackHash).toString('hex')}`)
344
+ : '0x0000000000000000000000000000000000000000000000000000000000000000';
345
+ if (skipSend) {
346
+ // Build unsigned transaction using viem
347
+ const data = encodeFunctionData({
348
+ abi: REPUTATION_REGISTRY_ABI,
349
+ functionName: 'giveFeedback',
350
+ args: [agentId, value, valueDecimals, tag1, tag2, endpoint, feedbackUri, feedbackHash],
351
+ });
352
+ const unsignedTx = {
353
+ to: reputationRegistry,
354
+ data,
355
+ chainId: this.config.chainId,
356
+ value: '0',
357
+ };
358
+ return {
359
+ unsigned: true,
360
+ transaction: JSON.stringify(unsignedTx),
361
+ message: 'Sign this transaction with MetaMask/WalletConnect and broadcast to the network.',
362
+ };
363
+ }
364
+ // Send transaction via SDK
365
+ if (!this.canWrite()) {
366
+ throw new Error('Write operations require a configured signer. Use skipSend=true to get unsigned transaction.');
367
+ }
368
+ // agent0-sdk uses encodeReputationValue() internally which expects a decimal string
369
+ // Convert our raw value/valueDecimals back to decimal format for SDK encoding
370
+ // Example: value=9977n, valueDecimals=2 → "99.77"
371
+ const decimalValue = this.rawToDecimalString(value, valueDecimals);
372
+ const result = await sdk.giveFeedback(input.agentId, decimalValue, input.tag1, input.tag2, input.endpoint, input.feedbackUri ? { text: input.comment } : undefined);
373
+ return {
374
+ unsigned: false,
375
+ signature: result.hash,
376
+ };
377
+ }
378
+ // Reputation Operations
379
+ async getReputationSummary(agentId) {
380
+ try {
381
+ const sdk = this.getSdk();
382
+ const summary = await sdk.getReputationSummary(agentId);
383
+ // Compute trust tier based on count and average
384
+ const trustTier = this.computeTrustTier(summary.count, summary.averageValue);
385
+ return {
386
+ agentId,
387
+ chainType: 'evm',
388
+ trustTier,
389
+ trustTierName: getTrustTierName(trustTier),
390
+ qualityScore: summary.averageValue,
391
+ totalFeedbacks: summary.count,
392
+ averageScore: summary.averageValue,
393
+ };
394
+ }
395
+ catch (err) {
396
+ console.warn(`EVMChainProvider.getReputationSummary error: ${err}`);
397
+ return null;
398
+ }
399
+ }
400
+ computeTrustTier(count, averageValue) {
401
+ if (count >= 100 && averageValue >= 90)
402
+ return TrustTier.Platinum;
403
+ if (count >= 50 && averageValue >= 80)
404
+ return TrustTier.Gold;
405
+ if (count >= 20 && averageValue >= 65)
406
+ return TrustTier.Silver;
407
+ if (count >= 5 && averageValue >= 50)
408
+ return TrustTier.Bronze;
409
+ return TrustTier.Unrated;
410
+ }
411
+ /**
412
+ * Convert raw value with decimals back to decimal string for SDK encoding
413
+ * Example: value=9977n, valueDecimals=2 → "99.77"
414
+ * The SDK's encodeReputationValue() expects decimal strings and will re-encode correctly
415
+ */
416
+ rawToDecimalString(value, valueDecimals) {
417
+ if (valueDecimals === 0)
418
+ return value.toString();
419
+ const str = value.toString();
420
+ const isNegative = str.startsWith('-');
421
+ const absStr = isNegative ? str.slice(1) : str;
422
+ if (absStr.length <= valueDecimals) {
423
+ // Need leading zeros: 0.00xxx
424
+ const padded = absStr.padStart(valueDecimals, '0');
425
+ return (isNegative ? '-' : '') + '0.' + padded;
426
+ }
427
+ // Insert decimal point
428
+ const intPart = absStr.slice(0, -valueDecimals);
429
+ const fracPart = absStr.slice(-valueDecimals);
430
+ return (isNegative ? '-' : '') + intPart + '.' + fracPart;
431
+ }
432
+ // Optional: Indexer operations
433
+ async isIndexerAvailable() {
434
+ return !!this.config.subgraphUrl;
435
+ }
436
+ async getLeaderboard(_options) {
437
+ // Leaderboard requires subgraph - not yet implemented
438
+ console.warn('EVMChainProvider.getLeaderboard not yet implemented');
439
+ return {
440
+ entries: [],
441
+ total: 0,
442
+ hasMore: false,
443
+ };
444
+ }
445
+ }
446
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/chains/evm/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './solana/index.js';
2
+ export * from './evm/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chains/index.ts"],"names":[],"mappings":"AAEA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ // Chain providers exports
2
+ export * from './solana/index.js';
3
+ export * from './evm/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chains/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { IndexerClient } from '8004-solana';
2
+ import { BaseDataSource } from '../../core/cache/data-source.js';
3
+ import type { ISyncBatch } from '../../core/cache/data-source.js';
4
+ export declare class SolanaDataSource extends BaseDataSource {
5
+ readonly sourceId = "sol:devnet";
6
+ readonly chainPrefix = "sol";
7
+ private readonly indexer;
8
+ constructor(indexer: IndexerClient, cluster?: string);
9
+ isAvailable(): Promise<boolean>;
10
+ fetchBatch(options: {
11
+ cursor?: string;
12
+ updatedSince?: number;
13
+ limit?: number;
14
+ }): Promise<ISyncBatch>;
15
+ getTotalCount(): Promise<number>;
16
+ }
17
+ //# sourceMappingURL=data-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/data-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGlE,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,QAAQ,gBAAgB;IACjC,QAAQ,CAAC,WAAW,SAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAE5B,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,MAAiB;IAMxD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,UAAU,CAAC,OAAO,EAAE;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6CjB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIvC"}
@@ -0,0 +1,65 @@
1
+ // Solana data source for cache sync
2
+ import { BaseDataSource } from '../../core/cache/data-source.js';
3
+ export class SolanaDataSource extends BaseDataSource {
4
+ sourceId = 'sol:devnet';
5
+ chainPrefix = 'sol';
6
+ indexer;
7
+ constructor(indexer, cluster = 'devnet') {
8
+ super();
9
+ this.indexer = indexer;
10
+ this.sourceId = `sol:${cluster}`;
11
+ }
12
+ async isAvailable() {
13
+ try {
14
+ await this.indexer.getGlobalStats();
15
+ return true;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ async fetchBatch(options) {
22
+ const limit = options.limit ?? this.defaultBatchSize;
23
+ // Parse cursor for offset
24
+ const offset = options.cursor ? parseInt(options.cursor, 10) : 0;
25
+ // Fetch agents from indexer using getAgents (no searchAgents method)
26
+ const indexedAgents = await this.indexer.getAgents({
27
+ limit,
28
+ offset,
29
+ order: 'updated_at.desc',
30
+ });
31
+ const agents = indexedAgents.map((agent) => ({
32
+ id: `sol:${agent.asset}`,
33
+ chainPrefix: 'sol',
34
+ chainType: 'solana',
35
+ rawId: agent.asset,
36
+ name: agent.nft_name ?? 'Unknown',
37
+ description: undefined,
38
+ image: undefined,
39
+ owner: agent.owner,
40
+ collection: agent.collection,
41
+ metadata: undefined,
42
+ endpoints: undefined,
43
+ trustTier: agent.trust_tier,
44
+ qualityScore: agent.quality_score,
45
+ totalFeedbacks: agent.feedback_count,
46
+ averageScore: agent.raw_avg_score,
47
+ createdAt: agent.created_at ? new Date(agent.created_at).getTime() : Date.now(),
48
+ updatedAt: agent.updated_at ? new Date(agent.updated_at).getTime() : Date.now(),
49
+ }));
50
+ const nextOffset = offset + agents.length;
51
+ // Since getAgents doesn't return total, we check if we got a full batch
52
+ const hasMore = agents.length === limit;
53
+ return {
54
+ agents,
55
+ cursor: hasMore ? String(nextOffset) : undefined,
56
+ hasMore,
57
+ total: undefined, // Not available from getAgents
58
+ };
59
+ }
60
+ async getTotalCount() {
61
+ const stats = await this.indexer.getGlobalStats();
62
+ return stats.total_agents ?? 0;
63
+ }
64
+ }
65
+ //# sourceMappingURL=data-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source.js","sourceRoot":"","sources":["../../../src/chains/solana/data-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from './provider.js';
2
+ export * from './state.js';
3
+ export * from './parsers.js';
4
+ export * from './data-source.js';
5
+ export * from './tools/atom.js';
6
+ export * from './tools/wallet.js';
7
+ export * from './tools/validation.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/index.ts"],"names":[],"mappings":"AAEA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Solana chain exports
2
+ export * from './provider.js';
3
+ export * from './state.js';
4
+ export * from './parsers.js';
5
+ export * from './data-source.js';
6
+ export * from './tools/atom.js';
7
+ export * from './tools/wallet.js';
8
+ export * from './tools/validation.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains/solana/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { PublicKey, Keypair } from '@solana/web3.js';
2
+ import type { JsonRecord } from '../../core/parsers/common.js';
3
+ export declare function parsePublicKey(value: unknown, fieldName: string): PublicKey;
4
+ export declare function parseOptionalPublicKey(value: unknown, fieldName: string): PublicKey | undefined;
5
+ export declare function parseKeypair(value: unknown, fieldName: string): Keypair;
6
+ export declare function parseWriteOptions(obj: JsonRecord): {
7
+ skipSend?: boolean;
8
+ signer?: Keypair;
9
+ feePayer?: PublicKey;
10
+ };
11
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/parsers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG/D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAe3E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAK/F;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAoDvE;AAGD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAoBA"}