@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,94 @@
1
+ // Solana-specific parsers
2
+ import { PublicKey, Keypair } from '@solana/web3.js';
3
+ import { invalidParamsError } from '../../core/errors/mcp-error.js';
4
+ // PublicKey parsing
5
+ export function parsePublicKey(value, fieldName) {
6
+ if (!value) {
7
+ throw invalidParamsError(`Missing required parameter: ${fieldName}`);
8
+ }
9
+ if (value instanceof PublicKey) {
10
+ return value;
11
+ }
12
+ if (typeof value !== 'string') {
13
+ throw invalidParamsError(`Parameter ${fieldName} must be a string (base58 public key)`);
14
+ }
15
+ try {
16
+ return new PublicKey(value);
17
+ }
18
+ catch {
19
+ throw invalidParamsError(`Parameter ${fieldName} is not a valid Solana public key: ${value}`);
20
+ }
21
+ }
22
+ export function parseOptionalPublicKey(value, fieldName) {
23
+ if (value === undefined || value === null || value === '') {
24
+ return undefined;
25
+ }
26
+ return parsePublicKey(value, fieldName);
27
+ }
28
+ // Keypair parsing (supports JSON array, hex, base58)
29
+ export function parseKeypair(value, fieldName) {
30
+ if (!value) {
31
+ throw invalidParamsError(`Missing required parameter: ${fieldName}`);
32
+ }
33
+ let secretKey;
34
+ if (typeof value === 'string') {
35
+ const trimmed = value.trim();
36
+ // JSON array format
37
+ if (trimmed.startsWith('[')) {
38
+ try {
39
+ const arr = JSON.parse(trimmed);
40
+ secretKey = Uint8Array.from(arr);
41
+ }
42
+ catch {
43
+ throw invalidParamsError(`Parameter ${fieldName} is not a valid JSON array`);
44
+ }
45
+ }
46
+ // Hex format
47
+ else if (trimmed.startsWith('0x') || (trimmed.length === 128 && /^[0-9a-fA-F]+$/.test(trimmed))) {
48
+ const hex = trimmed.startsWith('0x') ? trimmed.slice(2) : trimmed;
49
+ secretKey = Uint8Array.from(Buffer.from(hex, 'hex'));
50
+ }
51
+ // Base58 format
52
+ else {
53
+ try {
54
+ const decoded = Buffer.from(value, 'base64');
55
+ if (decoded.length === 64) {
56
+ secretKey = Uint8Array.from(decoded);
57
+ }
58
+ else {
59
+ // Try importing as base58
60
+ const keypair = Keypair.fromSecretKey(Uint8Array.from(Buffer.from(value, 'base64')));
61
+ return keypair;
62
+ }
63
+ }
64
+ catch {
65
+ throw invalidParamsError(`Parameter ${fieldName} is not a valid keypair format`);
66
+ }
67
+ }
68
+ }
69
+ else if (Array.isArray(value)) {
70
+ secretKey = Uint8Array.from(value);
71
+ }
72
+ else {
73
+ throw invalidParamsError(`Parameter ${fieldName} must be a string or array`);
74
+ }
75
+ if (secretKey.length !== 64) {
76
+ throw invalidParamsError(`Parameter ${fieldName} must be 64 bytes, got ${secretKey.length}`);
77
+ }
78
+ return Keypair.fromSecretKey(secretKey);
79
+ }
80
+ // Parse write options for SDK
81
+ export function parseWriteOptions(obj) {
82
+ const options = {};
83
+ if (obj.skipSend !== undefined) {
84
+ options.skipSend = obj.skipSend === true;
85
+ }
86
+ if (obj.signer !== undefined) {
87
+ options.signer = parseKeypair(obj.signer, 'signer');
88
+ }
89
+ if (obj.feePayer !== undefined) {
90
+ options.feePayer = parsePublicKey(obj.feePayer, 'feePayer');
91
+ }
92
+ return options;
93
+ }
94
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/chains/solana/parsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { IChainProvider, IChainConfig, IWriteOptions, ITransactionResult } from '../../core/interfaces/chain-provider.js';
2
+ import type { IAgent, ISearchParams, ISearchResult, ChainType, ChainPrefix } from '../../core/interfaces/agent.js';
3
+ import type { IFeedback, IFeedbackQuery, IFeedbackResult, IFeedbackInput } from '../../core/interfaces/feedback.js';
4
+ import type { IReputationSummary, ILeaderboardOptions, ILeaderboardResult } from '../../core/interfaces/reputation.js';
5
+ import { SolanaStateManager } from './state.js';
6
+ import type { ISolanaConfig } from './state.js';
7
+ export declare class SolanaChainProvider implements IChainProvider {
8
+ readonly chainType: ChainType;
9
+ readonly chainPrefix: ChainPrefix;
10
+ readonly chainId: string;
11
+ readonly displayName: string;
12
+ private readonly state;
13
+ private _ready;
14
+ constructor(config?: Partial<ISolanaConfig>, privateKey?: string);
15
+ initialize(): Promise<void>;
16
+ isReady(): boolean;
17
+ canWrite(): boolean;
18
+ getConfig(): IChainConfig;
19
+ getState(): SolanaStateManager;
20
+ getAgent(agentId: string): Promise<IAgent | null>;
21
+ agentExists(agentId: string): Promise<boolean>;
22
+ searchAgents(params: ISearchParams): Promise<ISearchResult>;
23
+ getFeedback(agentId: string, client: string, index: bigint): Promise<IFeedback | null>;
24
+ listFeedbacks(query: IFeedbackQuery): Promise<IFeedbackResult>;
25
+ getReputationSummary(agentId: string): Promise<IReputationSummary | null>;
26
+ isIndexerAvailable(): Promise<boolean>;
27
+ getLeaderboard(options?: ILeaderboardOptions): Promise<ILeaderboardResult>;
28
+ giveFeedback(input: IFeedbackInput, options?: IWriteOptions): Promise<ITransactionResult>;
29
+ private mapAgentAccount;
30
+ private mapAgentAccountToSummary;
31
+ private mapIndexedAgent;
32
+ }
33
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,MAAM,EAEN,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,EACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAY;IACzC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAS;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAS;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM;IAM1D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,IAAI,OAAO;IAIlB,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,YAAY;IAczB,QAAQ,IAAI,kBAAkB;IAKxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYjD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA0J3D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAwBtF,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IA8C9D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAwBzE,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,cAAc,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6B1E,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0D/F,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,eAAe;CAgBxB"}
@@ -0,0 +1,407 @@
1
+ // Solana chain provider implementation
2
+ import { PublicKey } from '@solana/web3.js';
3
+ import { toGlobalId } from '../../core/interfaces/agent.js';
4
+ import { TrustTier, getTrustTierName } from '../../core/interfaces/reputation.js';
5
+ import { SolanaStateManager } from './state.js';
6
+ export class SolanaChainProvider {
7
+ chainType = 'solana';
8
+ chainPrefix = 'sol';
9
+ chainId = 'sol';
10
+ displayName;
11
+ state;
12
+ _ready = false;
13
+ constructor(config, privateKey) {
14
+ this.state = new SolanaStateManager(config, privateKey);
15
+ this.displayName = `Solana ${this.state.config.cluster}`;
16
+ }
17
+ // Lifecycle
18
+ async initialize() {
19
+ // Pre-initialize SDK to verify connection
20
+ this.state.getSdk();
21
+ this._ready = true;
22
+ }
23
+ isReady() {
24
+ return this._ready;
25
+ }
26
+ canWrite() {
27
+ return this.state.canWrite();
28
+ }
29
+ getConfig() {
30
+ const config = this.state.config;
31
+ return {
32
+ chainType: this.chainType,
33
+ chainPrefix: this.chainPrefix,
34
+ displayName: this.displayName,
35
+ rpcUrl: config.rpcUrl ?? '',
36
+ indexerUrl: config.indexerUrl,
37
+ isDefault: true,
38
+ priority: 1,
39
+ };
40
+ }
41
+ // State access
42
+ getState() {
43
+ return this.state;
44
+ }
45
+ // Agent Operations
46
+ async getAgent(agentId) {
47
+ const sdk = this.state.getSdk();
48
+ try {
49
+ const pubkey = new PublicKey(agentId);
50
+ const agent = await sdk.loadAgent(pubkey);
51
+ if (!agent)
52
+ return null;
53
+ return this.mapAgentAccount(agentId, agent);
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ async agentExists(agentId) {
60
+ const agent = await this.getAgent(agentId);
61
+ return agent !== null;
62
+ }
63
+ async searchAgents(params) {
64
+ const sdk = this.state.getSdk();
65
+ const indexer = this.state.getIndexer();
66
+ const offset = params.offset ?? 0;
67
+ const limit = params.limit ?? 20;
68
+ // Use indexer if available
69
+ if (indexer && !this.state.config.forceOnChain) {
70
+ try {
71
+ let results = [];
72
+ let indexerPaginated = false;
73
+ if (params.owner) {
74
+ // getAgentsByOwner returns all agents, no pagination
75
+ results = await indexer.getAgentsByOwner(params.owner);
76
+ }
77
+ else if (params.collection) {
78
+ // getAgentsByCollection returns all agents, no pagination
79
+ results = await indexer.getAgentsByCollection(params.collection);
80
+ }
81
+ else if (params.query || params.minQualityScore !== undefined || params.minTrustTier !== undefined) {
82
+ // Text search or filters: fetch larger batch for client-side filtering
83
+ // Indexer doesn't support text search, so we fetch more and filter
84
+ const searchLimit = 500; // Fetch up to 500 agents for search
85
+ results = await indexer.getAgents({
86
+ limit: searchLimit,
87
+ offset: 0, // Start from 0, apply offset after filtering
88
+ });
89
+ // Will apply client-side pagination after filtering
90
+ }
91
+ else {
92
+ // No filters: use normal pagination
93
+ results = await indexer.getAgents({
94
+ limit,
95
+ offset,
96
+ });
97
+ indexerPaginated = true;
98
+ }
99
+ // Apply client-side query filtering based on search mode
100
+ const mode = params.searchMode ?? 'all';
101
+ const nameQ = (params.nameQuery ?? params.query ?? '').toLowerCase();
102
+ const descQ = (params.descriptionQuery ?? '').toLowerCase();
103
+ const endpointQ = (params.endpointQuery ?? '').toLowerCase();
104
+ const generalQ = (params.query ?? '').toLowerCase();
105
+ if (nameQ || descQ || endpointQ || generalQ) {
106
+ results = results.filter(a => {
107
+ const name = (a.nft_name ?? '').toLowerCase();
108
+ // Name-specific search
109
+ if (mode === 'name' && nameQ) {
110
+ return name.includes(nameQ);
111
+ }
112
+ // Description search (would need metadata lookup - for now use name)
113
+ if (mode === 'description' && descQ) {
114
+ // TODO: Fetch metadata from indexer to search description
115
+ // For now, fall back to name search
116
+ return name.includes(descQ);
117
+ }
118
+ // Endpoint search (would need metadata lookup)
119
+ if (mode === 'endpoint' && endpointQ) {
120
+ // TODO: Fetch metadata from indexer to search endpoints
121
+ // For now, skip endpoint-only searches
122
+ return false;
123
+ }
124
+ // Search all fields (default)
125
+ if (mode === 'all') {
126
+ if (nameQ && name.includes(nameQ))
127
+ return true;
128
+ if (generalQ && name.includes(generalQ))
129
+ return true;
130
+ // If specific queries provided, require at least one match
131
+ if (nameQ || descQ || endpointQ)
132
+ return false;
133
+ return true;
134
+ }
135
+ return true;
136
+ });
137
+ }
138
+ // Apply minQualityScore filter if specified
139
+ if (params.minQualityScore !== undefined) {
140
+ results = results.filter(a => (a.quality_score ?? 0) >= params.minQualityScore);
141
+ }
142
+ // Apply minTrustTier filter if specified
143
+ if (params.minTrustTier !== undefined) {
144
+ results = results.filter(a => (a.trust_tier ?? 0) >= params.minTrustTier);
145
+ }
146
+ // Only apply client-side pagination if indexer didn't paginate
147
+ // (or if we had to filter results client-side)
148
+ const hasTextSearch = !!(params.query || params.nameQuery || params.descriptionQuery || params.endpointQuery);
149
+ const needsClientPagination = !indexerPaginated || hasTextSearch ||
150
+ params.minQualityScore !== undefined || params.minTrustTier !== undefined;
151
+ if (needsClientPagination) {
152
+ const paginated = results.slice(offset, offset + limit);
153
+ return {
154
+ results: paginated.map((a) => this.mapIndexedAgent(a)),
155
+ total: results.length,
156
+ hasMore: offset + paginated.length < results.length,
157
+ offset,
158
+ limit,
159
+ };
160
+ }
161
+ // Indexer already paginated, return as-is
162
+ return {
163
+ results: results.map((a) => this.mapIndexedAgent(a)),
164
+ total: results.length, // Note: indexer doesn't return total count
165
+ hasMore: results.length === limit, // Assume more if we got a full page
166
+ offset,
167
+ limit,
168
+ };
169
+ }
170
+ catch {
171
+ if (!this.state.config.indexerFallback) {
172
+ throw new Error('Indexer query failed and fallback is disabled');
173
+ }
174
+ }
175
+ }
176
+ // Fallback to on-chain query (limited)
177
+ let agents = [];
178
+ if (params.owner) {
179
+ const pubkey = new PublicKey(params.owner);
180
+ agents = await sdk.getAgentsByOwner(pubkey);
181
+ }
182
+ // Apply client-side filtering
183
+ let filtered = agents;
184
+ if (params.query) {
185
+ const query = params.query.toLowerCase();
186
+ filtered = agents.filter(a => a.account.nft_name.toLowerCase().includes(query));
187
+ }
188
+ // Apply pagination (using offset/limit from top of function)
189
+ const paginated = filtered.slice(offset, offset + limit);
190
+ return {
191
+ results: paginated.map(a => this.mapAgentAccountToSummary(a.account)),
192
+ total: filtered.length,
193
+ hasMore: offset + paginated.length < filtered.length,
194
+ offset,
195
+ limit,
196
+ };
197
+ }
198
+ // Feedback Operations
199
+ async getFeedback(agentId, client, index) {
200
+ const sdk = this.state.getSdk();
201
+ try {
202
+ const assetPubkey = new PublicKey(agentId);
203
+ const clientPubkey = new PublicKey(client);
204
+ const feedback = await sdk.readFeedback(assetPubkey, clientPubkey, index);
205
+ if (!feedback)
206
+ return null;
207
+ return {
208
+ agentId,
209
+ client,
210
+ index,
211
+ // Note: value/valueDecimals not available in SDK read response
212
+ score: feedback.score,
213
+ tag1: feedback.tag1,
214
+ tag2: feedback.tag2,
215
+ endpoint: feedback.endpoint,
216
+ timestamp: Date.now(),
217
+ chainType: 'solana',
218
+ };
219
+ }
220
+ catch {
221
+ return null;
222
+ }
223
+ }
224
+ async listFeedbacks(query) {
225
+ const sdk = this.state.getSdk();
226
+ const assetPubkey = new PublicKey(query.agentId);
227
+ const includeRevoked = query.includeRevoked ?? false;
228
+ const feedbacks = await sdk.readAllFeedback(assetPubkey, includeRevoked);
229
+ const mapped = feedbacks.map((f) => ({
230
+ agentId: query.agentId,
231
+ client: f.client.toBase58(),
232
+ index: f.feedbackIndex,
233
+ // Note: value/valueDecimals not available in SDK read response
234
+ score: f.score,
235
+ tag1: f.tag1,
236
+ tag2: f.tag2,
237
+ endpoint: f.endpoint,
238
+ timestamp: Date.now(),
239
+ chainType: 'solana',
240
+ }));
241
+ // Apply filtering
242
+ // Note: Feedbacks with null score (ATOM skipped) are treated as:
243
+ // - score=0 for minScore filter (included in any minScore >= 0 query)
244
+ // - score=100 for maxScore filter (included in any maxScore <= 100 query)
245
+ // This ensures ATOM-skipped feedbacks appear in most queries. To exclude them,
246
+ // filter client-side by checking f.score !== null.
247
+ let filtered = mapped;
248
+ if (query.minScore !== undefined) {
249
+ filtered = filtered.filter(f => (f.score ?? 0) >= query.minScore);
250
+ }
251
+ if (query.maxScore !== undefined) {
252
+ filtered = filtered.filter(f => (f.score ?? 100) <= query.maxScore);
253
+ }
254
+ // Apply pagination
255
+ const offset = query.offset ?? 0;
256
+ const limit = query.limit ?? 20;
257
+ const paginated = filtered.slice(offset, offset + limit);
258
+ return {
259
+ feedbacks: paginated,
260
+ total: filtered.length,
261
+ hasMore: offset + paginated.length < filtered.length,
262
+ };
263
+ }
264
+ // Reputation Operations
265
+ async getReputationSummary(agentId) {
266
+ const sdk = this.state.getSdk();
267
+ try {
268
+ const assetPubkey = new PublicKey(agentId);
269
+ const summary = await sdk.getReputationSummary(assetPubkey);
270
+ const atomStats = await sdk.getAtomStats(assetPubkey).catch(() => null);
271
+ const trustTier = atomStats?.trust_tier ?? TrustTier.Unrated;
272
+ return {
273
+ agentId,
274
+ chainType: 'solana',
275
+ trustTier,
276
+ trustTierName: getTrustTierName(trustTier),
277
+ qualityScore: atomStats?.quality_score ?? summary.averageScore,
278
+ totalFeedbacks: summary.count,
279
+ averageScore: summary.averageScore,
280
+ };
281
+ }
282
+ catch {
283
+ return null;
284
+ }
285
+ }
286
+ // Optional: Indexer operations
287
+ async isIndexerAvailable() {
288
+ return this.state.isIndexerAvailable();
289
+ }
290
+ async getLeaderboard(options) {
291
+ const indexer = this.state.getIndexer();
292
+ if (!indexer) {
293
+ return { entries: [], total: 0, hasMore: false };
294
+ }
295
+ const result = await indexer.getLeaderboard({
296
+ collection: options?.collection,
297
+ minTier: options?.minFeedbacks ? 1 : undefined,
298
+ limit: options?.limit,
299
+ });
300
+ return {
301
+ entries: result.map((a, i) => ({
302
+ rank: (options?.offset ?? 0) + i + 1,
303
+ agentId: a.asset,
304
+ globalId: toGlobalId('sol', a.asset),
305
+ name: a.nft_name ?? 'Unknown',
306
+ chainType: 'solana',
307
+ trustTier: a.trust_tier ?? TrustTier.Unrated,
308
+ qualityScore: a.quality_score ?? 0,
309
+ totalFeedbacks: a.feedback_count ?? 0,
310
+ })),
311
+ total: result.length,
312
+ hasMore: false,
313
+ };
314
+ }
315
+ // Write operations
316
+ async giveFeedback(input, options) {
317
+ const skipSend = options?.skipSend ?? false;
318
+ // For skipSend, we don't need a signer - we'll return unsigned tx
319
+ if (!skipSend && !this.canWrite()) {
320
+ throw new Error('Write operations require a configured signer. Use skipSend=true to get unsigned transaction.');
321
+ }
322
+ const sdk = this.state.getSdk();
323
+ const assetPubkey = new PublicKey(input.agentId);
324
+ // Build GiveFeedbackParams (SDK v0.5.0 format)
325
+ const feedbackParams = {
326
+ value: typeof input.value === 'bigint' ? input.value : BigInt(input.value),
327
+ valueDecimals: input.valueDecimals ?? 0,
328
+ score: input.score,
329
+ tag1: input.tag1,
330
+ tag2: input.tag2,
331
+ endpoint: input.endpoint,
332
+ feedbackUri: input.feedbackUri ?? '',
333
+ feedbackHash: input.feedbackHash ?? Buffer.alloc(32),
334
+ };
335
+ const result = await sdk.giveFeedback(assetPubkey, feedbackParams, { skipSend });
336
+ if (skipSend) {
337
+ // Return unsigned transaction in base64 format
338
+ if ('transaction' in result && result.transaction) {
339
+ // SDK returns transaction as base64 string when skipSend=true
340
+ const txBase64 = String(result.transaction);
341
+ return {
342
+ unsigned: true,
343
+ transaction: txBase64,
344
+ message: 'Sign this transaction with your wallet and broadcast it to the network.',
345
+ };
346
+ }
347
+ throw new Error('SDK did not return a transaction for skipSend=true');
348
+ }
349
+ // Transaction was sent - check if it succeeded
350
+ // SDK returns { signature: string, success: boolean, error?: string }
351
+ const txResult = result;
352
+ if (txResult.success === false && txResult.error) {
353
+ throw new Error(txResult.error);
354
+ }
355
+ if (txResult.signature) {
356
+ return {
357
+ unsigned: false,
358
+ signature: txResult.signature,
359
+ };
360
+ }
361
+ throw new Error('Unexpected SDK response: no signature returned');
362
+ }
363
+ // Mapping helpers
364
+ mapAgentAccount(id, agent) {
365
+ const globalId = toGlobalId('sol', id);
366
+ return {
367
+ id,
368
+ globalId,
369
+ chainType: 'solana',
370
+ chainPrefix: 'sol',
371
+ name: agent.nft_name,
372
+ owner: agent.getOwnerPublicKey().toBase58(),
373
+ collection: agent.getCollectionPublicKey().toBase58(),
374
+ createdAt: Date.now(),
375
+ updatedAt: Date.now(),
376
+ };
377
+ }
378
+ mapAgentAccountToSummary(agent) {
379
+ const id = agent.getAssetPublicKey().toBase58();
380
+ return {
381
+ id,
382
+ globalId: toGlobalId('sol', id),
383
+ chainType: 'solana',
384
+ chainPrefix: 'sol',
385
+ name: agent.nft_name,
386
+ owner: agent.getOwnerPublicKey().toBase58(),
387
+ collection: agent.getCollectionPublicKey().toBase58(),
388
+ };
389
+ }
390
+ mapIndexedAgent(agent) {
391
+ return {
392
+ id: agent.asset,
393
+ globalId: toGlobalId('sol', agent.asset),
394
+ chainType: 'solana',
395
+ chainPrefix: 'sol',
396
+ name: agent.nft_name ?? 'Unknown',
397
+ description: undefined,
398
+ image: undefined,
399
+ owner: agent.owner,
400
+ collection: agent.collection ?? undefined,
401
+ trustTier: agent.trust_tier ?? undefined,
402
+ qualityScore: agent.quality_score ?? undefined,
403
+ totalFeedbacks: agent.feedback_count ?? undefined,
404
+ };
405
+ }
406
+ }
407
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/chains/solana/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Keypair } from '@solana/web3.js';
2
+ import { SolanaSDK, IndexerClient, type IPFSClient } from '8004-solana';
3
+ import type { IPFSClientConfig } from '8004-solana';
4
+ export type SolanaCluster = 'devnet';
5
+ export interface ISolanaConfig {
6
+ cluster: SolanaCluster;
7
+ rpcUrl?: string;
8
+ indexerUrl?: string;
9
+ indexerApiKey?: string;
10
+ useIndexer: boolean;
11
+ indexerFallback: boolean;
12
+ forceOnChain: boolean;
13
+ }
14
+ export interface ISolanaState {
15
+ config: ISolanaConfig;
16
+ ipfsConfig?: IPFSClientConfig;
17
+ sdk?: SolanaSDK;
18
+ ipfs?: IPFSClient;
19
+ indexer?: IndexerClient;
20
+ keypair?: Keypair;
21
+ }
22
+ export interface ISignerInfo {
23
+ configured: boolean;
24
+ publicKey?: string;
25
+ error?: string;
26
+ }
27
+ export declare function createDefaultConfig(): ISolanaConfig;
28
+ export declare function parseKeypairFromEnv(privateKey?: string): Keypair | undefined;
29
+ export declare class SolanaStateManager {
30
+ private _config;
31
+ private _sdk?;
32
+ private _indexer?;
33
+ private _keypair?;
34
+ constructor(config?: Partial<ISolanaConfig>, privateKey?: string);
35
+ get config(): ISolanaConfig;
36
+ setConfig(updates: Partial<ISolanaConfig>): void;
37
+ setIpfsConfig(config: IPFSClientConfig): void;
38
+ get keypair(): Keypair | undefined;
39
+ setKeypair(keypair: Keypair | undefined): void;
40
+ getSignerInfo(): ISignerInfo;
41
+ canWrite(): boolean;
42
+ invalidateSdk(): void;
43
+ getSdk(): SolanaSDK;
44
+ getIndexer(): IndexerClient | undefined;
45
+ getIpfs(): IPFSClient;
46
+ hasIpfs(): boolean;
47
+ isIndexerAvailable(): Promise<boolean>;
48
+ getSnapshot(): {
49
+ config: ISolanaConfig;
50
+ signer: ISignerInfo;
51
+ hasIpfs: boolean;
52
+ hasIndexer: boolean;
53
+ };
54
+ }
55
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,wBAAgB,mBAAmB,IAAI,aAAa,CASnD;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CA4B5E;AAGD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAU;gBAEf,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM;IAMhE,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAOhD,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAM7C,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAOjC;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAM9C,aAAa,IAAI,WAAW;IAW5B,QAAQ,IAAI,OAAO;IAKnB,aAAa,IAAI,IAAI;IAKrB,MAAM,IAAI,SAAS;IAkBnB,UAAU,IAAI,aAAa,GAAG,SAAS;IAcvC,OAAO,IAAI,UAAU;IAKrB,OAAO,IAAI,OAAO;IAMZ,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAY5C,WAAW,IAAI;QACb,MAAM,EAAE,aAAa,CAAC;QACtB,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB;CAQF"}