@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,274 @@
|
|
|
1
|
+
// Unified feedback tools
|
|
2
|
+
import { getArgs, readString, readNumber, readBoolean, parseBigIntInput, parseChainParam, parsePagination, } from '../../core/parsers/common.js';
|
|
3
|
+
import { successResponse } from '../../core/serializers/common.js';
|
|
4
|
+
import { globalState } from '../../state/global-state.js';
|
|
5
|
+
import { parseGlobalId, isValidGlobalId } from '../../core/interfaces/agent.js';
|
|
6
|
+
import { isWritableProvider } from '../../core/interfaces/chain-provider.js';
|
|
7
|
+
import { encodeReputationValue } from '../../core/utils/value-encoding.js';
|
|
8
|
+
export const feedbackTools = [
|
|
9
|
+
{
|
|
10
|
+
name: 'feedback_give',
|
|
11
|
+
description: 'Submit feedback for an agent (requires signer)',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
id: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'Agent ID (global or chain-specific)',
|
|
18
|
+
},
|
|
19
|
+
value: {
|
|
20
|
+
type: ['number', 'string'],
|
|
21
|
+
description: 'Metric value - accepts decimal strings ("99.77") or raw integers (9977). Decimals auto-detected from string format.',
|
|
22
|
+
},
|
|
23
|
+
valueDecimals: {
|
|
24
|
+
type: 'number',
|
|
25
|
+
description: 'Decimal precision (0-6) - only needed for raw integer values. Auto-detected when using decimal strings.',
|
|
26
|
+
},
|
|
27
|
+
score: {
|
|
28
|
+
type: 'number',
|
|
29
|
+
description: 'Quality score (0-100), optional - takes priority over tag normalization',
|
|
30
|
+
},
|
|
31
|
+
tag1: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Category tag (e.g., uptime, successRate, revenues). Use oasf_list_tags to see all standardized tags.',
|
|
34
|
+
},
|
|
35
|
+
tag2: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'Period tag (day, week, month, year) or x402 network tag (exact-svm, exact-evm)',
|
|
38
|
+
},
|
|
39
|
+
comment: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
description: 'Optional feedback comment',
|
|
42
|
+
},
|
|
43
|
+
chain: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
description: 'Chain to use (optional if using global ID)',
|
|
46
|
+
},
|
|
47
|
+
skipSend: {
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
description: 'If true, returns unsigned transaction',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
required: ['id', 'value'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'feedback_read',
|
|
57
|
+
description: 'Read a single feedback by agent, client, and index',
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: 'object',
|
|
60
|
+
properties: {
|
|
61
|
+
id: {
|
|
62
|
+
type: 'string',
|
|
63
|
+
description: 'Agent ID',
|
|
64
|
+
},
|
|
65
|
+
client: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: 'Client address who gave feedback',
|
|
68
|
+
},
|
|
69
|
+
index: {
|
|
70
|
+
type: ['number', 'string'],
|
|
71
|
+
description: 'Feedback index',
|
|
72
|
+
},
|
|
73
|
+
chain: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'Chain to use',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
required: ['id', 'client', 'index'],
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'feedback_list',
|
|
83
|
+
description: 'List all feedbacks for an agent',
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: 'object',
|
|
86
|
+
properties: {
|
|
87
|
+
id: {
|
|
88
|
+
type: 'string',
|
|
89
|
+
description: 'Agent ID',
|
|
90
|
+
},
|
|
91
|
+
client: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
description: 'Filter by client address',
|
|
94
|
+
},
|
|
95
|
+
minScore: {
|
|
96
|
+
type: 'number',
|
|
97
|
+
description: 'Minimum score filter',
|
|
98
|
+
},
|
|
99
|
+
maxScore: {
|
|
100
|
+
type: 'number',
|
|
101
|
+
description: 'Maximum score filter',
|
|
102
|
+
},
|
|
103
|
+
chain: {
|
|
104
|
+
type: 'string',
|
|
105
|
+
description: 'Chain to use',
|
|
106
|
+
},
|
|
107
|
+
limit: {
|
|
108
|
+
type: 'number',
|
|
109
|
+
description: 'Max results (default: 20)',
|
|
110
|
+
},
|
|
111
|
+
offset: {
|
|
112
|
+
type: 'number',
|
|
113
|
+
description: 'Pagination offset',
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
required: ['id'],
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
export const feedbackHandlers = {
|
|
121
|
+
feedback_give: async (args) => {
|
|
122
|
+
const input = getArgs(args);
|
|
123
|
+
const agentId = readString(input, 'id', true);
|
|
124
|
+
const comment = readString(input, 'comment');
|
|
125
|
+
const tag1 = readString(input, 'tag1');
|
|
126
|
+
const tag2 = readString(input, 'tag2');
|
|
127
|
+
const skipSend = readBoolean(input, 'skipSend') ?? false;
|
|
128
|
+
const { chainPrefix } = parseChainParam(input);
|
|
129
|
+
// Parse value (required) - accepts decimal strings ("99.77") or raw integers
|
|
130
|
+
// Auto-encodes to { value: bigint, valueDecimals: number }
|
|
131
|
+
const rawValue = input.value;
|
|
132
|
+
if (rawValue === undefined || rawValue === null) {
|
|
133
|
+
throw new Error('value is required');
|
|
134
|
+
}
|
|
135
|
+
if (typeof rawValue !== 'string' && typeof rawValue !== 'number' && typeof rawValue !== 'bigint') {
|
|
136
|
+
throw new Error('value must be a number or string');
|
|
137
|
+
}
|
|
138
|
+
// Use encodeReputationValue for auto-encoding decimal strings
|
|
139
|
+
// e.g., "99.77" → { value: 9977n, valueDecimals: 2 }
|
|
140
|
+
const explicitDecimals = readNumber(input, 'valueDecimals');
|
|
141
|
+
const encoded = encodeReputationValue(rawValue, explicitDecimals);
|
|
142
|
+
const value = encoded.value;
|
|
143
|
+
const valueDecimals = encoded.valueDecimals;
|
|
144
|
+
// Parse score (optional)
|
|
145
|
+
const score = readNumber(input, 'score');
|
|
146
|
+
if (score !== undefined && (score < 0 || score > 100)) {
|
|
147
|
+
throw new Error('score must be between 0 and 100');
|
|
148
|
+
}
|
|
149
|
+
// Resolve provider
|
|
150
|
+
let provider;
|
|
151
|
+
let rawId = agentId;
|
|
152
|
+
if (isValidGlobalId(agentId)) {
|
|
153
|
+
const parsed = parseGlobalId(agentId);
|
|
154
|
+
provider = globalState.chains.getByPrefix(parsed.prefix);
|
|
155
|
+
rawId = parsed.rawId;
|
|
156
|
+
}
|
|
157
|
+
else if (chainPrefix) {
|
|
158
|
+
provider = globalState.chains.getByPrefix(chainPrefix);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
provider = globalState.chains.getDefault();
|
|
162
|
+
}
|
|
163
|
+
if (!provider) {
|
|
164
|
+
throw new Error('No chain provider available');
|
|
165
|
+
}
|
|
166
|
+
// For skipSend, we can use a provider that doesn't have a signer
|
|
167
|
+
// Otherwise, we need a writable provider
|
|
168
|
+
if (!skipSend && !isWritableProvider(provider)) {
|
|
169
|
+
throw new Error('Chain provider does not support write operations or signer not configured. Use skipSend=true to get unsigned transaction.');
|
|
170
|
+
}
|
|
171
|
+
// Check if provider has giveFeedback method
|
|
172
|
+
if (typeof provider.giveFeedback !== 'function') {
|
|
173
|
+
throw new Error('Chain provider does not support feedback operations');
|
|
174
|
+
}
|
|
175
|
+
const result = await provider.giveFeedback({ agentId: rawId, value, valueDecimals, score, comment, tag1, tag2 }, { skipSend });
|
|
176
|
+
if (result.unsigned) {
|
|
177
|
+
// Return unsigned transaction for external wallet signing
|
|
178
|
+
return successResponse({
|
|
179
|
+
unsigned: true,
|
|
180
|
+
transaction: result.transaction,
|
|
181
|
+
message: result.message,
|
|
182
|
+
agentId: rawId,
|
|
183
|
+
value: value.toString(),
|
|
184
|
+
valueDecimals,
|
|
185
|
+
score,
|
|
186
|
+
tag1,
|
|
187
|
+
tag2,
|
|
188
|
+
comment,
|
|
189
|
+
hint: 'Decode base64, sign with your wallet (Phantom, etc.), and broadcast to the network.',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
// Return signed result
|
|
193
|
+
return successResponse({
|
|
194
|
+
unsigned: false,
|
|
195
|
+
signature: result.signature,
|
|
196
|
+
agentId: rawId,
|
|
197
|
+
value: value.toString(),
|
|
198
|
+
valueDecimals,
|
|
199
|
+
score,
|
|
200
|
+
tag1,
|
|
201
|
+
tag2,
|
|
202
|
+
comment,
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
feedback_read: async (args) => {
|
|
206
|
+
const input = getArgs(args);
|
|
207
|
+
const agentId = readString(input, 'id', true);
|
|
208
|
+
const client = readString(input, 'client', true);
|
|
209
|
+
const index = parseBigIntInput(input.index, 'index');
|
|
210
|
+
const { chainPrefix } = parseChainParam(input);
|
|
211
|
+
let provider;
|
|
212
|
+
let rawId = agentId;
|
|
213
|
+
if (isValidGlobalId(agentId)) {
|
|
214
|
+
const parsed = parseGlobalId(agentId);
|
|
215
|
+
provider = globalState.chains.getByPrefix(parsed.prefix);
|
|
216
|
+
rawId = parsed.rawId;
|
|
217
|
+
}
|
|
218
|
+
else if (chainPrefix) {
|
|
219
|
+
provider = globalState.chains.getByPrefix(chainPrefix);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
provider = globalState.chains.getDefault();
|
|
223
|
+
}
|
|
224
|
+
if (!provider) {
|
|
225
|
+
throw new Error('No chain provider available');
|
|
226
|
+
}
|
|
227
|
+
const feedback = await provider.getFeedback(rawId, client, index);
|
|
228
|
+
if (!feedback) {
|
|
229
|
+
throw new Error(`Feedback not found: agent=${rawId}, client=${client}, index=${index}`);
|
|
230
|
+
}
|
|
231
|
+
return successResponse(feedback);
|
|
232
|
+
},
|
|
233
|
+
feedback_list: async (args) => {
|
|
234
|
+
const input = getArgs(args);
|
|
235
|
+
const agentId = readString(input, 'id', true);
|
|
236
|
+
const client = readString(input, 'client');
|
|
237
|
+
const minScore = readNumber(input, 'minScore');
|
|
238
|
+
const maxScore = readNumber(input, 'maxScore');
|
|
239
|
+
const { chainPrefix } = parseChainParam(input);
|
|
240
|
+
const { limit, offset } = parsePagination(input);
|
|
241
|
+
let provider;
|
|
242
|
+
let rawId = agentId;
|
|
243
|
+
if (isValidGlobalId(agentId)) {
|
|
244
|
+
const parsed = parseGlobalId(agentId);
|
|
245
|
+
provider = globalState.chains.getByPrefix(parsed.prefix);
|
|
246
|
+
rawId = parsed.rawId;
|
|
247
|
+
}
|
|
248
|
+
else if (chainPrefix) {
|
|
249
|
+
provider = globalState.chains.getByPrefix(chainPrefix);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
provider = globalState.chains.getDefault();
|
|
253
|
+
}
|
|
254
|
+
if (!provider) {
|
|
255
|
+
return successResponse({ feedbacks: [], total: 0, hasMore: false });
|
|
256
|
+
}
|
|
257
|
+
const result = await provider.listFeedbacks({
|
|
258
|
+
agentId: rawId,
|
|
259
|
+
client,
|
|
260
|
+
minScore,
|
|
261
|
+
maxScore,
|
|
262
|
+
limit,
|
|
263
|
+
offset,
|
|
264
|
+
});
|
|
265
|
+
return successResponse(result);
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
// Backward compatibility aliases
|
|
269
|
+
export const feedbackAliases = {
|
|
270
|
+
sdk_give_feedback: 'feedback_give',
|
|
271
|
+
sdk_read_feedback: 'feedback_read',
|
|
272
|
+
sdk_read_all_feedback: 'feedback_list',
|
|
273
|
+
};
|
|
274
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/tools/unified/feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const ipfsTools: Tool[];
|
|
3
|
+
export declare const ipfsHandlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
4
|
+
export declare const ipfsAliases: Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=ipfs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/ipfs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAW/D,eAAO,MAAM,SAAS,EAAE,IAAI,EA4E3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAmF5E,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI9C,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// Unified IPFS tools - Uses global IPFS service (chain-agnostic)
|
|
2
|
+
import { getArgs, readString, readRecord, readBoolean, } from '../../core/parsers/common.js';
|
|
3
|
+
import { successResponse } from '../../core/serializers/common.js';
|
|
4
|
+
import { globalState } from '../../state/global-state.js';
|
|
5
|
+
export const ipfsTools = [
|
|
6
|
+
{
|
|
7
|
+
name: 'ipfs_configure',
|
|
8
|
+
description: 'Configure IPFS client (Pinata, Filecoin, or node-based)',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
pinataJwt: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'Pinata API JWT token',
|
|
15
|
+
},
|
|
16
|
+
ipfsUrl: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'IPFS node URL (e.g., http://localhost:5001)',
|
|
19
|
+
},
|
|
20
|
+
filecoinEnabled: {
|
|
21
|
+
type: 'boolean',
|
|
22
|
+
description: 'Enable Filecoin pinning',
|
|
23
|
+
},
|
|
24
|
+
filecoinPrivateKey: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Filecoin private key for pinning',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'ipfs_add_json',
|
|
33
|
+
description: 'Store JSON data to IPFS and return CID',
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: 'object',
|
|
36
|
+
properties: {
|
|
37
|
+
data: {
|
|
38
|
+
type: 'object',
|
|
39
|
+
description: 'JSON data to store',
|
|
40
|
+
},
|
|
41
|
+
name: {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Optional name for the pin',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
required: ['data'],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'ipfs_add_registration',
|
|
51
|
+
description: 'Store agent registration file to IPFS',
|
|
52
|
+
inputSchema: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
properties: {
|
|
55
|
+
registration: {
|
|
56
|
+
type: 'object',
|
|
57
|
+
description: 'Registration file JSON (ERC-8004 format)',
|
|
58
|
+
},
|
|
59
|
+
name: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'Optional name for the pin',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
required: ['registration'],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'ipfs_get_registration',
|
|
69
|
+
description: 'Retrieve registration file from IPFS by CID',
|
|
70
|
+
inputSchema: {
|
|
71
|
+
type: 'object',
|
|
72
|
+
properties: {
|
|
73
|
+
cid: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
description: 'IPFS CID of the registration file',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
required: ['cid'],
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
export const ipfsHandlers = {
|
|
83
|
+
ipfs_configure: async (args) => {
|
|
84
|
+
const input = getArgs(args);
|
|
85
|
+
const pinataJwt = readString(input, 'pinataJwt');
|
|
86
|
+
const ipfsUrl = readString(input, 'ipfsUrl');
|
|
87
|
+
const filecoinEnabled = readBoolean(input, 'filecoinEnabled') ?? false;
|
|
88
|
+
const filecoinPrivateKey = readString(input, 'filecoinPrivateKey');
|
|
89
|
+
// Build IPFS config
|
|
90
|
+
const config = {
|
|
91
|
+
pinataJwt,
|
|
92
|
+
pinataEnabled: !!pinataJwt,
|
|
93
|
+
url: ipfsUrl,
|
|
94
|
+
filecoinPinEnabled: filecoinEnabled,
|
|
95
|
+
filecoinPrivateKey,
|
|
96
|
+
};
|
|
97
|
+
// Configure global IPFS service (chain-agnostic)
|
|
98
|
+
globalState.ipfs.configure(config);
|
|
99
|
+
// Also store in global config for persistence
|
|
100
|
+
globalState.setConfig({
|
|
101
|
+
ipfs: {
|
|
102
|
+
pinataJwt,
|
|
103
|
+
ipfsUrl,
|
|
104
|
+
filecoinEnabled,
|
|
105
|
+
filecoinPrivateKey,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
return successResponse({
|
|
109
|
+
message: 'IPFS configured',
|
|
110
|
+
hasPinata: !!pinataJwt,
|
|
111
|
+
hasIpfsNode: !!ipfsUrl,
|
|
112
|
+
hasFilecoin: filecoinEnabled,
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
ipfs_add_json: async (args) => {
|
|
116
|
+
const input = getArgs(args);
|
|
117
|
+
const data = readRecord(input, 'data', true);
|
|
118
|
+
if (!globalState.ipfs.isConfigured()) {
|
|
119
|
+
throw new Error('IPFS not configured. Call ipfs_configure first.');
|
|
120
|
+
}
|
|
121
|
+
const cid = await globalState.ipfs.addJson(data);
|
|
122
|
+
return successResponse({
|
|
123
|
+
cid,
|
|
124
|
+
gateway: `https://gateway.pinata.cloud/ipfs/${cid}`,
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
ipfs_add_registration: async (args) => {
|
|
128
|
+
const input = getArgs(args);
|
|
129
|
+
const registration = readRecord(input, 'registration', true);
|
|
130
|
+
if (!globalState.ipfs.isConfigured()) {
|
|
131
|
+
throw new Error('IPFS not configured. Call ipfs_configure first.');
|
|
132
|
+
}
|
|
133
|
+
const cid = await globalState.ipfs.addJson(registration);
|
|
134
|
+
return successResponse({
|
|
135
|
+
cid,
|
|
136
|
+
gateway: `https://gateway.pinata.cloud/ipfs/${cid}`,
|
|
137
|
+
uri: `ipfs://${cid}`,
|
|
138
|
+
});
|
|
139
|
+
},
|
|
140
|
+
ipfs_get_registration: async (args) => {
|
|
141
|
+
const input = getArgs(args);
|
|
142
|
+
const cid = readString(input, 'cid', true);
|
|
143
|
+
if (!globalState.ipfs.isConfigured()) {
|
|
144
|
+
throw new Error('IPFS not configured. Call ipfs_configure first.');
|
|
145
|
+
}
|
|
146
|
+
const registration = await globalState.ipfs.getJson(cid);
|
|
147
|
+
return successResponse(registration);
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
// Backward compatibility aliases
|
|
151
|
+
export const ipfsAliases = {
|
|
152
|
+
ipfs_add_json: 'ipfs_add_json',
|
|
153
|
+
ipfs_add_registration_file: 'ipfs_add_registration',
|
|
154
|
+
ipfs_get_registration_file: 'ipfs_get_registration',
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=ipfs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/tools/unified/ipfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const oasfTools: Tool[];
|
|
3
|
+
export declare const oasfHandlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
4
|
+
export declare const oasfAliases: Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=oasf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oasf.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/oasf.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAW/D,eAAO,MAAM,SAAS,EAAE,IAAI,EAmE3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAwG5E,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// Unified OASF validation tools
|
|
2
|
+
import { getArgs, readString } from '../../core/parsers/common.js';
|
|
3
|
+
import { successResponse } from '../../core/serializers/common.js';
|
|
4
|
+
import { validateSkill, validateDomain, getAllSkills, getAllDomains, } from '8004-solana';
|
|
5
|
+
import { Tag, isKnownTag, getTagDescription } from '../../core/utils/tags.js';
|
|
6
|
+
export const oasfTools = [
|
|
7
|
+
{
|
|
8
|
+
name: 'oasf_validate_skill',
|
|
9
|
+
description: 'Validate an OASF skill slug format',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
skill: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Skill slug to validate (e.g., "web-search")',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
required: ['skill'],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'oasf_validate_domain',
|
|
23
|
+
description: 'Validate an OASF domain slug format',
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
properties: {
|
|
27
|
+
domain: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'Domain slug to validate (e.g., "finance")',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
required: ['domain'],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'oasf_list_skills',
|
|
37
|
+
description: 'List all valid OASF skill slugs',
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
properties: {},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'oasf_list_domains',
|
|
45
|
+
description: 'List all valid OASF domain slugs',
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: 'object',
|
|
48
|
+
properties: {},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'oasf_list_tags',
|
|
53
|
+
description: 'List all 8004 standardized tags for feedback (category and period tags)',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'oasf_validate_tag',
|
|
61
|
+
description: 'Check if a tag is a known 8004 standardized tag',
|
|
62
|
+
inputSchema: {
|
|
63
|
+
type: 'object',
|
|
64
|
+
properties: {
|
|
65
|
+
tag: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: 'Tag to validate (e.g., "uptime", "day", "x402-resource-delivered")',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
required: ['tag'],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
export const oasfHandlers = {
|
|
75
|
+
oasf_validate_skill: async (args) => {
|
|
76
|
+
const input = getArgs(args);
|
|
77
|
+
const skill = readString(input, 'skill', true);
|
|
78
|
+
const isValid = validateSkill(skill);
|
|
79
|
+
return successResponse({
|
|
80
|
+
skill,
|
|
81
|
+
valid: isValid,
|
|
82
|
+
message: isValid ? 'Valid OASF skill' : 'Invalid OASF skill slug',
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
oasf_validate_domain: async (args) => {
|
|
86
|
+
const input = getArgs(args);
|
|
87
|
+
const domain = readString(input, 'domain', true);
|
|
88
|
+
const isValid = validateDomain(domain);
|
|
89
|
+
return successResponse({
|
|
90
|
+
domain,
|
|
91
|
+
valid: isValid,
|
|
92
|
+
message: isValid ? 'Valid OASF domain' : 'Invalid OASF domain slug',
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
oasf_list_skills: async () => {
|
|
96
|
+
const skills = getAllSkills();
|
|
97
|
+
return successResponse({
|
|
98
|
+
skills,
|
|
99
|
+
count: skills.length,
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
oasf_list_domains: async () => {
|
|
103
|
+
const domains = getAllDomains();
|
|
104
|
+
return successResponse({
|
|
105
|
+
domains,
|
|
106
|
+
count: domains.length,
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
oasf_list_tags: async () => {
|
|
110
|
+
// Build structured tag list from Tag constant
|
|
111
|
+
const categoryTags = [
|
|
112
|
+
{ key: 'starred', value: Tag.starred, description: getTagDescription(Tag.starred) },
|
|
113
|
+
{ key: 'reachable', value: Tag.reachable, description: getTagDescription(Tag.reachable) },
|
|
114
|
+
{ key: 'ownerVerified', value: Tag.ownerVerified, description: getTagDescription(Tag.ownerVerified) },
|
|
115
|
+
{ key: 'uptime', value: Tag.uptime, description: getTagDescription(Tag.uptime) },
|
|
116
|
+
{ key: 'successRate', value: Tag.successRate, description: getTagDescription(Tag.successRate) },
|
|
117
|
+
{ key: 'responseTime', value: Tag.responseTime, description: getTagDescription(Tag.responseTime) },
|
|
118
|
+
{ key: 'blocktimeFreshness', value: Tag.blocktimeFreshness, description: getTagDescription(Tag.blocktimeFreshness) },
|
|
119
|
+
{ key: 'revenues', value: Tag.revenues, description: getTagDescription(Tag.revenues) },
|
|
120
|
+
{ key: 'tradingYield', value: Tag.tradingYield, description: getTagDescription(Tag.tradingYield) },
|
|
121
|
+
];
|
|
122
|
+
const periodTags = [
|
|
123
|
+
{ key: 'day', value: Tag.day, description: getTagDescription(Tag.day) },
|
|
124
|
+
{ key: 'week', value: Tag.week, description: getTagDescription(Tag.week) },
|
|
125
|
+
{ key: 'month', value: Tag.month, description: getTagDescription(Tag.month) },
|
|
126
|
+
{ key: 'year', value: Tag.year, description: getTagDescription(Tag.year) },
|
|
127
|
+
];
|
|
128
|
+
const x402Tags = [
|
|
129
|
+
{ key: 'x402ResourceDelivered', value: Tag.x402ResourceDelivered, description: getTagDescription(Tag.x402ResourceDelivered) },
|
|
130
|
+
{ key: 'x402DeliveryFailed', value: Tag.x402DeliveryFailed, description: getTagDescription(Tag.x402DeliveryFailed) },
|
|
131
|
+
{ key: 'x402DeliveryTimeout', value: Tag.x402DeliveryTimeout, description: getTagDescription(Tag.x402DeliveryTimeout) },
|
|
132
|
+
{ key: 'x402QualityIssue', value: Tag.x402QualityIssue, description: getTagDescription(Tag.x402QualityIssue) },
|
|
133
|
+
{ key: 'x402GoodPayer', value: Tag.x402GoodPayer, description: getTagDescription(Tag.x402GoodPayer) },
|
|
134
|
+
{ key: 'x402PaymentFailed', value: Tag.x402PaymentFailed, description: getTagDescription(Tag.x402PaymentFailed) },
|
|
135
|
+
{ key: 'x402InsufficientFunds', value: Tag.x402InsufficientFunds, description: getTagDescription(Tag.x402InsufficientFunds) },
|
|
136
|
+
{ key: 'x402InvalidSignature', value: Tag.x402InvalidSignature, description: getTagDescription(Tag.x402InvalidSignature) },
|
|
137
|
+
{ key: 'x402Evm', value: Tag.x402Evm, description: getTagDescription(Tag.x402Evm) },
|
|
138
|
+
{ key: 'x402Svm', value: Tag.x402Svm, description: getTagDescription(Tag.x402Svm) },
|
|
139
|
+
];
|
|
140
|
+
return successResponse({
|
|
141
|
+
categoryTags,
|
|
142
|
+
periodTags,
|
|
143
|
+
x402Tags,
|
|
144
|
+
usage: {
|
|
145
|
+
tag1: 'Category tag (what metric)',
|
|
146
|
+
tag2: 'Period tag (time window) or x402 network tag',
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
},
|
|
150
|
+
oasf_validate_tag: async (args) => {
|
|
151
|
+
const input = getArgs(args);
|
|
152
|
+
const tag = readString(input, 'tag', true);
|
|
153
|
+
const isKnown = isKnownTag(tag);
|
|
154
|
+
const description = getTagDescription(tag);
|
|
155
|
+
return successResponse({
|
|
156
|
+
tag,
|
|
157
|
+
known: isKnown,
|
|
158
|
+
description: description ?? (isKnown ? undefined : 'Custom tag (not standardized)'),
|
|
159
|
+
message: isKnown
|
|
160
|
+
? `"${tag}" is a known 8004 standardized tag`
|
|
161
|
+
: `"${tag}" is a custom tag (will work but not standardized)`,
|
|
162
|
+
});
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
// No aliases needed - same names
|
|
166
|
+
export const oasfAliases = {};
|
|
167
|
+
//# sourceMappingURL=oasf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oasf.js","sourceRoot":"","sources":["../../../src/tools/unified/oasf.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAW;IAC/B;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,oCAAoC;QACjD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6CAA6C;iBAC3D;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iCAAiC;QAC9C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,yEAAyE;QACtF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oEAAoE;iBAClF;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAwD;IAC/E,mBAAmB,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,eAAe,CAAC;YACrB,KAAK;YACL,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,yBAAyB;SAClE,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvC,OAAO,eAAe,CAAC;YACrB,MAAM;YACN,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B;SACpE,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC;YACrB,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC;YACrB,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAED,cAAc,EAAE,KAAK,IAAI,EAAE;QACzB,8CAA8C;QAC9C,MAAM,YAAY,GAAG;YACnB,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACnF,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACzF,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YACrG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChF,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC/F,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YAClG,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;YACpH,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACtF,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;SACnG,CAAC;QAEF,MAAM,UAAU,GAAG;YACjB,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACvE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1E,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC7E,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;SAC3E,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,GAAG,CAAC,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE;YAC7H,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;YACpH,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YACvH,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;YAC9G,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YACrG,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YACjH,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,GAAG,CAAC,qBAAqB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE;YAC7H,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,CAAC,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;YAC1H,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACnF,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;SACpF,CAAC;QAEF,OAAO,eAAe,CAAC;YACrB,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,KAAK,EAAE;gBACL,IAAI,EAAE,4BAA4B;gBAClC,IAAI,EAAE,8CAA8C;aACrD;SACF,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO,eAAe,CAAC;YACrB,GAAG;YACH,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,+BAA+B,CAAC;YACnF,OAAO,EAAE,OAAO;gBACd,CAAC,CAAC,IAAI,GAAG,oCAAoC;gBAC7C,CAAC,CAAC,IAAI,GAAG,oDAAoD;SAChE,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
export declare const registrationTools: Tool[];
|
|
3
|
+
export declare const registrationHandlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
4
|
+
export declare const registrationAliases: Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/registration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAa/D,eAAO,MAAM,iBAAiB,EAAE,IAAI,EAoEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAoEpF,CAAC;AAiHF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtD,CAAC"}
|