@andrewkimjoseph/celina-sdk 0.4.11 → 0.5.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/README.md +4 -0
- package/build/analytics/mcp-tool-events.js +1 -0
- package/build/analytics/mcp-tool-events.js.map +1 -1
- package/build/services/blockchain.service.d.ts +33 -3
- package/build/services/blockchain.service.js +40 -21
- package/build/services/blockchain.service.js.map +1 -1
- package/build/tools/catalog.d.ts +9 -0
- package/build/tools/catalog.js +36 -0
- package/build/tools/catalog.js.map +1 -0
- package/build/tools/domains/aave.d.ts +2 -0
- package/build/tools/domains/aave.js +89 -0
- package/build/tools/domains/aave.js.map +1 -0
- package/build/tools/domains/blockchain.d.ts +2 -0
- package/build/tools/domains/blockchain.js +85 -0
- package/build/tools/domains/blockchain.js.map +1 -0
- package/build/tools/domains/carbon.d.ts +2 -0
- package/build/tools/domains/carbon.js +187 -0
- package/build/tools/domains/carbon.js.map +1 -0
- package/build/tools/domains/celeste.d.ts +2 -0
- package/build/tools/domains/celeste.js +42 -0
- package/build/tools/domains/celeste.js.map +1 -0
- package/build/tools/domains/contract.d.ts +2 -0
- package/build/tools/domains/contract.js +67 -0
- package/build/tools/domains/contract.js.map +1 -0
- package/build/tools/domains/ens.d.ts +2 -0
- package/build/tools/domains/ens.js +16 -0
- package/build/tools/domains/ens.js.map +1 -0
- package/build/tools/domains/gooddollar.d.ts +2 -0
- package/build/tools/domains/gooddollar.js +73 -0
- package/build/tools/domains/gooddollar.js.map +1 -0
- package/build/tools/domains/governance.d.ts +2 -0
- package/build/tools/domains/governance.js +41 -0
- package/build/tools/domains/governance.js.map +1 -0
- package/build/tools/domains/index.d.ts +1 -0
- package/build/tools/domains/index.js +33 -0
- package/build/tools/domains/index.js.map +1 -0
- package/build/tools/domains/mento-fx.d.ts +2 -0
- package/build/tools/domains/mento-fx.js +72 -0
- package/build/tools/domains/mento-fx.js.map +1 -0
- package/build/tools/domains/nft.d.ts +2 -0
- package/build/tools/domains/nft.js +38 -0
- package/build/tools/domains/nft.js.map +1 -0
- package/build/tools/domains/self.d.ts +2 -0
- package/build/tools/domains/self.js +194 -0
- package/build/tools/domains/self.js.map +1 -0
- package/build/tools/domains/staking.d.ts +2 -0
- package/build/tools/domains/staking.js +74 -0
- package/build/tools/domains/staking.js.map +1 -0
- package/build/tools/domains/token.d.ts +2 -0
- package/build/tools/domains/token.js +73 -0
- package/build/tools/domains/token.js.map +1 -0
- package/build/tools/domains/transaction.d.ts +2 -0
- package/build/tools/domains/transaction.js +117 -0
- package/build/tools/domains/transaction.js.map +1 -0
- package/build/tools/domains/uniswap.d.ts +2 -0
- package/build/tools/domains/uniswap.js +72 -0
- package/build/tools/domains/uniswap.js.map +1 -0
- package/build/tools/filter.d.ts +2 -0
- package/build/tools/filter.js +28 -0
- package/build/tools/filter.js.map +1 -0
- package/build/tools/index.d.ts +7 -0
- package/build/tools/index.js +7 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/schemas/common.d.ts +110 -0
- package/build/tools/schemas/common.js +81 -0
- package/build/tools/schemas/common.js.map +1 -0
- package/build/tools/swap-routing.d.ts +24 -0
- package/build/tools/swap-routing.js +105 -0
- package/build/tools/swap-routing.js.map +1 -0
- package/build/tools/types.d.ts +134 -0
- package/build/tools/types.js +2 -0
- package/build/tools/types.js.map +1 -0
- package/build/tools/utils/carbon-prepare-handler.d.ts +6 -0
- package/build/tools/utils/carbon-prepare-handler.js +17 -0
- package/build/tools/utils/carbon-prepare-handler.js.map +1 -0
- package/build/tools/utils/normalize-token.d.ts +2 -0
- package/build/tools/utils/normalize-token.js +12 -0
- package/build/tools/utils/normalize-token.js.map +1 -0
- package/build/tools/utils/wallet.d.ts +2 -0
- package/build/tools/utils/wallet.js +4 -0
- package/build/tools/utils/wallet.js.map +1 -0
- package/package.json +7 -1
- package/tests/README.md +4 -0
- package/tests/catalog/domains/blockchain.ts +24 -0
- package/tests/catalog/operations.ts +11 -1
- package/tests/testing-entry.ts +5 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { selfDemoUrl } from "../../config/self.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { addressSchema } from "../schemas/common.js";
|
|
4
|
+
const SELF_DEMO_VERIFY_URL = selfDemoUrl("/api/demo/verify");
|
|
5
|
+
const selfRegistrationModeSchema = z
|
|
6
|
+
.enum([
|
|
7
|
+
"linked",
|
|
8
|
+
"wallet-free",
|
|
9
|
+
"smartwallet",
|
|
10
|
+
"self-custody",
|
|
11
|
+
"ed25519",
|
|
12
|
+
"ed25519-linked",
|
|
13
|
+
])
|
|
14
|
+
.optional();
|
|
15
|
+
function requireSelf(runtime) {
|
|
16
|
+
const self = runtime.executors?.self;
|
|
17
|
+
if (!self) {
|
|
18
|
+
throw new Error("Self executor not configured.");
|
|
19
|
+
}
|
|
20
|
+
return self;
|
|
21
|
+
}
|
|
22
|
+
export const selfToolDefinitions = [
|
|
23
|
+
{
|
|
24
|
+
name: "verify_self_agent",
|
|
25
|
+
description: "Verify whether an agent address is backed by a real human on Self Agent ID (Celo mainnet).",
|
|
26
|
+
inputSchema: z.object({
|
|
27
|
+
agent_address: addressSchema,
|
|
28
|
+
require_age: z.union([z.literal(0), z.literal(18), z.literal(21)]).optional(),
|
|
29
|
+
require_ofac: z.boolean().optional(),
|
|
30
|
+
require_self_provider: z.boolean().optional(),
|
|
31
|
+
}),
|
|
32
|
+
families: ["read"],
|
|
33
|
+
surfaces: ["mcp"],
|
|
34
|
+
mcp: {
|
|
35
|
+
title: "Verify Self Agent",
|
|
36
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
37
|
+
},
|
|
38
|
+
handler: async (runtime, input) => requireSelf(runtime).verifyAgent({
|
|
39
|
+
agentAddress: input.agent_address,
|
|
40
|
+
requireAge: input.require_age,
|
|
41
|
+
requireOfac: input.require_ofac,
|
|
42
|
+
requireSelfProvider: input.require_self_provider,
|
|
43
|
+
}),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "lookup_self_agent",
|
|
47
|
+
description: "Look up a Self Agent ID by numeric on-chain ID.",
|
|
48
|
+
inputSchema: z.object({
|
|
49
|
+
agent_id: z.number().int().positive(),
|
|
50
|
+
}),
|
|
51
|
+
families: ["read"],
|
|
52
|
+
surfaces: ["mcp"],
|
|
53
|
+
mcp: {
|
|
54
|
+
title: "Look Up Self Agent",
|
|
55
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
56
|
+
},
|
|
57
|
+
handler: async (runtime, input) => requireSelf(runtime).lookupAgent(input.agent_id),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "verify_self_request",
|
|
61
|
+
description: "Verify incoming HTTP request headers signed by a Self Agent.",
|
|
62
|
+
inputSchema: z.object({
|
|
63
|
+
agent_signature: z.string().regex(/^0x[a-fA-F0-9]+$/),
|
|
64
|
+
agent_timestamp: z.string(),
|
|
65
|
+
method: z.string(),
|
|
66
|
+
path: z.string(),
|
|
67
|
+
body: z.string().optional(),
|
|
68
|
+
keytype: z.string().optional(),
|
|
69
|
+
agent_key: z.string().regex(/^0x[a-fA-F0-9]+$/).optional(),
|
|
70
|
+
}),
|
|
71
|
+
families: ["read"],
|
|
72
|
+
surfaces: ["mcp"],
|
|
73
|
+
mcp: {
|
|
74
|
+
title: "Verify Self Agent Request",
|
|
75
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
76
|
+
},
|
|
77
|
+
handler: async (runtime, input) => requireSelf(runtime).verifyRequest(input),
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "register_self_agent",
|
|
81
|
+
description: "Start Self Agent ID registration. Returns qr_code_url and deep_link — present BOTH to the user.",
|
|
82
|
+
inputSchema: z.object({
|
|
83
|
+
mode: selfRegistrationModeSchema,
|
|
84
|
+
minimum_age: z.union([z.literal(0), z.literal(18), z.literal(21)]).optional(),
|
|
85
|
+
ofac: z.boolean().optional(),
|
|
86
|
+
human_address: addressSchema.optional(),
|
|
87
|
+
agent_name: z.string().optional(),
|
|
88
|
+
agent_description: z.string().optional(),
|
|
89
|
+
}),
|
|
90
|
+
families: ["execute"],
|
|
91
|
+
surfaces: ["mcp"],
|
|
92
|
+
mcp: {
|
|
93
|
+
title: "Register Self Agent",
|
|
94
|
+
annotations: { destructiveHint: true, openWorldHint: true },
|
|
95
|
+
responseKind: "self_session",
|
|
96
|
+
},
|
|
97
|
+
handler: async (runtime, input) => requireSelf(runtime).registerAgent({
|
|
98
|
+
mode: input.mode,
|
|
99
|
+
minimumAge: input.minimum_age,
|
|
100
|
+
ofac: input.ofac,
|
|
101
|
+
humanAddress: input.human_address,
|
|
102
|
+
agentName: input.agent_name,
|
|
103
|
+
agentDescription: input.agent_description,
|
|
104
|
+
}),
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: "check_self_registration",
|
|
108
|
+
description: "Poll a pending Self registration, proof refresh, or deregistration session.",
|
|
109
|
+
inputSchema: z.object({
|
|
110
|
+
session_id: z.string(),
|
|
111
|
+
}),
|
|
112
|
+
families: ["read"],
|
|
113
|
+
surfaces: ["mcp"],
|
|
114
|
+
mcp: {
|
|
115
|
+
title: "Check Self Registration",
|
|
116
|
+
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
|
|
117
|
+
},
|
|
118
|
+
handler: async (runtime, input) => requireSelf(runtime).checkRegistration(input.session_id),
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: "get_self_identity",
|
|
122
|
+
description: "Return the configured Self agent identity. Requires SELF_AGENT_PRIVATE_KEY.",
|
|
123
|
+
inputSchema: z.object({}),
|
|
124
|
+
families: ["read"],
|
|
125
|
+
surfaces: ["mcp"],
|
|
126
|
+
mcp: {
|
|
127
|
+
title: "Get Self Agent Identity",
|
|
128
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
129
|
+
},
|
|
130
|
+
handler: async (runtime) => requireSelf(runtime).getIdentity(),
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "refresh_self_proof",
|
|
134
|
+
description: "Start a human proof refresh after on-chain proof expiry. Returns qr_code_url and deep_link.",
|
|
135
|
+
inputSchema: z.object({
|
|
136
|
+
agent_id: z.number().int().positive().optional(),
|
|
137
|
+
}),
|
|
138
|
+
families: ["execute"],
|
|
139
|
+
surfaces: ["mcp"],
|
|
140
|
+
mcp: {
|
|
141
|
+
title: "Refresh Self Proof",
|
|
142
|
+
annotations: { openWorldHint: true },
|
|
143
|
+
responseKind: "self_session",
|
|
144
|
+
},
|
|
145
|
+
handler: async (runtime, input) => requireSelf(runtime).refreshProof({ agentId: input.agent_id }),
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: "deregister_self_agent",
|
|
149
|
+
description: "Start irreversible Self agent deregistration. Returns qr_code_url and deep_link.",
|
|
150
|
+
inputSchema: z.object({}),
|
|
151
|
+
families: ["execute"],
|
|
152
|
+
surfaces: ["mcp"],
|
|
153
|
+
mcp: {
|
|
154
|
+
title: "Deregister Self Agent",
|
|
155
|
+
annotations: { destructiveHint: true, openWorldHint: true },
|
|
156
|
+
responseKind: "self_session",
|
|
157
|
+
},
|
|
158
|
+
handler: async (runtime) => requireSelf(runtime).deregisterAgent(),
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: "sign_self_request",
|
|
162
|
+
description: `Sign an HTTP request with the configured Self agent. Demo verify: POST ${SELF_DEMO_VERIFY_URL}`,
|
|
163
|
+
inputSchema: z.object({
|
|
164
|
+
method: z.enum(["GET", "POST", "PUT", "DELETE"]),
|
|
165
|
+
url: z.string().url(),
|
|
166
|
+
body: z.string().optional(),
|
|
167
|
+
}),
|
|
168
|
+
families: ["read"],
|
|
169
|
+
surfaces: ["mcp"],
|
|
170
|
+
mcp: {
|
|
171
|
+
title: "Sign Self Agent Request",
|
|
172
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
173
|
+
},
|
|
174
|
+
handler: async (runtime, input) => requireSelf(runtime).signRequest(input),
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: "authenticated_self_fetch",
|
|
178
|
+
description: `HTTP request with Self Agent ID auth headers. Demo: ?network=celo-mainnet — ${SELF_DEMO_VERIFY_URL}`,
|
|
179
|
+
inputSchema: z.object({
|
|
180
|
+
method: z.enum(["GET", "POST", "PUT", "DELETE"]),
|
|
181
|
+
url: z.string().url(),
|
|
182
|
+
body: z.string().optional(),
|
|
183
|
+
content_type: z.string().optional(),
|
|
184
|
+
}),
|
|
185
|
+
families: ["execute"],
|
|
186
|
+
surfaces: ["mcp"],
|
|
187
|
+
mcp: {
|
|
188
|
+
title: "Authenticated Self Fetch",
|
|
189
|
+
annotations: { openWorldHint: true },
|
|
190
|
+
},
|
|
191
|
+
handler: async (runtime, input) => requireSelf(runtime).authenticatedFetch(input),
|
|
192
|
+
},
|
|
193
|
+
];
|
|
194
|
+
//# sourceMappingURL=self.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../../src/tools/domains/self.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressSchema, optionalWalletAddressSchema, paginationFields, } from "../schemas/common.js";
|
|
3
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
4
|
+
const readOnly = {
|
|
5
|
+
readOnlyHint: true,
|
|
6
|
+
idempotentHint: true,
|
|
7
|
+
};
|
|
8
|
+
export const stakingToolDefinitions = [
|
|
9
|
+
{
|
|
10
|
+
name: "get_staking_balances",
|
|
11
|
+
description: "Active and pending staking votes for an address by validator group.",
|
|
12
|
+
inputSchema: z.object({
|
|
13
|
+
address: optionalWalletAddressSchema,
|
|
14
|
+
}),
|
|
15
|
+
families: ["read"],
|
|
16
|
+
mcp: { title: "Get Staking Balances", annotations: readOnly },
|
|
17
|
+
handler: async (runtime, input) => {
|
|
18
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
19
|
+
address: input.address,
|
|
20
|
+
});
|
|
21
|
+
return runtime.celina.staking.getStakingBalances(target);
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "get_activatable_stakes",
|
|
26
|
+
description: "Validator groups where pending stakes can be activated for an address.",
|
|
27
|
+
inputSchema: z.object({
|
|
28
|
+
address: optionalWalletAddressSchema,
|
|
29
|
+
}),
|
|
30
|
+
families: ["read"],
|
|
31
|
+
mcp: { title: "Get Activatable Stakes", annotations: readOnly },
|
|
32
|
+
handler: async (runtime, input) => {
|
|
33
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
34
|
+
address: input.address,
|
|
35
|
+
});
|
|
36
|
+
return runtime.celina.staking.getActivatableStakes(target);
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "get_validator_groups",
|
|
41
|
+
description: "Paginated validator groups with votes, capacity, and member counts.",
|
|
42
|
+
inputSchema: z.object({
|
|
43
|
+
...paginationFields,
|
|
44
|
+
page_size: z.number().int().min(1).max(50).optional(),
|
|
45
|
+
}),
|
|
46
|
+
families: ["read"],
|
|
47
|
+
mcp: { title: "Get Validator Groups", annotations: readOnly },
|
|
48
|
+
handler: async (runtime, input) => runtime.celina.staking.getValidatorGroups({
|
|
49
|
+
page: input.page,
|
|
50
|
+
pageSize: input.page_size,
|
|
51
|
+
offset: input.offset,
|
|
52
|
+
limit: input.limit,
|
|
53
|
+
}),
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "get_validator_group_details",
|
|
57
|
+
description: "Detailed information about a validator group including members.",
|
|
58
|
+
inputSchema: z.object({
|
|
59
|
+
group_address: addressSchema,
|
|
60
|
+
}),
|
|
61
|
+
families: ["read"],
|
|
62
|
+
mcp: { title: "Get Validator Group Details", annotations: readOnly },
|
|
63
|
+
handler: async (runtime, input) => runtime.celina.staking.getValidatorGroupDetails(input.group_address),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "get_total_staking_info",
|
|
67
|
+
description: "Network-wide staking participation metrics.",
|
|
68
|
+
inputSchema: z.object({}),
|
|
69
|
+
families: ["read"],
|
|
70
|
+
mcp: { title: "Get Total Staking Info", annotations: readOnly },
|
|
71
|
+
handler: async (runtime) => runtime.celina.staking.getTotalStakingInfo(),
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
//# sourceMappingURL=staking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/tools/domains/staking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { optionalWalletAddressSchema, tokenSymbolSchema, } from "../schemas/common.js";
|
|
3
|
+
import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
|
|
4
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
5
|
+
const readOnly = {
|
|
6
|
+
readOnlyHint: true,
|
|
7
|
+
idempotentHint: true,
|
|
8
|
+
};
|
|
9
|
+
export const tokenToolDefinitions = [
|
|
10
|
+
{
|
|
11
|
+
name: "get_celo_balances",
|
|
12
|
+
description: "Balances for named registry tokens on Celo mainnet. Default tokens: CELO + USDm.",
|
|
13
|
+
inputSchema: z.object({
|
|
14
|
+
address: optionalWalletAddressSchema,
|
|
15
|
+
tokens: z.array(tokenSymbolSchema).optional(),
|
|
16
|
+
}),
|
|
17
|
+
families: ["read"],
|
|
18
|
+
mcp: { title: "Get Celo Balances", annotations: readOnly },
|
|
19
|
+
handler: async (runtime, input) => {
|
|
20
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
21
|
+
address: input.address,
|
|
22
|
+
});
|
|
23
|
+
return runtime.celina.token.getBalances(target, input.tokens);
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "get_stablecoin_balances",
|
|
28
|
+
description: "Scan all registry stablecoins for an address in one call. Omits zero balances by default.",
|
|
29
|
+
inputSchema: z.object({
|
|
30
|
+
address: optionalWalletAddressSchema,
|
|
31
|
+
stablecoins: z.array(z.string()).optional(),
|
|
32
|
+
include_zero: z.boolean().optional(),
|
|
33
|
+
}),
|
|
34
|
+
families: ["read"],
|
|
35
|
+
mcp: { title: "Get Stablecoin Balances", annotations: readOnly },
|
|
36
|
+
handler: async (runtime, input) => {
|
|
37
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
38
|
+
address: input.address,
|
|
39
|
+
});
|
|
40
|
+
return runtime.celina.token.getStablecoinBalances(target, {
|
|
41
|
+
stablecoins: input.stablecoins,
|
|
42
|
+
includeZero: input.include_zero,
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "get_token_info",
|
|
48
|
+
description: "Registry token metadata (symbol, address, decimals). Does not read balances.",
|
|
49
|
+
inputSchema: z.object({
|
|
50
|
+
token: tokenSymbolSchema,
|
|
51
|
+
}),
|
|
52
|
+
families: ["read"],
|
|
53
|
+
mcp: { title: "Get Token Info", annotations: readOnly },
|
|
54
|
+
handler: async (runtime, input) => runtime.celina.token.getTokenInfo(normalizeRegistryTokenInput(input.token)),
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "get_token_balance",
|
|
58
|
+
description: "Balance for one registry token. Pass a symbol or known registry contract address.",
|
|
59
|
+
inputSchema: z.object({
|
|
60
|
+
token: tokenSymbolSchema,
|
|
61
|
+
address: optionalWalletAddressSchema,
|
|
62
|
+
}),
|
|
63
|
+
families: ["read"],
|
|
64
|
+
mcp: { title: "Get Token Balance", annotations: readOnly },
|
|
65
|
+
handler: async (runtime, input) => {
|
|
66
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
67
|
+
address: input.address,
|
|
68
|
+
});
|
|
69
|
+
return runtime.celina.token.getTokenBalance(normalizeRegistryTokenInput(input.token), target);
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/tools/domains/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressOrEnsSchema, addressSchema, hexDataSchema, optionalWalletAddressSchema, tokenSymbolSchema, } from "../schemas/common.js";
|
|
3
|
+
import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
|
|
4
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
5
|
+
export const transactionToolDefinitions = [
|
|
6
|
+
{
|
|
7
|
+
name: "estimate_send",
|
|
8
|
+
description: "Estimates gas for sending CELO or an ERC-20. Recipient can be ENS.",
|
|
9
|
+
inputSchema: z.object({
|
|
10
|
+
to: addressOrEnsSchema,
|
|
11
|
+
token: tokenSymbolSchema.optional(),
|
|
12
|
+
amount: z.string(),
|
|
13
|
+
from: optionalWalletAddressSchema,
|
|
14
|
+
}),
|
|
15
|
+
families: ["read"],
|
|
16
|
+
mcp: { title: "Estimate Send", annotations: { readOnlyHint: true } },
|
|
17
|
+
handler: async (runtime, input) => {
|
|
18
|
+
const { address, ens } = await runtime.celina.ens.resolveAddressOrEns(input.to);
|
|
19
|
+
const token = normalizeRegistryTokenInput(input.token ?? "CELO");
|
|
20
|
+
const amount = input.amount;
|
|
21
|
+
if (runtime.executors?.transaction) {
|
|
22
|
+
const estimate = await runtime.executors.transaction.estimateSend(address, token, amount);
|
|
23
|
+
if (ens) {
|
|
24
|
+
return Object.assign({}, estimate, { ens });
|
|
25
|
+
}
|
|
26
|
+
return estimate;
|
|
27
|
+
}
|
|
28
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
29
|
+
from: input.from,
|
|
30
|
+
address: input.from,
|
|
31
|
+
});
|
|
32
|
+
const estimate = await runtime.celina.transaction.estimateSend(sender, address, token, amount);
|
|
33
|
+
return ens ? { ...estimate, ens } : estimate;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "send_token",
|
|
38
|
+
description: "Send CELO or an ERC-20 on mainnet. Requires CELO_PRIVATE_KEY in MCP server env.",
|
|
39
|
+
inputSchema: z.object({
|
|
40
|
+
to: addressOrEnsSchema,
|
|
41
|
+
token: tokenSymbolSchema.optional(),
|
|
42
|
+
amount: z.string(),
|
|
43
|
+
}),
|
|
44
|
+
families: ["execute"],
|
|
45
|
+
surfaces: ["mcp"],
|
|
46
|
+
mcp: {
|
|
47
|
+
title: "Send Token",
|
|
48
|
+
annotations: { destructiveHint: true, openWorldHint: true },
|
|
49
|
+
},
|
|
50
|
+
handler: async (runtime, input) => {
|
|
51
|
+
const tx = runtime.executors?.transaction;
|
|
52
|
+
if (!tx)
|
|
53
|
+
throw new Error("Transaction executor not configured.");
|
|
54
|
+
const { address, ens } = await runtime.celina.ens.resolveAddressOrEns(input.to);
|
|
55
|
+
const result = await tx.sendToken(address, normalizeRegistryTokenInput(input.token ?? "CELO"), input.amount);
|
|
56
|
+
return ens ? Object.assign({}, result, { ens }) : result;
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "prepare_send",
|
|
61
|
+
description: "Prepare an unsigned send transaction. User must confirm and sign in wallet.",
|
|
62
|
+
inputSchema: z.object({
|
|
63
|
+
to: addressOrEnsSchema,
|
|
64
|
+
token: z.string(),
|
|
65
|
+
amount: z.string(),
|
|
66
|
+
from: optionalWalletAddressSchema,
|
|
67
|
+
}),
|
|
68
|
+
families: ["prepare"],
|
|
69
|
+
surfaces: ["celeste"],
|
|
70
|
+
handler: async (runtime, input) => {
|
|
71
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
72
|
+
from: input.from,
|
|
73
|
+
});
|
|
74
|
+
const token = normalizeRegistryTokenInput(input.token);
|
|
75
|
+
const amount = input.amount;
|
|
76
|
+
await runtime.hooks?.beforePrepareSend?.({ sender, token, amount });
|
|
77
|
+
const { address } = await runtime.celina.ens.resolveAddressOrEns(input.to);
|
|
78
|
+
return runtime.celina.transaction.prepareSend(sender, address, token, amount);
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "get_gas_fee_data",
|
|
83
|
+
description: "Returns current gas fee data including EIP-1559 fees on mainnet.",
|
|
84
|
+
inputSchema: z.object({}),
|
|
85
|
+
families: ["read"],
|
|
86
|
+
mcp: {
|
|
87
|
+
title: "Get Gas Fee Data",
|
|
88
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
89
|
+
},
|
|
90
|
+
handler: async (runtime) => runtime.celina.transaction.getGasFeeData(),
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "estimate_transaction",
|
|
94
|
+
description: "Estimates gas for a generic transaction (to/value/data) from a wallet.",
|
|
95
|
+
inputSchema: z.object({
|
|
96
|
+
from: optionalWalletAddressSchema,
|
|
97
|
+
to: addressSchema,
|
|
98
|
+
value: z.string().optional(),
|
|
99
|
+
data: hexDataSchema,
|
|
100
|
+
}),
|
|
101
|
+
families: ["read"],
|
|
102
|
+
mcp: { title: "Estimate Transaction", annotations: { readOnlyHint: true } },
|
|
103
|
+
handler: async (runtime, input) => {
|
|
104
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
105
|
+
from: input.from,
|
|
106
|
+
address: input.from,
|
|
107
|
+
});
|
|
108
|
+
return runtime.celina.transaction.estimateTransaction({
|
|
109
|
+
from: sender,
|
|
110
|
+
to: input.to,
|
|
111
|
+
value: input.value,
|
|
112
|
+
data: input.data,
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
//# sourceMappingURL=transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/tools/domains/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { uniswapQuoteSchema, uniswapWalletSchema, } from "../schemas/common.js";
|
|
2
|
+
import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
|
|
3
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
4
|
+
function mapUniswapWalletOptions(input) {
|
|
5
|
+
return {
|
|
6
|
+
recipient: input.recipient,
|
|
7
|
+
slippageTolerance: input.slippage_tolerance,
|
|
8
|
+
deadlineMinutes: input.deadline_minutes,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export const uniswapToolDefinitions = [
|
|
12
|
+
{
|
|
13
|
+
name: "get_uniswap_quote",
|
|
14
|
+
description: "Uniswap v4 AMM quote for a token pair on Celo mainnet.",
|
|
15
|
+
inputSchema: uniswapQuoteSchema,
|
|
16
|
+
families: ["read"],
|
|
17
|
+
mcp: { title: "Get Uniswap Quote", annotations: { readOnlyHint: true } },
|
|
18
|
+
handler: async (runtime, input) => {
|
|
19
|
+
const from = input.from
|
|
20
|
+
? resolveWalletFromRuntime(runtime, { from: input.from })
|
|
21
|
+
: undefined;
|
|
22
|
+
return runtime.celina.uniswap.getSwapQuote(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, from);
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "estimate_uniswap_swap",
|
|
27
|
+
description: "Estimate gas for a Uniswap v4 swap including ERC-20 and Permit2 approvals when needed.",
|
|
28
|
+
inputSchema: uniswapWalletSchema,
|
|
29
|
+
families: ["read"],
|
|
30
|
+
mcp: { title: "Estimate Uniswap Swap", annotations: { readOnlyHint: true } },
|
|
31
|
+
handler: async (runtime, input) => {
|
|
32
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
33
|
+
from: input.from,
|
|
34
|
+
});
|
|
35
|
+
if (runtime.executors?.uniswap) {
|
|
36
|
+
return runtime.executors.uniswap.estimate(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
|
|
37
|
+
}
|
|
38
|
+
return runtime.celina.uniswap.estimateSwap(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "execute_uniswap_swap",
|
|
43
|
+
description: "Execute a Uniswap v4 swap on Celo mainnet. Requires CELO_PRIVATE_KEY.",
|
|
44
|
+
inputSchema: uniswapWalletSchema,
|
|
45
|
+
families: ["execute"],
|
|
46
|
+
surfaces: ["mcp"],
|
|
47
|
+
mcp: {
|
|
48
|
+
title: "Execute Uniswap Swap",
|
|
49
|
+
annotations: { destructiveHint: true, openWorldHint: true },
|
|
50
|
+
},
|
|
51
|
+
handler: async (runtime, input) => {
|
|
52
|
+
const uni = runtime.executors?.uniswap;
|
|
53
|
+
if (!uni)
|
|
54
|
+
throw new Error("Uniswap executor not configured.");
|
|
55
|
+
return uni.execute(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "prepare_uniswap_swap",
|
|
60
|
+
description: "Prepare Uniswap v4 swap only. Prefer prepare_swap after get_swap_quote for automatic routing.",
|
|
61
|
+
inputSchema: uniswapWalletSchema,
|
|
62
|
+
families: ["prepare"],
|
|
63
|
+
surfaces: ["celeste"],
|
|
64
|
+
handler: async (runtime, input) => {
|
|
65
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
66
|
+
from: input.from,
|
|
67
|
+
});
|
|
68
|
+
return runtime.celina.uniswap.prepareSwap(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=uniswap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../src/tools/domains/uniswap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const CARBON_PREPARE_PREFIX = "prepare_carbon_";
|
|
2
|
+
const CARBON_EXECUTE_PREFIX = "execute_carbon_";
|
|
3
|
+
export function filterToolDefinitions(definitions, options = {}) {
|
|
4
|
+
return definitions.filter((def) => {
|
|
5
|
+
if (options.surface) {
|
|
6
|
+
const surfaces = def.surfaces ?? ["mcp", "celeste"];
|
|
7
|
+
if (!surfaces.includes(options.surface)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
if (options.families?.length) {
|
|
12
|
+
if (!options.families.some((f) => def.families.includes(f))) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (options.names?.length && !options.names.includes(def.name)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (def.name.startsWith(CARBON_PREPARE_PREFIX) && options.carbonPrepareEnabled === false) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (def.name.startsWith(CARBON_EXECUTE_PREFIX) && options.carbonExecuteEnabled === false) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/tools/filter.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAChD,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEhD,MAAM,UAAU,qBAAqB,CACnC,WAA6B,EAC7B,UAA8B,EAAE;IAEhC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getCelesteToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
|
|
2
|
+
export { filterToolDefinitions } from "./filter.js";
|
|
3
|
+
export { getSwapQuoteWithFallback, prepareSwapWithFallback, type SwapProtocol, type SwapQuoteResult, type SwapPrepareParams, } from "./swap-routing.js";
|
|
4
|
+
export * from "./schemas/common.js";
|
|
5
|
+
export type { FilterToolsOptions, McpToolAnnotations, McpToolMeta, ToolDefinition, ToolFamily, ToolRuntime, ToolRuntimeExecutors, ToolRuntimeHooks, ToolSurface, WalletInput, } from "./types.js";
|
|
6
|
+
export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
|
|
7
|
+
export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getCelesteToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
|
|
2
|
+
export { filterToolDefinitions } from "./filter.js";
|
|
3
|
+
export { getSwapQuoteWithFallback, prepareSwapWithFallback, } from "./swap-routing.js";
|
|
4
|
+
export * from "./schemas/common.js";
|
|
5
|
+
export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
|
|
6
|
+
export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|