@andrewkimjoseph/celina-sdk 0.4.12 → 0.5.1
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/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/operations.ts +11 -1
- package/tests/testing-entry.ts +5 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { optionalWalletAddressSchema } from "../schemas/common.js";
|
|
3
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
4
|
+
const readOnly = {
|
|
5
|
+
readOnlyHint: true,
|
|
6
|
+
idempotentHint: true,
|
|
7
|
+
};
|
|
8
|
+
export const gooddollarToolDefinitions = [
|
|
9
|
+
{
|
|
10
|
+
name: "get_gooddollar_whitelisting_info",
|
|
11
|
+
description: "Check GoodDollar IdentityV4 whitelist status for a wallet.",
|
|
12
|
+
inputSchema: z.object({
|
|
13
|
+
address: optionalWalletAddressSchema,
|
|
14
|
+
}),
|
|
15
|
+
families: ["read"],
|
|
16
|
+
mcp: { title: "Get GoodDollar Whitelisting Info", annotations: readOnly },
|
|
17
|
+
handler: async (runtime, input) => {
|
|
18
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
19
|
+
address: input.address,
|
|
20
|
+
});
|
|
21
|
+
return runtime.celina.gooddollar.getWhitelistingInfo(target);
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "get_gooddollar_ubi_entitlement",
|
|
26
|
+
description: "Daily GoodDollar UBI claim eligibility: whitelist root, claimable G$, already claimed.",
|
|
27
|
+
inputSchema: z.object({
|
|
28
|
+
address: optionalWalletAddressSchema,
|
|
29
|
+
}),
|
|
30
|
+
families: ["read"],
|
|
31
|
+
mcp: { title: "Get GoodDollar UBI Entitlement", annotations: readOnly },
|
|
32
|
+
handler: async (runtime, input) => {
|
|
33
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
34
|
+
address: input.address,
|
|
35
|
+
});
|
|
36
|
+
return runtime.celina.gooddollar.getUbiClaimEligibility(target);
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "claim_daily_gooddollar_ubi",
|
|
41
|
+
description: "Claim today's GoodDollar UBI for the MCP server wallet. Requires CELO_PRIVATE_KEY.",
|
|
42
|
+
inputSchema: z.object({}),
|
|
43
|
+
families: ["execute"],
|
|
44
|
+
surfaces: ["mcp"],
|
|
45
|
+
mcp: {
|
|
46
|
+
title: "Claim Daily GoodDollar UBI",
|
|
47
|
+
annotations: { destructiveHint: true, openWorldHint: true },
|
|
48
|
+
},
|
|
49
|
+
handler: async (runtime) => {
|
|
50
|
+
const write = runtime.executors?.gooddollarWrite;
|
|
51
|
+
if (!write) {
|
|
52
|
+
throw new Error("GoodDollar write executor not configured.");
|
|
53
|
+
}
|
|
54
|
+
return write.claimDailyUbi();
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "prepare_claim_daily_gooddollar_ubi",
|
|
59
|
+
description: "Prepare unsigned GoodDollar daily UBI claim. User must sign in wallet.",
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
from: optionalWalletAddressSchema,
|
|
62
|
+
}),
|
|
63
|
+
families: ["prepare"],
|
|
64
|
+
surfaces: ["celeste"],
|
|
65
|
+
handler: async (runtime, input) => {
|
|
66
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
67
|
+
from: input.from,
|
|
68
|
+
});
|
|
69
|
+
return runtime.celina.gooddollar.prepareClaimUbi(sender);
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
//# sourceMappingURL=gooddollar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gooddollar.js","sourceRoot":"","sources":["../../../src/tools/domains/gooddollar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { paginationFields } from "../schemas/common.js";
|
|
3
|
+
export const governanceToolDefinitions = [
|
|
4
|
+
{
|
|
5
|
+
name: "get_governance_proposals",
|
|
6
|
+
description: "Returns Celo governance proposals with pagination. Set include_metadata=false for faster responses.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
include_inactive: z.boolean().optional(),
|
|
9
|
+
include_metadata: z.boolean().optional(),
|
|
10
|
+
...paginationFields,
|
|
11
|
+
page_size: z.number().int().min(1).max(20).optional(),
|
|
12
|
+
}),
|
|
13
|
+
families: ["read"],
|
|
14
|
+
mcp: {
|
|
15
|
+
title: "Get Governance Proposals",
|
|
16
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
17
|
+
},
|
|
18
|
+
handler: async (runtime, input) => runtime.celina.governance.getGovernanceProposals({
|
|
19
|
+
includeInactive: input.include_inactive,
|
|
20
|
+
includeMetadata: input.include_metadata,
|
|
21
|
+
page: input.page,
|
|
22
|
+
pageSize: input.page_size,
|
|
23
|
+
offset: input.offset,
|
|
24
|
+
limit: input.limit,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "get_proposal_details",
|
|
29
|
+
description: "Returns detailed information about a Celo governance proposal.",
|
|
30
|
+
inputSchema: z.object({
|
|
31
|
+
proposal_id: z.number().int().min(0),
|
|
32
|
+
}),
|
|
33
|
+
families: ["read"],
|
|
34
|
+
mcp: {
|
|
35
|
+
title: "Get Proposal Details",
|
|
36
|
+
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
37
|
+
},
|
|
38
|
+
handler: async (runtime, input) => runtime.celina.governance.getProposalDetails(input.proposal_id),
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
//# sourceMappingURL=governance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../../src/tools/domains/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,qGAAqG;QACvG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACxC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACxC,GAAG,gBAAgB;YACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACtD,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE;YACH,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1D;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAChC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC;YAC/C,eAAe,EAAE,KAAK,CAAC,gBAAuC;YAC9D,eAAe,EAAE,KAAK,CAAC,gBAAuC;YAC9D,IAAI,EAAE,KAAK,CAAC,IAA0B;YACtC,QAAQ,EAAE,KAAK,CAAC,SAA+B;YAC/C,MAAM,EAAE,KAAK,CAAC,MAA4B;YAC1C,KAAK,EAAE,KAAK,CAAC,KAA2B;SACzC,CAAC;KACL;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,gEAAgE;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACrC,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE;YACH,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1D;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAChC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAqB,CAAC;KAC5E;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const allDomainToolDefinitions: import("../types.js").ToolDefinition[];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { aaveToolDefinitions } from "./aave.js";
|
|
2
|
+
import { blockchainToolDefinitions } from "./blockchain.js";
|
|
3
|
+
import { carbonToolDefinitions } from "./carbon.js";
|
|
4
|
+
import { celesteToolDefinitions } from "./celeste.js";
|
|
5
|
+
import { contractToolDefinitions } from "./contract.js";
|
|
6
|
+
import { ensToolDefinitions } from "./ens.js";
|
|
7
|
+
import { gooddollarToolDefinitions } from "./gooddollar.js";
|
|
8
|
+
import { governanceToolDefinitions } from "./governance.js";
|
|
9
|
+
import { mentoFxToolDefinitions } from "./mento-fx.js";
|
|
10
|
+
import { nftToolDefinitions } from "./nft.js";
|
|
11
|
+
import { selfToolDefinitions } from "./self.js";
|
|
12
|
+
import { stakingToolDefinitions } from "./staking.js";
|
|
13
|
+
import { tokenToolDefinitions } from "./token.js";
|
|
14
|
+
import { transactionToolDefinitions } from "./transaction.js";
|
|
15
|
+
import { uniswapToolDefinitions } from "./uniswap.js";
|
|
16
|
+
export const allDomainToolDefinitions = [
|
|
17
|
+
...blockchainToolDefinitions,
|
|
18
|
+
...tokenToolDefinitions,
|
|
19
|
+
...transactionToolDefinitions,
|
|
20
|
+
...mentoFxToolDefinitions,
|
|
21
|
+
...uniswapToolDefinitions,
|
|
22
|
+
...aaveToolDefinitions,
|
|
23
|
+
...ensToolDefinitions,
|
|
24
|
+
...gooddollarToolDefinitions,
|
|
25
|
+
...governanceToolDefinitions,
|
|
26
|
+
...stakingToolDefinitions,
|
|
27
|
+
...nftToolDefinitions,
|
|
28
|
+
...contractToolDefinitions,
|
|
29
|
+
...selfToolDefinitions,
|
|
30
|
+
...carbonToolDefinitions,
|
|
31
|
+
...celesteToolDefinitions,
|
|
32
|
+
];
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/domains/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,yBAAyB;IAC5B,GAAG,oBAAoB;IACvB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;IACzB,GAAG,mBAAmB;IACtB,GAAG,kBAAkB;IACrB,GAAG,yBAAyB;IAC5B,GAAG,yBAAyB;IAC5B,GAAG,sBAAsB;IACzB,GAAG,kBAAkB;IACrB,GAAG,uBAAuB;IAC1B,GAAG,mBAAmB;IACtB,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;CAC1B,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { mentoFxQuoteSchema, mentoFxWalletSchema, } from "../schemas/common.js";
|
|
2
|
+
import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
|
|
3
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
4
|
+
function mapMentoWalletOptions(input) {
|
|
5
|
+
return {
|
|
6
|
+
recipient: input.recipient,
|
|
7
|
+
slippageTolerance: input.slippage_tolerance,
|
|
8
|
+
deadlineMinutes: input.deadline_minutes,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export const mentoFxToolDefinitions = [
|
|
12
|
+
{
|
|
13
|
+
name: "get_mento_fx_quote",
|
|
14
|
+
description: "Mento FX oracle quote for a token pair on mainnet. Read-only.",
|
|
15
|
+
inputSchema: mentoFxQuoteSchema,
|
|
16
|
+
families: ["read"],
|
|
17
|
+
mcp: { title: "Get Mento FX 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.mentoFx.getFxQuote(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, from);
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "estimate_mento_fx",
|
|
27
|
+
description: "Estimate gas for a Mento FX conversion including approval if needed.",
|
|
28
|
+
inputSchema: mentoFxWalletSchema,
|
|
29
|
+
families: ["read"],
|
|
30
|
+
mcp: { title: "Estimate Mento FX", annotations: { readOnlyHint: true } },
|
|
31
|
+
handler: async (runtime, input) => {
|
|
32
|
+
const sender = resolveWalletFromRuntime(runtime, {
|
|
33
|
+
from: input.from,
|
|
34
|
+
});
|
|
35
|
+
if (runtime.executors?.mentoFx) {
|
|
36
|
+
return runtime.executors.mentoFx.estimate(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, { ...mapMentoWalletOptions(input), recipient: input.recipient ?? sender });
|
|
37
|
+
}
|
|
38
|
+
return runtime.celina.mentoFx.estimateFx(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapMentoWalletOptions(input));
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "execute_mento_fx",
|
|
43
|
+
description: "Execute a Mento FX conversion on mainnet. Requires CELO_PRIVATE_KEY.",
|
|
44
|
+
inputSchema: mentoFxWalletSchema,
|
|
45
|
+
families: ["execute"],
|
|
46
|
+
surfaces: ["mcp"],
|
|
47
|
+
mcp: {
|
|
48
|
+
title: "Execute Mento FX",
|
|
49
|
+
annotations: { destructiveHint: true, openWorldHint: true },
|
|
50
|
+
},
|
|
51
|
+
handler: async (runtime, input) => {
|
|
52
|
+
const fx = runtime.executors?.mentoFx;
|
|
53
|
+
if (!fx)
|
|
54
|
+
throw new Error("Mento FX executor not configured.");
|
|
55
|
+
return fx.execute(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapMentoWalletOptions(input));
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "prepare_mento_fx",
|
|
60
|
+
description: "Prepare Mento FX swap only. For general swaps after get_swap_quote, use prepare_swap.",
|
|
61
|
+
inputSchema: mentoFxWalletSchema,
|
|
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.mentoFx.prepareFx(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapMentoWalletOptions(input));
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=mento-fx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mento-fx.js","sourceRoot":"","sources":["../../../src/tools/domains/mento-fx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressSchema, optionalWalletAddressSchema, tokenIdSchema, } from "../schemas/common.js";
|
|
3
|
+
import { resolveWalletFromRuntime } from "../utils/wallet.js";
|
|
4
|
+
const readOnly = {
|
|
5
|
+
readOnlyHint: true,
|
|
6
|
+
idempotentHint: true,
|
|
7
|
+
};
|
|
8
|
+
export const nftToolDefinitions = [
|
|
9
|
+
{
|
|
10
|
+
name: "get_nft_info",
|
|
11
|
+
description: "NFT token information including metadata for ERC-721 or ERC-1155.",
|
|
12
|
+
inputSchema: z.object({
|
|
13
|
+
contract_address: addressSchema,
|
|
14
|
+
token_id: tokenIdSchema,
|
|
15
|
+
}),
|
|
16
|
+
families: ["read"],
|
|
17
|
+
mcp: { title: "Get NFT Info", annotations: readOnly },
|
|
18
|
+
handler: async (runtime, input) => runtime.celina.nft.getNftInfo(input.contract_address, input.token_id),
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "get_nft_balance",
|
|
22
|
+
description: "NFT balance for an address. Token ID required for ERC-1155.",
|
|
23
|
+
inputSchema: z.object({
|
|
24
|
+
contract_address: addressSchema,
|
|
25
|
+
address: optionalWalletAddressSchema,
|
|
26
|
+
token_id: tokenIdSchema.optional(),
|
|
27
|
+
}),
|
|
28
|
+
families: ["read"],
|
|
29
|
+
mcp: { title: "Get NFT Balance", annotations: readOnly },
|
|
30
|
+
handler: async (runtime, input) => {
|
|
31
|
+
const target = resolveWalletFromRuntime(runtime, {
|
|
32
|
+
address: input.address,
|
|
33
|
+
});
|
|
34
|
+
return runtime.celina.nft.getNftBalance(input.contract_address, target, input.token_id);
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=nft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/tools/domains/nft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,QAAQ,GAAG;IACf,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,mEAAmE;QACrE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,aAAa;YAC/B,QAAQ,EAAE,aAAa;SACxB,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE;QACrD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAC3B,KAAK,CAAC,gBAAiC,EACvC,KAAK,CAAC,QAAkB,CACzB;KACJ;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,6DAA6D;QAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,aAAa;YAC/B,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE;SACnC,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE;gBAC/C,OAAO,EAAE,KAAK,CAAC,OAA6B;aAC7C,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CACrC,KAAK,CAAC,gBAAiC,EACvC,MAAM,EACN,KAAK,CAAC,QAA8B,CACrC,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -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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"}
|