@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,162 @@
|
|
|
1
|
+
// Unified collection tools
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { getArgs, readString, parseChainParam, parsePagination, } from '../../core/parsers/common.js';
|
|
4
|
+
import { successResponse } from '../../core/serializers/common.js';
|
|
5
|
+
import { globalState } from '../../state/global-state.js';
|
|
6
|
+
export const collectionTools = [
|
|
7
|
+
{
|
|
8
|
+
name: 'collection_get',
|
|
9
|
+
description: 'Get collection details by ID',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
collection: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Collection ID/address',
|
|
16
|
+
},
|
|
17
|
+
chain: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Chain to query',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: ['collection'],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'collection_list',
|
|
27
|
+
description: 'List all collections',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: {
|
|
31
|
+
chain: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Chain to query',
|
|
34
|
+
},
|
|
35
|
+
limit: {
|
|
36
|
+
type: 'number',
|
|
37
|
+
description: 'Max results',
|
|
38
|
+
},
|
|
39
|
+
offset: {
|
|
40
|
+
type: 'number',
|
|
41
|
+
description: 'Pagination offset',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'collection_agents',
|
|
48
|
+
description: 'List agents in a collection',
|
|
49
|
+
inputSchema: {
|
|
50
|
+
type: 'object',
|
|
51
|
+
properties: {
|
|
52
|
+
collection: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
description: 'Collection ID/address',
|
|
55
|
+
},
|
|
56
|
+
chain: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
description: 'Chain to query',
|
|
59
|
+
},
|
|
60
|
+
limit: {
|
|
61
|
+
type: 'number',
|
|
62
|
+
description: 'Max results',
|
|
63
|
+
},
|
|
64
|
+
offset: {
|
|
65
|
+
type: 'number',
|
|
66
|
+
description: 'Pagination offset',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
required: ['collection'],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'collection_base_get',
|
|
74
|
+
description: 'Get the base/default collection for the registry',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
chain: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
description: 'Chain to query',
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
export const collectionHandlers = {
|
|
87
|
+
collection_get: async (args) => {
|
|
88
|
+
const input = getArgs(args);
|
|
89
|
+
const collection = readString(input, 'collection', true);
|
|
90
|
+
const { chainPrefix } = parseChainParam(input);
|
|
91
|
+
// Currently Solana-only
|
|
92
|
+
const provider = chainPrefix
|
|
93
|
+
? globalState.chains.getByPrefix(chainPrefix)
|
|
94
|
+
: globalState.chains.getDefault();
|
|
95
|
+
if (!provider || provider.chainType !== 'solana') {
|
|
96
|
+
throw new Error('Collection queries are currently only supported on Solana');
|
|
97
|
+
}
|
|
98
|
+
const sdk = provider.getState().getSdk();
|
|
99
|
+
const pubkey = new PublicKey(collection);
|
|
100
|
+
const result = await sdk.getCollection(pubkey);
|
|
101
|
+
return successResponse(result);
|
|
102
|
+
},
|
|
103
|
+
collection_list: async (args) => {
|
|
104
|
+
const input = getArgs(args);
|
|
105
|
+
const { chainPrefix } = parseChainParam(input);
|
|
106
|
+
const { limit, offset } = parsePagination(input);
|
|
107
|
+
const provider = chainPrefix
|
|
108
|
+
? globalState.chains.getByPrefix(chainPrefix)
|
|
109
|
+
: globalState.chains.getDefault();
|
|
110
|
+
if (!provider || provider.chainType !== 'solana') {
|
|
111
|
+
throw new Error('Collection queries are currently only supported on Solana');
|
|
112
|
+
}
|
|
113
|
+
const sdk = provider.getState().getSdk();
|
|
114
|
+
const collections = await sdk.getCollections();
|
|
115
|
+
// Apply pagination
|
|
116
|
+
const paginated = collections.slice(offset, offset + limit);
|
|
117
|
+
return successResponse({
|
|
118
|
+
collections: paginated,
|
|
119
|
+
total: collections.length,
|
|
120
|
+
hasMore: offset + paginated.length < collections.length,
|
|
121
|
+
offset,
|
|
122
|
+
limit,
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
collection_agents: async (args) => {
|
|
126
|
+
const input = getArgs(args);
|
|
127
|
+
const collection = readString(input, 'collection', true);
|
|
128
|
+
const { chainPrefix } = parseChainParam(input);
|
|
129
|
+
const { limit, offset } = parsePagination(input);
|
|
130
|
+
const provider = chainPrefix
|
|
131
|
+
? globalState.chains.getByPrefix(chainPrefix)
|
|
132
|
+
: globalState.chains.getDefault();
|
|
133
|
+
if (!provider) {
|
|
134
|
+
return successResponse({ results: [], total: 0, hasMore: false, offset, limit });
|
|
135
|
+
}
|
|
136
|
+
const result = await provider.searchAgents({ collection, limit, offset });
|
|
137
|
+
return successResponse(result);
|
|
138
|
+
},
|
|
139
|
+
collection_base_get: async (args) => {
|
|
140
|
+
const input = getArgs(args);
|
|
141
|
+
const { chainPrefix } = parseChainParam(input);
|
|
142
|
+
const provider = chainPrefix
|
|
143
|
+
? globalState.chains.getByPrefix(chainPrefix)
|
|
144
|
+
: globalState.chains.getDefault();
|
|
145
|
+
if (!provider || provider.chainType !== 'solana') {
|
|
146
|
+
throw new Error('Base collection query is currently only supported on Solana');
|
|
147
|
+
}
|
|
148
|
+
const sdk = provider.getState().getSdk();
|
|
149
|
+
const baseCollection = await sdk.getBaseCollection();
|
|
150
|
+
return successResponse({
|
|
151
|
+
collection: baseCollection?.toBase58() ?? null,
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
// Backward compatibility aliases
|
|
156
|
+
export const collectionAliases = {
|
|
157
|
+
sdk_get_collection: 'collection_get',
|
|
158
|
+
sdk_get_collections: 'collection_list',
|
|
159
|
+
sdk_get_collection_agents: 'collection_agents',
|
|
160
|
+
sdk_get_base_collection: 'collection_base_get',
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../src/tools/unified/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const configTools: Tool[];
|
|
3
|
+
export declare const configHandlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
4
|
+
export declare const configAliases: Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAO/D,eAAO,MAAM,WAAW,EAAE,IAAI,EAkF7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAwJ9E,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// Unified config tools
|
|
2
|
+
import { getArgs, readString, readNumber, readBoolean } from '../../core/parsers/common.js';
|
|
3
|
+
import { successResponse, errorResponse } from '../../core/serializers/common.js';
|
|
4
|
+
import { globalState } from '../../state/global-state.js';
|
|
5
|
+
export const configTools = [
|
|
6
|
+
{
|
|
7
|
+
name: 'config_get',
|
|
8
|
+
description: 'Get current MCP configuration including chain settings, network mode, signer status, and cache statistics',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'config_set',
|
|
16
|
+
description: 'Update runtime configuration (chain, network mode, RPC URL, indexer settings, etc.)',
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
chain: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Default chain to use (sol, base, eth, arb, poly, op)',
|
|
23
|
+
},
|
|
24
|
+
networkMode: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
enum: ['testnet', 'mainnet'],
|
|
27
|
+
description: 'Network mode: testnet (devnet/sepolia) or mainnet',
|
|
28
|
+
},
|
|
29
|
+
rpcUrl: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Custom RPC URL for the current chain',
|
|
32
|
+
},
|
|
33
|
+
indexerUrl: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Indexer service URL',
|
|
36
|
+
},
|
|
37
|
+
useIndexer: {
|
|
38
|
+
type: 'boolean',
|
|
39
|
+
description: 'Enable/disable indexer queries',
|
|
40
|
+
},
|
|
41
|
+
indexerFallback: {
|
|
42
|
+
type: 'boolean',
|
|
43
|
+
description: 'Fallback to RPC on indexer failure',
|
|
44
|
+
},
|
|
45
|
+
forceOnChain: {
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
description: 'Force on-chain queries only',
|
|
48
|
+
},
|
|
49
|
+
crawlerTimeoutMs: {
|
|
50
|
+
type: 'number',
|
|
51
|
+
description: 'Timeout for MCP/A2A crawler (ms)',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'config_reset',
|
|
58
|
+
description: 'Reset configuration from environment variables (including network mode to testnet)',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'network_get',
|
|
66
|
+
description: 'Get current network mode and status of all chains (testnet/mainnet deployment status)',
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
properties: {},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'network_set',
|
|
74
|
+
description: 'Switch between testnet and mainnet for all chains. WARNING: Only chains with deployed contracts will be available.',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
mode: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
enum: ['testnet', 'mainnet'],
|
|
81
|
+
description: 'Network mode: testnet (devnet/sepolia/amoy) or mainnet',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
required: ['mode'],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
export const configHandlers = {
|
|
89
|
+
config_get: async () => {
|
|
90
|
+
const snapshot = globalState.getSnapshot();
|
|
91
|
+
// Get Solana-specific state if available
|
|
92
|
+
const solanaProvider = globalState.chains.getByPrefix('sol');
|
|
93
|
+
const solanaState = solanaProvider?.getState().getSnapshot();
|
|
94
|
+
return successResponse({
|
|
95
|
+
...snapshot,
|
|
96
|
+
solana: solanaState,
|
|
97
|
+
});
|
|
98
|
+
},
|
|
99
|
+
config_set: async (args) => {
|
|
100
|
+
const input = getArgs(args);
|
|
101
|
+
const changes = [];
|
|
102
|
+
// Handle network mode change
|
|
103
|
+
const networkMode = readString(input, 'networkMode');
|
|
104
|
+
if (networkMode && (networkMode === 'testnet' || networkMode === 'mainnet')) {
|
|
105
|
+
const result = globalState.setNetworkMode(networkMode);
|
|
106
|
+
changes.push(`Network mode: ${result.previous} → ${result.current}`);
|
|
107
|
+
if (result.deployedChains.length === 0) {
|
|
108
|
+
return errorResponse(`No chains have deployed contracts for ${networkMode} mode. ` +
|
|
109
|
+
'Use network_get to see deployment status.');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Handle chain default change
|
|
113
|
+
const chain = readString(input, 'chain');
|
|
114
|
+
if (chain) {
|
|
115
|
+
const chainId = chain === 'solana' ? 'sol' : chain;
|
|
116
|
+
if (globalState.chains.has(chainId)) {
|
|
117
|
+
globalState.chains.setDefault(chainId);
|
|
118
|
+
changes.push(`Default chain: ${chainId}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Handle Solana-specific config
|
|
122
|
+
const solanaProvider = globalState.chains.getByPrefix('sol');
|
|
123
|
+
if (solanaProvider) {
|
|
124
|
+
const state = solanaProvider.getState();
|
|
125
|
+
const updates = {};
|
|
126
|
+
const rpcUrl = readString(input, 'rpcUrl');
|
|
127
|
+
if (rpcUrl) {
|
|
128
|
+
updates.rpcUrl = rpcUrl;
|
|
129
|
+
changes.push(`RPC URL: ${rpcUrl}`);
|
|
130
|
+
}
|
|
131
|
+
const indexerUrl = readString(input, 'indexerUrl');
|
|
132
|
+
if (indexerUrl) {
|
|
133
|
+
updates.indexerUrl = indexerUrl;
|
|
134
|
+
changes.push(`Indexer URL: ${indexerUrl}`);
|
|
135
|
+
}
|
|
136
|
+
const useIndexer = readBoolean(input, 'useIndexer');
|
|
137
|
+
if (useIndexer !== undefined) {
|
|
138
|
+
updates.useIndexer = useIndexer;
|
|
139
|
+
changes.push(`Use indexer: ${useIndexer}`);
|
|
140
|
+
}
|
|
141
|
+
const indexerFallback = readBoolean(input, 'indexerFallback');
|
|
142
|
+
if (indexerFallback !== undefined) {
|
|
143
|
+
updates.indexerFallback = indexerFallback;
|
|
144
|
+
changes.push(`Indexer fallback: ${indexerFallback}`);
|
|
145
|
+
}
|
|
146
|
+
const forceOnChain = readBoolean(input, 'forceOnChain');
|
|
147
|
+
if (forceOnChain !== undefined) {
|
|
148
|
+
updates.forceOnChain = forceOnChain;
|
|
149
|
+
changes.push(`Force on-chain: ${forceOnChain}`);
|
|
150
|
+
}
|
|
151
|
+
if (Object.keys(updates).length > 0) {
|
|
152
|
+
state.setConfig(updates);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Handle crawler timeout
|
|
156
|
+
const crawlerTimeoutMs = readNumber(input, 'crawlerTimeoutMs');
|
|
157
|
+
if (crawlerTimeoutMs !== undefined) {
|
|
158
|
+
globalState.crawlerTimeoutMs = crawlerTimeoutMs;
|
|
159
|
+
changes.push(`Crawler timeout: ${crawlerTimeoutMs}ms`);
|
|
160
|
+
}
|
|
161
|
+
return successResponse({
|
|
162
|
+
message: changes.length > 0 ? `Configuration updated:\n- ${changes.join('\n- ')}` : 'No changes made',
|
|
163
|
+
snapshot: globalState.getSnapshot(),
|
|
164
|
+
});
|
|
165
|
+
},
|
|
166
|
+
config_reset: async () => {
|
|
167
|
+
globalState.resetConfig();
|
|
168
|
+
return successResponse({
|
|
169
|
+
message: 'Configuration reset from environment (network mode: testnet)',
|
|
170
|
+
snapshot: globalState.getSnapshot(),
|
|
171
|
+
});
|
|
172
|
+
},
|
|
173
|
+
network_get: async () => {
|
|
174
|
+
const status = globalState.getNetworkStatus();
|
|
175
|
+
// Format chain status for display
|
|
176
|
+
const chainLines = Object.entries(status.chainStatus).map(([prefix, info]) => {
|
|
177
|
+
const deployedIcon = info.deployed ? '✓' : '✗';
|
|
178
|
+
const indexerIcon = info.hasSubgraph ? '📊' : '';
|
|
179
|
+
return ` ${prefix}: ${deployedIcon} ${info.displayName} (chain ${info.chainId}) ${indexerIcon}`;
|
|
180
|
+
});
|
|
181
|
+
return successResponse({
|
|
182
|
+
mode: status.mode,
|
|
183
|
+
deployedChains: status.deployedChains,
|
|
184
|
+
chainStatus: status.chainStatus,
|
|
185
|
+
summary: `Network Mode: ${status.mode.toUpperCase()}\n` +
|
|
186
|
+
`Deployed Chains: ${status.deployedChains.length > 0 ? status.deployedChains.join(', ') : 'none'}\n\n` +
|
|
187
|
+
`Chain Status:\n${chainLines.join('\n')}`,
|
|
188
|
+
});
|
|
189
|
+
},
|
|
190
|
+
network_set: async (args) => {
|
|
191
|
+
const input = getArgs(args);
|
|
192
|
+
const mode = readString(input, 'mode');
|
|
193
|
+
if (!mode || (mode !== 'testnet' && mode !== 'mainnet')) {
|
|
194
|
+
return errorResponse('Invalid network mode. Use "testnet" or "mainnet".');
|
|
195
|
+
}
|
|
196
|
+
const result = globalState.setNetworkMode(mode);
|
|
197
|
+
if (result.deployedChains.length === 0) {
|
|
198
|
+
return successResponse({
|
|
199
|
+
warning: `⚠️ No chains have deployed contracts for ${mode} mode yet.`,
|
|
200
|
+
previous: result.previous,
|
|
201
|
+
current: result.current,
|
|
202
|
+
deployedChains: result.deployedChains,
|
|
203
|
+
network: globalState.getNetworkStatus(),
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return successResponse({
|
|
207
|
+
message: `Network mode switched: ${result.previous} → ${result.current}`,
|
|
208
|
+
previous: result.previous,
|
|
209
|
+
current: result.current,
|
|
210
|
+
deployedChains: result.deployedChains,
|
|
211
|
+
network: globalState.getNetworkStatus(),
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
// Backward compatibility aliases
|
|
216
|
+
export const configAliases = {};
|
|
217
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/tools/unified/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const crawlerTools: Tool[];
|
|
3
|
+
export declare const crawlerHandlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
4
|
+
export declare const crawlerAliases: Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=crawler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawler.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/crawler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA0D/D,eAAO,MAAM,YAAY,EAAE,IAAI,EAuD9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CA0G/E,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIjD,CAAC"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// Unified crawler tools for MCP/A2A endpoint discovery
|
|
2
|
+
import { getArgs, readString, readNumber } from '../../core/parsers/common.js';
|
|
3
|
+
import { successResponse } from '../../core/serializers/common.js';
|
|
4
|
+
import { globalState } from '../../state/global-state.js';
|
|
5
|
+
import { EndpointCrawler } from '8004-solana';
|
|
6
|
+
// SSRF Protection: Validate URLs to prevent internal network scanning
|
|
7
|
+
const PRIVATE_IP_PATTERNS = [
|
|
8
|
+
/^127\./, // Loopback 127.0.0.0/8
|
|
9
|
+
/^10\./, // Private 10.0.0.0/8
|
|
10
|
+
/^172\.(1[6-9]|2[0-9]|3[0-1])\./, // Private 172.16.0.0/12
|
|
11
|
+
/^192\.168\./, // Private 192.168.0.0/16
|
|
12
|
+
/^169\.254\./, // Link-local 169.254.0.0/16
|
|
13
|
+
/^0\./, // Reserved 0.0.0.0/8
|
|
14
|
+
/^::1$/, // IPv6 loopback
|
|
15
|
+
/^fc00:/i, // IPv6 unique local
|
|
16
|
+
/^fe80:/i, // IPv6 link-local
|
|
17
|
+
];
|
|
18
|
+
const BLOCKED_HOSTNAMES = [
|
|
19
|
+
'localhost',
|
|
20
|
+
'localhost.localdomain',
|
|
21
|
+
'127.0.0.1',
|
|
22
|
+
'::1',
|
|
23
|
+
'0.0.0.0',
|
|
24
|
+
'metadata.google.internal', // GCP metadata
|
|
25
|
+
'169.254.169.254', // AWS/GCP/Azure metadata
|
|
26
|
+
];
|
|
27
|
+
function validateCrawlerUrl(urlString) {
|
|
28
|
+
try {
|
|
29
|
+
const url = new URL(urlString);
|
|
30
|
+
// Only allow http/https schemes
|
|
31
|
+
if (!['http:', 'https:'].includes(url.protocol)) {
|
|
32
|
+
return { valid: false, error: `Invalid scheme: ${url.protocol}. Only http/https allowed.` };
|
|
33
|
+
}
|
|
34
|
+
const hostname = url.hostname.toLowerCase();
|
|
35
|
+
// Block known internal hostnames
|
|
36
|
+
if (BLOCKED_HOSTNAMES.includes(hostname)) {
|
|
37
|
+
return { valid: false, error: `Blocked hostname: ${hostname}` };
|
|
38
|
+
}
|
|
39
|
+
// Block private IP addresses
|
|
40
|
+
for (const pattern of PRIVATE_IP_PATTERNS) {
|
|
41
|
+
if (pattern.test(hostname)) {
|
|
42
|
+
return { valid: false, error: `Private IP address not allowed: ${hostname}` };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return { valid: true };
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return { valid: false, error: 'Invalid URL format' };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export const crawlerTools = [
|
|
52
|
+
{
|
|
53
|
+
name: 'crawler_fetch_mcp',
|
|
54
|
+
description: 'Fetch MCP (Model Context Protocol) capabilities from an endpoint',
|
|
55
|
+
inputSchema: {
|
|
56
|
+
type: 'object',
|
|
57
|
+
properties: {
|
|
58
|
+
url: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'MCP endpoint URL',
|
|
61
|
+
},
|
|
62
|
+
timeoutMs: {
|
|
63
|
+
type: 'number',
|
|
64
|
+
description: 'Request timeout in milliseconds (default: from config)',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: ['url'],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'crawler_fetch_a2a',
|
|
72
|
+
description: 'Fetch A2A (Agent-to-Agent) capabilities from an endpoint',
|
|
73
|
+
inputSchema: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
url: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
description: 'A2A endpoint URL (base URL, will append /.well-known/agent.json)',
|
|
79
|
+
},
|
|
80
|
+
timeoutMs: {
|
|
81
|
+
type: 'number',
|
|
82
|
+
description: 'Request timeout in milliseconds (default: from config)',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
required: ['url'],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'crawler_is_alive',
|
|
90
|
+
description: 'Check if an endpoint is responding (health check)',
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
url: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Endpoint URL to check',
|
|
97
|
+
},
|
|
98
|
+
timeoutMs: {
|
|
99
|
+
type: 'number',
|
|
100
|
+
description: 'Request timeout in milliseconds',
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
required: ['url'],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
export const crawlerHandlers = {
|
|
108
|
+
crawler_fetch_mcp: async (args) => {
|
|
109
|
+
const input = getArgs(args);
|
|
110
|
+
const url = readString(input, 'url', true);
|
|
111
|
+
const timeoutMs = readNumber(input, 'timeoutMs') ?? globalState.crawlerTimeoutMs;
|
|
112
|
+
// SSRF protection: validate URL before making request
|
|
113
|
+
const validation = validateCrawlerUrl(url);
|
|
114
|
+
if (!validation.valid) {
|
|
115
|
+
return successResponse({
|
|
116
|
+
success: false,
|
|
117
|
+
url,
|
|
118
|
+
error: validation.error,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const crawler = new EndpointCrawler(timeoutMs);
|
|
123
|
+
const capabilities = await crawler.fetchMcpCapabilities(url);
|
|
124
|
+
return successResponse({
|
|
125
|
+
success: true,
|
|
126
|
+
url,
|
|
127
|
+
capabilities,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return successResponse({
|
|
132
|
+
success: false,
|
|
133
|
+
url,
|
|
134
|
+
error: error instanceof Error ? error.message : String(error),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
crawler_fetch_a2a: async (args) => {
|
|
139
|
+
const input = getArgs(args);
|
|
140
|
+
const url = readString(input, 'url', true);
|
|
141
|
+
const timeoutMs = readNumber(input, 'timeoutMs') ?? globalState.crawlerTimeoutMs;
|
|
142
|
+
// SSRF protection: validate URL before making request
|
|
143
|
+
const validation = validateCrawlerUrl(url);
|
|
144
|
+
if (!validation.valid) {
|
|
145
|
+
return successResponse({
|
|
146
|
+
success: false,
|
|
147
|
+
url,
|
|
148
|
+
error: validation.error,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const crawler = new EndpointCrawler(timeoutMs);
|
|
153
|
+
const capabilities = await crawler.fetchA2aCapabilities(url);
|
|
154
|
+
return successResponse({
|
|
155
|
+
success: true,
|
|
156
|
+
url,
|
|
157
|
+
capabilities,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return successResponse({
|
|
162
|
+
success: false,
|
|
163
|
+
url,
|
|
164
|
+
error: error instanceof Error ? error.message : String(error),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
crawler_is_alive: async (args) => {
|
|
169
|
+
const input = getArgs(args);
|
|
170
|
+
const url = readString(input, 'url', true);
|
|
171
|
+
const timeoutMs = readNumber(input, 'timeoutMs') ?? globalState.crawlerTimeoutMs;
|
|
172
|
+
// SSRF protection: validate URL before making request
|
|
173
|
+
const validation = validateCrawlerUrl(url);
|
|
174
|
+
if (!validation.valid) {
|
|
175
|
+
return successResponse({
|
|
176
|
+
alive: false,
|
|
177
|
+
url,
|
|
178
|
+
error: validation.error,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
try {
|
|
182
|
+
const controller = new AbortController();
|
|
183
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
184
|
+
const response = await fetch(url, {
|
|
185
|
+
method: 'HEAD',
|
|
186
|
+
signal: controller.signal,
|
|
187
|
+
redirect: 'manual', // Don't follow redirects to prevent SSRF via redirect
|
|
188
|
+
});
|
|
189
|
+
clearTimeout(timeoutId);
|
|
190
|
+
return successResponse({
|
|
191
|
+
alive: response.ok || (response.status >= 300 && response.status < 400),
|
|
192
|
+
url,
|
|
193
|
+
status: response.status,
|
|
194
|
+
statusText: response.statusText,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
return successResponse({
|
|
199
|
+
alive: false,
|
|
200
|
+
url,
|
|
201
|
+
error: error instanceof Error ? error.message : String(error),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
// Backward compatibility aliases
|
|
207
|
+
export const crawlerAliases = {
|
|
208
|
+
crawler_fetch_mcp_capabilities: 'crawler_fetch_mcp',
|
|
209
|
+
crawler_fetch_a2a_capabilities: 'crawler_fetch_a2a',
|
|
210
|
+
sdk_is_it_alive: 'crawler_is_alive',
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=crawler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crawler.js","sourceRoot":"","sources":["../../../src/tools/unified/crawler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const feedbackTools: Tool[];
|
|
3
|
+
export declare const feedbackHandlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
4
|
+
export declare const feedbackAliases: Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/feedback.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAiB/D,eAAO,MAAM,aAAa,EAAE,IAAI,EA+G/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAuKhF,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC"}
|