@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.
- package/LICENSE +21 -0
- package/README.md +370 -0
- package/dist/chains/evm/index.d.ts +2 -0
- package/dist/chains/evm/index.d.ts.map +1 -0
- package/dist/chains/evm/index.js +3 -0
- package/dist/chains/evm/index.js.map +1 -0
- package/dist/chains/evm/provider.d.ts +48 -0
- package/dist/chains/evm/provider.d.ts.map +1 -0
- package/dist/chains/evm/provider.js +446 -0
- package/dist/chains/evm/provider.js.map +1 -0
- package/dist/chains/index.d.ts +3 -0
- package/dist/chains/index.d.ts.map +1 -0
- package/dist/chains/index.js +4 -0
- package/dist/chains/index.js.map +1 -0
- package/dist/chains/solana/data-source.d.ts +17 -0
- package/dist/chains/solana/data-source.d.ts.map +1 -0
- package/dist/chains/solana/data-source.js +65 -0
- package/dist/chains/solana/data-source.js.map +1 -0
- package/dist/chains/solana/index.d.ts +8 -0
- package/dist/chains/solana/index.d.ts.map +1 -0
- package/dist/chains/solana/index.js +9 -0
- package/dist/chains/solana/index.js.map +1 -0
- package/dist/chains/solana/parsers.d.ts +11 -0
- package/dist/chains/solana/parsers.d.ts.map +1 -0
- package/dist/chains/solana/parsers.js +94 -0
- package/dist/chains/solana/parsers.js.map +1 -0
- package/dist/chains/solana/provider.d.ts +33 -0
- package/dist/chains/solana/provider.d.ts.map +1 -0
- package/dist/chains/solana/provider.js +407 -0
- package/dist/chains/solana/provider.js.map +1 -0
- package/dist/chains/solana/state.d.ts +55 -0
- package/dist/chains/solana/state.d.ts.map +1 -0
- package/dist/chains/solana/state.js +162 -0
- package/dist/chains/solana/state.js.map +1 -0
- package/dist/chains/solana/tools/atom.d.ts +45 -0
- package/dist/chains/solana/tools/atom.d.ts.map +1 -0
- package/dist/chains/solana/tools/atom.js +115 -0
- package/dist/chains/solana/tools/atom.js.map +1 -0
- package/dist/chains/solana/tools/validation.d.ts +45 -0
- package/dist/chains/solana/tools/validation.d.ts.map +1 -0
- package/dist/chains/solana/tools/validation.js +212 -0
- package/dist/chains/solana/tools/validation.js.map +1 -0
- package/dist/chains/solana/tools/wallet.d.ts +45 -0
- package/dist/chains/solana/tools/wallet.d.ts.map +1 -0
- package/dist/chains/solana/tools/wallet.js +103 -0
- package/dist/chains/solana/tools/wallet.js.map +1 -0
- package/dist/config/defaults.d.ts +68 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +247 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/env.d.ts +33 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +42 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/cache/agent-cache.d.ts +36 -0
- package/dist/core/cache/agent-cache.d.ts.map +1 -0
- package/dist/core/cache/agent-cache.js +87 -0
- package/dist/core/cache/agent-cache.js.map +1 -0
- package/dist/core/cache/data-source.d.ts +31 -0
- package/dist/core/cache/data-source.d.ts.map +1 -0
- package/dist/core/cache/data-source.js +6 -0
- package/dist/core/cache/data-source.js.map +1 -0
- package/dist/core/cache/index.d.ts +7 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +9 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/cache/lazy-cache.d.ts +30 -0
- package/dist/core/cache/lazy-cache.d.ts.map +1 -0
- package/dist/core/cache/lazy-cache.js +79 -0
- package/dist/core/cache/lazy-cache.js.map +1 -0
- package/dist/core/cache/slim-store.d.ts +66 -0
- package/dist/core/cache/slim-store.d.ts.map +1 -0
- package/dist/core/cache/slim-store.js +285 -0
- package/dist/core/cache/slim-store.js.map +1 -0
- package/dist/core/cache/sqlite-store.d.ts +99 -0
- package/dist/core/cache/sqlite-store.d.ts.map +1 -0
- package/dist/core/cache/sqlite-store.js +470 -0
- package/dist/core/cache/sqlite-store.js.map +1 -0
- package/dist/core/cache/sync-manager.d.ts +38 -0
- package/dist/core/cache/sync-manager.d.ts.map +1 -0
- package/dist/core/cache/sync-manager.js +213 -0
- package/dist/core/cache/sync-manager.js.map +1 -0
- package/dist/core/errors/index.d.ts +2 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +2 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/mcp-error.d.ts +39 -0
- package/dist/core/errors/mcp-error.d.ts.map +1 -0
- package/dist/core/errors/mcp-error.js +79 -0
- package/dist/core/errors/mcp-error.js.map +1 -0
- package/dist/core/interfaces/agent.d.ts +84 -0
- package/dist/core/interfaces/agent.d.ts.map +1 -0
- package/dist/core/interfaces/agent.js +40 -0
- package/dist/core/interfaces/agent.js.map +1 -0
- package/dist/core/interfaces/chain-provider.d.ts +50 -0
- package/dist/core/interfaces/chain-provider.d.ts.map +1 -0
- package/dist/core/interfaces/chain-provider.js +5 -0
- package/dist/core/interfaces/chain-provider.js.map +1 -0
- package/dist/core/interfaces/feedback.d.ts +46 -0
- package/dist/core/interfaces/feedback.d.ts.map +1 -0
- package/dist/core/interfaces/feedback.js +3 -0
- package/dist/core/interfaces/feedback.js.map +1 -0
- package/dist/core/interfaces/index.d.ts +6 -0
- package/dist/core/interfaces/index.d.ts.map +1 -0
- package/dist/core/interfaces/index.js +7 -0
- package/dist/core/interfaces/index.js.map +1 -0
- package/dist/core/interfaces/reputation.d.ts +47 -0
- package/dist/core/interfaces/reputation.d.ts.map +1 -0
- package/dist/core/interfaces/reputation.js +30 -0
- package/dist/core/interfaces/reputation.js.map +1 -0
- package/dist/core/interfaces/x402.d.ts +226 -0
- package/dist/core/interfaces/x402.d.ts.map +1 -0
- package/dist/core/interfaces/x402.js +120 -0
- package/dist/core/interfaces/x402.js.map +1 -0
- package/dist/core/parsers/common.d.ts +31 -0
- package/dist/core/parsers/common.d.ts.map +1 -0
- package/dist/core/parsers/common.js +185 -0
- package/dist/core/parsers/common.js.map +1 -0
- package/dist/core/parsers/index.d.ts +2 -0
- package/dist/core/parsers/index.d.ts.map +1 -0
- package/dist/core/parsers/index.js +2 -0
- package/dist/core/parsers/index.js.map +1 -0
- package/dist/core/registry/chain-registry.d.ts +26 -0
- package/dist/core/registry/chain-registry.d.ts.map +1 -0
- package/dist/core/registry/chain-registry.js +141 -0
- package/dist/core/registry/chain-registry.js.map +1 -0
- package/dist/core/registry/index.d.ts +3 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +3 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/tool-registry.d.ts +23 -0
- package/dist/core/registry/tool-registry.d.ts.map +1 -0
- package/dist/core/registry/tool-registry.js +66 -0
- package/dist/core/registry/tool-registry.js.map +1 -0
- package/dist/core/serializers/common.d.ts +20 -0
- package/dist/core/serializers/common.d.ts.map +1 -0
- package/dist/core/serializers/common.js +76 -0
- package/dist/core/serializers/common.js.map +1 -0
- package/dist/core/serializers/index.d.ts +2 -0
- package/dist/core/serializers/index.d.ts.map +1 -0
- package/dist/core/serializers/index.js +2 -0
- package/dist/core/serializers/index.js.map +1 -0
- package/dist/core/services/index.d.ts +3 -0
- package/dist/core/services/index.d.ts.map +1 -0
- package/dist/core/services/index.js +3 -0
- package/dist/core/services/index.js.map +1 -0
- package/dist/core/services/ipfs-service.d.ts +59 -0
- package/dist/core/services/ipfs-service.d.ts.map +1 -0
- package/dist/core/services/ipfs-service.js +84 -0
- package/dist/core/services/ipfs-service.js.map +1 -0
- package/dist/core/utils/tags.d.ts +38 -0
- package/dist/core/utils/tags.d.ts.map +1 -0
- package/dist/core/utils/tags.js +77 -0
- package/dist/core/utils/tags.js.map +1 -0
- package/dist/core/utils/value-encoding.d.ts +36 -0
- package/dist/core/utils/value-encoding.d.ts.map +1 -0
- package/dist/core/utils/value-encoding.js +196 -0
- package/dist/core/utils/value-encoding.js.map +1 -0
- package/dist/core/wallet/index.d.ts +2 -0
- package/dist/core/wallet/index.d.ts.map +1 -0
- package/dist/core/wallet/index.js +3 -0
- package/dist/core/wallet/index.js.map +1 -0
- package/dist/core/wallet/wallet-manager.d.ts +86 -0
- package/dist/core/wallet/wallet-manager.d.ts.map +1 -0
- package/dist/core/wallet/wallet-manager.js +783 -0
- package/dist/core/wallet/wallet-manager.js.map +1 -0
- package/dist/core/x402/index.d.ts +2 -0
- package/dist/core/x402/index.d.ts.map +1 -0
- package/dist/core/x402/index.js +3 -0
- package/dist/core/x402/index.js.map +1 -0
- package/dist/core/x402/proof-validator.d.ts +57 -0
- package/dist/core/x402/proof-validator.d.ts.map +1 -0
- package/dist/core/x402/proof-validator.js +103 -0
- package/dist/core/x402/proof-validator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/state/global-state.d.ts +98 -0
- package/dist/state/global-state.d.ts.map +1 -0
- package/dist/state/global-state.js +258 -0
- package/dist/state/global-state.js.map +1 -0
- package/dist/tools/definitions.d.ts +10 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +163 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/unified/agent.d.ts +5 -0
- package/dist/tools/unified/agent.d.ts.map +1 -0
- package/dist/tools/unified/agent.js +300 -0
- package/dist/tools/unified/agent.js.map +1 -0
- package/dist/tools/unified/cache.d.ts +5 -0
- package/dist/tools/unified/cache.d.ts.map +1 -0
- package/dist/tools/unified/cache.js +207 -0
- package/dist/tools/unified/cache.js.map +1 -0
- package/dist/tools/unified/collection.d.ts +5 -0
- package/dist/tools/unified/collection.d.ts.map +1 -0
- package/dist/tools/unified/collection.js +162 -0
- package/dist/tools/unified/collection.js.map +1 -0
- package/dist/tools/unified/config.d.ts +5 -0
- package/dist/tools/unified/config.d.ts.map +1 -0
- package/dist/tools/unified/config.js +217 -0
- package/dist/tools/unified/config.js.map +1 -0
- package/dist/tools/unified/crawler.d.ts +5 -0
- package/dist/tools/unified/crawler.d.ts.map +1 -0
- package/dist/tools/unified/crawler.js +212 -0
- package/dist/tools/unified/crawler.js.map +1 -0
- package/dist/tools/unified/feedback.d.ts +5 -0
- package/dist/tools/unified/feedback.d.ts.map +1 -0
- package/dist/tools/unified/feedback.js +274 -0
- package/dist/tools/unified/feedback.js.map +1 -0
- package/dist/tools/unified/ipfs.d.ts +5 -0
- package/dist/tools/unified/ipfs.d.ts.map +1 -0
- package/dist/tools/unified/ipfs.js +156 -0
- package/dist/tools/unified/ipfs.js.map +1 -0
- package/dist/tools/unified/oasf.d.ts +5 -0
- package/dist/tools/unified/oasf.d.ts.map +1 -0
- package/dist/tools/unified/oasf.js +167 -0
- package/dist/tools/unified/oasf.js.map +1 -0
- package/dist/tools/unified/registration.d.ts +5 -0
- package/dist/tools/unified/registration.d.ts.map +1 -0
- package/dist/tools/unified/registration.js +223 -0
- package/dist/tools/unified/registration.js.map +1 -0
- package/dist/tools/unified/reputation.d.ts +5 -0
- package/dist/tools/unified/reputation.d.ts.map +1 -0
- package/dist/tools/unified/reputation.js +121 -0
- package/dist/tools/unified/reputation.js.map +1 -0
- package/dist/tools/unified/wallet.d.ts +5 -0
- package/dist/tools/unified/wallet.d.ts.map +1 -0
- package/dist/tools/unified/wallet.js +434 -0
- package/dist/tools/unified/wallet.js.map +1 -0
- package/dist/tools/unified/write-operations.d.ts +5 -0
- package/dist/tools/unified/write-operations.d.ts.map +1 -0
- package/dist/tools/unified/write-operations.js +582 -0
- package/dist/tools/unified/write-operations.js.map +1 -0
- package/dist/tools/unified/x402.d.ts +5 -0
- package/dist/tools/unified/x402.d.ts.map +1 -0
- package/dist/tools/unified/x402.js +594 -0
- package/dist/tools/unified/x402.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// Common parsers for tool arguments
|
|
2
|
+
import { invalidParamsError } from '../errors/mcp-error.js';
|
|
3
|
+
export function isRecord(value) {
|
|
4
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
export function getArgs(args) {
|
|
7
|
+
if (!isRecord(args)) {
|
|
8
|
+
throw invalidParamsError('Arguments must be an object');
|
|
9
|
+
}
|
|
10
|
+
return args;
|
|
11
|
+
}
|
|
12
|
+
export function readString(obj, key, required = false) {
|
|
13
|
+
const value = obj[key];
|
|
14
|
+
if (value === undefined || value === null) {
|
|
15
|
+
if (required) {
|
|
16
|
+
throw invalidParamsError(`Missing required parameter: ${key}`);
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
if (typeof value !== 'string') {
|
|
21
|
+
throw invalidParamsError(`Parameter ${key} must be a string`);
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
// Alias for optional string (more readable)
|
|
26
|
+
export function readStringOptional(obj, key) {
|
|
27
|
+
return readString(obj, key, false);
|
|
28
|
+
}
|
|
29
|
+
export function readNumber(obj, key, required = false) {
|
|
30
|
+
const value = obj[key];
|
|
31
|
+
if (value === undefined || value === null) {
|
|
32
|
+
if (required) {
|
|
33
|
+
throw invalidParamsError(`Missing required parameter: ${key}`);
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
38
|
+
throw invalidParamsError(`Parameter ${key} must be a finite number`);
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
export function readBoolean(obj, key, required = false) {
|
|
43
|
+
const value = obj[key];
|
|
44
|
+
if (value === undefined || value === null) {
|
|
45
|
+
if (required) {
|
|
46
|
+
throw invalidParamsError(`Missing required parameter: ${key}`);
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
if (typeof value !== 'boolean') {
|
|
51
|
+
throw invalidParamsError(`Parameter ${key} must be a boolean`);
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
export function readRecord(obj, key, required = false) {
|
|
56
|
+
const value = obj[key];
|
|
57
|
+
if (value === undefined || value === null) {
|
|
58
|
+
if (required) {
|
|
59
|
+
throw invalidParamsError(`Missing required parameter: ${key}`);
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
if (!isRecord(value)) {
|
|
64
|
+
throw invalidParamsError(`Parameter ${key} must be an object`);
|
|
65
|
+
}
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
export function readStringArray(obj, key, required = false) {
|
|
69
|
+
const value = obj[key];
|
|
70
|
+
if (value === undefined || value === null) {
|
|
71
|
+
if (required) {
|
|
72
|
+
throw invalidParamsError(`Missing required parameter: ${key}`);
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
if (!Array.isArray(value)) {
|
|
77
|
+
throw invalidParamsError(`Parameter ${key} must be an array`);
|
|
78
|
+
}
|
|
79
|
+
for (let i = 0; i < value.length; i++) {
|
|
80
|
+
if (typeof value[i] !== 'string') {
|
|
81
|
+
throw invalidParamsError(`Parameter ${key}[${i}] must be a string`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
export function readArray(obj, key, required = false) {
|
|
87
|
+
const value = obj[key];
|
|
88
|
+
if (value === undefined || value === null) {
|
|
89
|
+
if (required) {
|
|
90
|
+
throw invalidParamsError(`Missing required parameter: ${key}`);
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
if (!Array.isArray(value)) {
|
|
95
|
+
throw invalidParamsError(`Parameter ${key} must be an array`);
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
// BigInt parser
|
|
100
|
+
export function parseBigIntInput(value, fieldName) {
|
|
101
|
+
if (typeof value === 'bigint') {
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
if (typeof value === 'number') {
|
|
105
|
+
if (!Number.isFinite(value)) {
|
|
106
|
+
throw invalidParamsError(`Parameter ${fieldName} must be a finite number`);
|
|
107
|
+
}
|
|
108
|
+
return BigInt(Math.floor(value));
|
|
109
|
+
}
|
|
110
|
+
if (typeof value === 'string') {
|
|
111
|
+
try {
|
|
112
|
+
return BigInt(value);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
throw invalidParamsError(`Parameter ${fieldName} is not a valid BigInt string`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
throw invalidParamsError(`Parameter ${fieldName} must be a number, string, or bigint`);
|
|
119
|
+
}
|
|
120
|
+
// Buffer parser
|
|
121
|
+
export function parseBuffer(value, fieldName) {
|
|
122
|
+
if (Buffer.isBuffer(value)) {
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
125
|
+
if (value instanceof Uint8Array) {
|
|
126
|
+
return Buffer.from(value);
|
|
127
|
+
}
|
|
128
|
+
if (typeof value === 'string') {
|
|
129
|
+
// Try hex first
|
|
130
|
+
if (value.startsWith('0x')) {
|
|
131
|
+
return Buffer.from(value.slice(2), 'hex');
|
|
132
|
+
}
|
|
133
|
+
// Check if it looks like hex (even length, all hex chars)
|
|
134
|
+
if (value.length % 2 === 0 && /^[0-9a-fA-F]+$/.test(value)) {
|
|
135
|
+
return Buffer.from(value, 'hex');
|
|
136
|
+
}
|
|
137
|
+
// Otherwise, assume base64
|
|
138
|
+
return Buffer.from(value, 'base64');
|
|
139
|
+
}
|
|
140
|
+
if (Array.isArray(value)) {
|
|
141
|
+
return Buffer.from(value);
|
|
142
|
+
}
|
|
143
|
+
if (isRecord(value) && 'data' in value) {
|
|
144
|
+
const encoding = value.encoding ?? 'base64';
|
|
145
|
+
return Buffer.from(value.data, encoding);
|
|
146
|
+
}
|
|
147
|
+
throw invalidParamsError(`Parameter ${fieldName} must be a Buffer, string, or array`);
|
|
148
|
+
}
|
|
149
|
+
// Chain parameter parsing
|
|
150
|
+
export function parseChainParam(obj) {
|
|
151
|
+
const chain = readString(obj, 'chain');
|
|
152
|
+
const chainType = readString(obj, 'chainType');
|
|
153
|
+
if (!chain && !chainType) {
|
|
154
|
+
return {};
|
|
155
|
+
}
|
|
156
|
+
// Parse chain parameter (can be prefix or full chain ID)
|
|
157
|
+
if (chain) {
|
|
158
|
+
if (chain === 'sol' || chain === 'solana') {
|
|
159
|
+
return { chainType: 'solana', chainPrefix: 'sol' };
|
|
160
|
+
}
|
|
161
|
+
if (chain.includes(':')) {
|
|
162
|
+
const [prefix, id] = chain.split(':');
|
|
163
|
+
return {
|
|
164
|
+
chainType: prefix === 'sol' ? 'solana' : 'evm',
|
|
165
|
+
chainPrefix: prefix,
|
|
166
|
+
chainId: id,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
chainType: 'evm',
|
|
171
|
+
chainPrefix: chain,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
return { chainType };
|
|
175
|
+
}
|
|
176
|
+
// Pagination parsing
|
|
177
|
+
export function parsePagination(obj, defaults) {
|
|
178
|
+
const limit = readNumber(obj, 'limit') ?? defaults?.limit ?? 20;
|
|
179
|
+
const offset = readNumber(obj, 'offset') ?? defaults?.offset ?? 0;
|
|
180
|
+
return {
|
|
181
|
+
limit: Math.min(Math.max(1, limit), 100),
|
|
182
|
+
offset: Math.max(0, offset),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/core/parsers/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/parsers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/parsers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { IChainProvider } from '../interfaces/chain-provider.js';
|
|
2
|
+
import type { ChainPrefix, ChainType } from '../interfaces/agent.js';
|
|
3
|
+
export declare class ChainRegistry {
|
|
4
|
+
private readonly providers;
|
|
5
|
+
private defaultChainId;
|
|
6
|
+
static getChainId(config: {
|
|
7
|
+
chainPrefix: ChainPrefix;
|
|
8
|
+
chainId?: string;
|
|
9
|
+
}): string;
|
|
10
|
+
register(provider: IChainProvider): void;
|
|
11
|
+
unregister(chainId: string): boolean;
|
|
12
|
+
get(chainId: string): IChainProvider | null;
|
|
13
|
+
getByPrefix(prefix: ChainPrefix): IChainProvider | null;
|
|
14
|
+
getDefault(): IChainProvider | null;
|
|
15
|
+
setDefault(chainId: string): void;
|
|
16
|
+
getAll(): IChainProvider[];
|
|
17
|
+
getAllByType(chainType: ChainType): IChainProvider[];
|
|
18
|
+
has(chainId: string): boolean;
|
|
19
|
+
size(): number;
|
|
20
|
+
initializeAll(): Promise<void>;
|
|
21
|
+
require(chainId?: string): IChainProvider;
|
|
22
|
+
resolveFromGlobalId(globalId: string): IChainProvider | null;
|
|
23
|
+
invalidateAll(): void;
|
|
24
|
+
clear(): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=chain-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-registry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/chain-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGrE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,cAAc,CAAuB;IAG7C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAOjF,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAgBxC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUpC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI3C,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI;IAevD,UAAU,IAAI,cAAc,GAAG,IAAI;IAKnC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOjC,MAAM,IAAI,cAAc,EAAE;IAI1B,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,EAAE;IAIpD,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,IAAI,IAAI,MAAM;IAKR,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBpC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc;IASzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAyB5D,aAAa,IAAI,IAAI;IAcrB,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// Chain registry for multi-chain provider management
|
|
2
|
+
import { chainNotFoundError, McpError, McpErrorCode } from '../errors/mcp-error.js';
|
|
3
|
+
export class ChainRegistry {
|
|
4
|
+
providers = new Map();
|
|
5
|
+
defaultChainId = null;
|
|
6
|
+
// Get unique chain ID from config
|
|
7
|
+
static getChainId(config) {
|
|
8
|
+
if (config.chainPrefix === 'sol') {
|
|
9
|
+
return 'sol';
|
|
10
|
+
}
|
|
11
|
+
return `${config.chainPrefix}:${config.chainId ?? ''}`;
|
|
12
|
+
}
|
|
13
|
+
register(provider) {
|
|
14
|
+
// Use getConfig().chainId (numeric) instead of provider.chainId (formatted)
|
|
15
|
+
// to avoid double-prefixing for EVM chains
|
|
16
|
+
const config = provider.getConfig();
|
|
17
|
+
const chainId = ChainRegistry.getChainId({
|
|
18
|
+
chainPrefix: provider.chainPrefix,
|
|
19
|
+
chainId: config.chainId,
|
|
20
|
+
});
|
|
21
|
+
this.providers.set(chainId, provider);
|
|
22
|
+
// Set as default if first registered or if config says so
|
|
23
|
+
if (this.defaultChainId === null || config.isDefault) {
|
|
24
|
+
this.defaultChainId = chainId;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
unregister(chainId) {
|
|
28
|
+
const deleted = this.providers.delete(chainId);
|
|
29
|
+
if (deleted && this.defaultChainId === chainId) {
|
|
30
|
+
// Set new default if available
|
|
31
|
+
const remaining = Array.from(this.providers.keys());
|
|
32
|
+
this.defaultChainId = remaining[0] ?? null;
|
|
33
|
+
}
|
|
34
|
+
return deleted;
|
|
35
|
+
}
|
|
36
|
+
get(chainId) {
|
|
37
|
+
return this.providers.get(chainId) ?? null;
|
|
38
|
+
}
|
|
39
|
+
getByPrefix(prefix) {
|
|
40
|
+
// For Solana, direct lookup
|
|
41
|
+
if (prefix === 'sol') {
|
|
42
|
+
return this.providers.get('sol') ?? null;
|
|
43
|
+
}
|
|
44
|
+
// For EVM, find first matching prefix
|
|
45
|
+
for (const [, provider] of this.providers) {
|
|
46
|
+
if (provider.chainPrefix === prefix) {
|
|
47
|
+
return provider;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
getDefault() {
|
|
53
|
+
if (!this.defaultChainId)
|
|
54
|
+
return null;
|
|
55
|
+
return this.providers.get(this.defaultChainId) ?? null;
|
|
56
|
+
}
|
|
57
|
+
setDefault(chainId) {
|
|
58
|
+
if (!this.providers.has(chainId)) {
|
|
59
|
+
throw chainNotFoundError(chainId);
|
|
60
|
+
}
|
|
61
|
+
this.defaultChainId = chainId;
|
|
62
|
+
}
|
|
63
|
+
getAll() {
|
|
64
|
+
return Array.from(this.providers.values());
|
|
65
|
+
}
|
|
66
|
+
getAllByType(chainType) {
|
|
67
|
+
return Array.from(this.providers.values()).filter(p => p.chainType === chainType);
|
|
68
|
+
}
|
|
69
|
+
has(chainId) {
|
|
70
|
+
return this.providers.has(chainId);
|
|
71
|
+
}
|
|
72
|
+
size() {
|
|
73
|
+
return this.providers.size;
|
|
74
|
+
}
|
|
75
|
+
// Initialize all providers
|
|
76
|
+
async initializeAll() {
|
|
77
|
+
const errors = [];
|
|
78
|
+
for (const [chainId, provider] of this.providers) {
|
|
79
|
+
try {
|
|
80
|
+
await provider.initialize();
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
errors.push({
|
|
84
|
+
chainId,
|
|
85
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (errors.length > 0) {
|
|
90
|
+
throw new McpError(McpErrorCode.CHAIN_CONNECTION_FAILED, `Failed to initialize ${errors.length} chain(s): ${errors.map(e => e.chainId).join(', ')}`, { errors: errors.map(e => ({ chainId: e.chainId, message: e.error.message })) });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Get provider or throw
|
|
94
|
+
require(chainId) {
|
|
95
|
+
const provider = chainId ? this.get(chainId) : this.getDefault();
|
|
96
|
+
if (!provider) {
|
|
97
|
+
throw chainNotFoundError(chainId ?? 'default');
|
|
98
|
+
}
|
|
99
|
+
return provider;
|
|
100
|
+
}
|
|
101
|
+
// Resolve chain from global ID
|
|
102
|
+
resolveFromGlobalId(globalId) {
|
|
103
|
+
const parts = globalId.split(':');
|
|
104
|
+
const prefix = parts[0];
|
|
105
|
+
if (prefix === 'sol') {
|
|
106
|
+
return this.providers.get('sol') ?? null;
|
|
107
|
+
}
|
|
108
|
+
// For EVM, try to find matching chain
|
|
109
|
+
// Global ID format: "base:84532:1234" → chainId is parts[1] = "84532"
|
|
110
|
+
const chainIdFromGlobalId = parts[1];
|
|
111
|
+
for (const [, provider] of this.providers) {
|
|
112
|
+
// Compare with config.chainId (numeric) not provider.chainId (formatted)
|
|
113
|
+
const providerConfig = provider.getConfig();
|
|
114
|
+
if (provider.chainPrefix === prefix && providerConfig.chainId === chainIdFromGlobalId) {
|
|
115
|
+
return provider;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Fallback to prefix-only match
|
|
119
|
+
return this.getByPrefix(prefix);
|
|
120
|
+
}
|
|
121
|
+
// Invalidate all providers (e.g., after network mode change)
|
|
122
|
+
// This tells providers to reconfigure their SDK/connection on next use
|
|
123
|
+
invalidateAll() {
|
|
124
|
+
for (const provider of this.providers.values()) {
|
|
125
|
+
// Check if provider has invalidateSdk method (EVM providers have it)
|
|
126
|
+
if ('invalidateSdk' in provider && typeof provider.invalidateSdk === 'function') {
|
|
127
|
+
provider.invalidateSdk();
|
|
128
|
+
}
|
|
129
|
+
// Solana providers may have invalidate method
|
|
130
|
+
if ('invalidate' in provider && typeof provider.invalidate === 'function') {
|
|
131
|
+
provider.invalidate();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Clear all providers (for complete reset)
|
|
136
|
+
clear() {
|
|
137
|
+
this.providers.clear();
|
|
138
|
+
this.defaultChainId = null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=chain-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-registry.js","sourceRoot":"","sources":["../../../src/core/registry/chain-registry.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAIrD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEpF,MAAM,OAAO,aAAa;IACP,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC5D,cAAc,GAAkB,IAAI,CAAC;IAE7C,kCAAkC;IAClC,MAAM,CAAC,UAAU,CAAC,MAAsD;QACtE,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,QAAQ,CAAC,QAAwB;QAC/B,4EAA4E;QAC5E,2CAA2C;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC;YACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEtC,0DAA0D;QAC1D,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAChC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YAC/C,+BAA+B;YAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED,WAAW,CAAC,MAAmB;QAC7B,4BAA4B;QAC5B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QAC3C,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;gBACpC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,SAAoB;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACpF,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,aAAa;QACjB,MAAM,MAAM,GAA6C,EAAE,CAAC;QAE5D,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO;oBACP,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,uBAAuB,EACpC,wBAAwB,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1F,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,OAAgB;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,kBAAkB,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+BAA+B;IAC/B,mBAAmB,CAAC,QAAgB;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAgB,CAAC;QAEvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QAC3C,CAAC;QAED,sCAAsC;QACtC,sEAAsE;QACtE,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,yEAAyE;YACzE,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM,IAAI,cAAc,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;gBACtF,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,6DAA6D;IAC7D,uEAAuE;IACvE,aAAa;QACX,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,qEAAqE;YACrE,IAAI,eAAe,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBAC/E,QAA0C,CAAC,aAAa,EAAE,CAAC;YAC9D,CAAC;YACD,8CAA8C;YAC9C,IAAI,YAAY,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACzE,QAAuC,CAAC,UAAU,EAAE,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export type ToolHandler = (args: unknown) => Promise<unknown>;
|
|
3
|
+
export interface IToolDefinition {
|
|
4
|
+
tool: Tool;
|
|
5
|
+
handler: ToolHandler;
|
|
6
|
+
aliases?: string[];
|
|
7
|
+
chainType?: 'solana' | 'evm' | 'any';
|
|
8
|
+
}
|
|
9
|
+
export declare class ToolRegistry {
|
|
10
|
+
private readonly tools;
|
|
11
|
+
private readonly aliases;
|
|
12
|
+
register(definition: IToolDefinition): void;
|
|
13
|
+
unregister(name: string): boolean;
|
|
14
|
+
get(name: string): IToolDefinition | null;
|
|
15
|
+
getHandler(name: string): ToolHandler | null;
|
|
16
|
+
has(name: string): boolean;
|
|
17
|
+
getAll(): Tool[];
|
|
18
|
+
getAllByChainType(chainType: 'solana' | 'evm' | 'any'): Tool[];
|
|
19
|
+
size(): number;
|
|
20
|
+
resolveName(name: string): string;
|
|
21
|
+
clear(): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/core/registry/tool-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;CACtC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAW3C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAcjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAczC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAK5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,MAAM,IAAI,IAAI,EAAE;IAIhB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,EAAE;IAM9D,IAAI,IAAI,MAAM;IAKd,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKjC,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Tool registry for managing MCP tool definitions and handlers
|
|
2
|
+
export class ToolRegistry {
|
|
3
|
+
tools = new Map();
|
|
4
|
+
aliases = new Map();
|
|
5
|
+
register(definition) {
|
|
6
|
+
this.tools.set(definition.tool.name, definition);
|
|
7
|
+
// Register aliases
|
|
8
|
+
if (definition.aliases) {
|
|
9
|
+
for (const alias of definition.aliases) {
|
|
10
|
+
this.aliases.set(alias, definition.tool.name);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
unregister(name) {
|
|
15
|
+
const definition = this.tools.get(name);
|
|
16
|
+
if (!definition)
|
|
17
|
+
return false;
|
|
18
|
+
// Remove aliases
|
|
19
|
+
if (definition.aliases) {
|
|
20
|
+
for (const alias of definition.aliases) {
|
|
21
|
+
this.aliases.delete(alias);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return this.tools.delete(name);
|
|
25
|
+
}
|
|
26
|
+
get(name) {
|
|
27
|
+
// Check direct lookup
|
|
28
|
+
const direct = this.tools.get(name);
|
|
29
|
+
if (direct)
|
|
30
|
+
return direct;
|
|
31
|
+
// Check aliases
|
|
32
|
+
const canonicalName = this.aliases.get(name);
|
|
33
|
+
if (canonicalName) {
|
|
34
|
+
return this.tools.get(canonicalName) ?? null;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
getHandler(name) {
|
|
39
|
+
const definition = this.get(name);
|
|
40
|
+
return definition?.handler ?? null;
|
|
41
|
+
}
|
|
42
|
+
has(name) {
|
|
43
|
+
return this.tools.has(name) || this.aliases.has(name);
|
|
44
|
+
}
|
|
45
|
+
getAll() {
|
|
46
|
+
return Array.from(this.tools.values()).map(d => d.tool);
|
|
47
|
+
}
|
|
48
|
+
getAllByChainType(chainType) {
|
|
49
|
+
return Array.from(this.tools.values())
|
|
50
|
+
.filter(d => !d.chainType || d.chainType === 'any' || d.chainType === chainType)
|
|
51
|
+
.map(d => d.tool);
|
|
52
|
+
}
|
|
53
|
+
size() {
|
|
54
|
+
return this.tools.size;
|
|
55
|
+
}
|
|
56
|
+
// Resolve name (handle aliases)
|
|
57
|
+
resolveName(name) {
|
|
58
|
+
return this.aliases.get(name) ?? name;
|
|
59
|
+
}
|
|
60
|
+
// Clear all tools and aliases
|
|
61
|
+
clear() {
|
|
62
|
+
this.tools.clear();
|
|
63
|
+
this.aliases.clear();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=tool-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/core/registry/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare function serialize(value: unknown): unknown;
|
|
2
|
+
export declare function formatOutput(value: unknown): string;
|
|
3
|
+
export declare function toMcpContent(value: unknown): Array<{
|
|
4
|
+
type: 'text';
|
|
5
|
+
text: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function successResponse(data: unknown): {
|
|
8
|
+
content: Array<{
|
|
9
|
+
type: 'text';
|
|
10
|
+
text: string;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
export declare function errorResponse(error: unknown): {
|
|
14
|
+
content: Array<{
|
|
15
|
+
type: 'text';
|
|
16
|
+
text: string;
|
|
17
|
+
}>;
|
|
18
|
+
isError: true;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/core/serializers/common.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA8DjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAElF;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAEjG;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAM/G"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Common serializers for MCP output
|
|
2
|
+
export function serialize(value) {
|
|
3
|
+
if (value === null || value === undefined) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
// Handle PublicKey-like objects (Solana)
|
|
7
|
+
if (typeof value === 'object' &&
|
|
8
|
+
'toBase58' in value &&
|
|
9
|
+
typeof value.toBase58 === 'function') {
|
|
10
|
+
return value.toBase58();
|
|
11
|
+
}
|
|
12
|
+
// Handle Buffer and Uint8Array
|
|
13
|
+
if (Buffer.isBuffer(value)) {
|
|
14
|
+
return value.toString('base64');
|
|
15
|
+
}
|
|
16
|
+
if (value instanceof Uint8Array) {
|
|
17
|
+
return Buffer.from(value).toString('base64');
|
|
18
|
+
}
|
|
19
|
+
// Handle BigInt
|
|
20
|
+
if (typeof value === 'bigint') {
|
|
21
|
+
return value.toString();
|
|
22
|
+
}
|
|
23
|
+
// Handle Date
|
|
24
|
+
if (value instanceof Date) {
|
|
25
|
+
return value.toISOString();
|
|
26
|
+
}
|
|
27
|
+
// Handle Map
|
|
28
|
+
if (value instanceof Map) {
|
|
29
|
+
const obj = {};
|
|
30
|
+
for (const [k, v] of value) {
|
|
31
|
+
obj[String(k)] = serialize(v);
|
|
32
|
+
}
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
// Handle Set
|
|
36
|
+
if (value instanceof Set) {
|
|
37
|
+
return Array.from(value).map(serialize);
|
|
38
|
+
}
|
|
39
|
+
// Handle Array
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
return value.map(serialize);
|
|
42
|
+
}
|
|
43
|
+
// Handle plain objects
|
|
44
|
+
if (typeof value === 'object') {
|
|
45
|
+
const obj = {};
|
|
46
|
+
for (const [k, v] of Object.entries(value)) {
|
|
47
|
+
obj[k] = serialize(v);
|
|
48
|
+
}
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
// Primitives pass through
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
export function formatOutput(value) {
|
|
55
|
+
if (typeof value === 'string') {
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
return JSON.stringify(serialize(value), null, 2);
|
|
59
|
+
}
|
|
60
|
+
// Format for MCP content response
|
|
61
|
+
export function toMcpContent(value) {
|
|
62
|
+
return [{ type: 'text', text: formatOutput(value) }];
|
|
63
|
+
}
|
|
64
|
+
// Success response helper
|
|
65
|
+
export function successResponse(data) {
|
|
66
|
+
return { content: toMcpContent(data) };
|
|
67
|
+
}
|
|
68
|
+
// Error response helper
|
|
69
|
+
export function errorResponse(error) {
|
|
70
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
71
|
+
return {
|
|
72
|
+
content: [{ type: 'text', text: `Error: ${message}` }],
|
|
73
|
+
isError: true,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/core/serializers/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/serializers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/serializers/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/services/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|