@agent-shield/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/README.md +124 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +244 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/activity.d.ts +3 -0
- package/dist/resources/activity.d.ts.map +1 -0
- package/dist/resources/activity.js +33 -0
- package/dist/resources/activity.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +10 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/policy.d.ts +3 -0
- package/dist/resources/policy.d.ts.map +1 -0
- package/dist/resources/policy.js +36 -0
- package/dist/resources/policy.js.map +1 -0
- package/dist/resources/spending.d.ts +3 -0
- package/dist/resources/spending.d.ts.map +1 -0
- package/dist/resources/spending.js +39 -0
- package/dist/resources/spending.js.map +1 -0
- package/dist/tools/check-spending.d.ts +24 -0
- package/dist/tools/check-spending.d.ts.map +1 -0
- package/dist/tools/check-spending.js +60 -0
- package/dist/tools/check-spending.js.map +1 -0
- package/dist/tools/check-vault.d.ts +36 -0
- package/dist/tools/check-vault.d.ts.map +1 -0
- package/dist/tools/check-vault.js +110 -0
- package/dist/tools/check-vault.js.map +1 -0
- package/dist/tools/close-position.d.ts +49 -0
- package/dist/tools/close-position.d.ts.map +1 -0
- package/dist/tools/close-position.js +65 -0
- package/dist/tools/close-position.js.map +1 -0
- package/dist/tools/create-vault.d.ts +72 -0
- package/dist/tools/create-vault.d.ts.map +1 -0
- package/dist/tools/create-vault.js +75 -0
- package/dist/tools/create-vault.js.map +1 -0
- package/dist/tools/deposit.d.ts +36 -0
- package/dist/tools/deposit.d.ts.map +1 -0
- package/dist/tools/deposit.js +35 -0
- package/dist/tools/deposit.js.map +1 -0
- package/dist/tools/execute-swap.d.ts +49 -0
- package/dist/tools/execute-swap.d.ts.map +1 -0
- package/dist/tools/execute-swap.js +58 -0
- package/dist/tools/execute-swap.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/open-position.d.ts +61 -0
- package/dist/tools/open-position.d.ts.map +1 -0
- package/dist/tools/open-position.js +70 -0
- package/dist/tools/open-position.js.map +1 -0
- package/dist/tools/reactivate-vault.d.ts +30 -0
- package/dist/tools/reactivate-vault.d.ts.map +1 -0
- package/dist/tools/reactivate-vault.js +41 -0
- package/dist/tools/reactivate-vault.js.map +1 -0
- package/dist/tools/register-agent.d.ts +30 -0
- package/dist/tools/register-agent.d.ts.map +1 -0
- package/dist/tools/register-agent.js +36 -0
- package/dist/tools/register-agent.js.map +1 -0
- package/dist/tools/revoke-agent.d.ts +24 -0
- package/dist/tools/revoke-agent.d.ts.map +1 -0
- package/dist/tools/revoke-agent.js +34 -0
- package/dist/tools/revoke-agent.js.map +1 -0
- package/dist/tools/update-policy.d.ts +72 -0
- package/dist/tools/update-policy.d.ts.map +1 -0
- package/dist/tools/update-policy.js +90 -0
- package/dist/tools/update-policy.js.map +1 -0
- package/dist/tools/withdraw.d.ts +36 -0
- package/dist/tools/withdraw.d.ts.map +1 -0
- package/dist/tools/withdraw.js +34 -0
- package/dist/tools/withdraw.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +69 -0
- package/dist/utils.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.checkVaultTool = exports.checkVaultSchema = void 0;
|
|
37
|
+
exports.checkVault = checkVault;
|
|
38
|
+
const zod_1 = require("zod");
|
|
39
|
+
const utils_1 = require("../utils");
|
|
40
|
+
const errors_1 = require("../errors");
|
|
41
|
+
exports.checkVaultSchema = zod_1.z.object({
|
|
42
|
+
vault: zod_1.z
|
|
43
|
+
.string()
|
|
44
|
+
.describe("Vault PDA address (base58). Provide this OR owner+vaultId."),
|
|
45
|
+
owner: zod_1.z
|
|
46
|
+
.string()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Owner public key (base58). Used with vaultId to derive the vault PDA."),
|
|
49
|
+
vaultId: zod_1.z
|
|
50
|
+
.string()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Vault ID number. Used with owner to derive the vault PDA."),
|
|
53
|
+
});
|
|
54
|
+
async function checkVault(client, input) {
|
|
55
|
+
try {
|
|
56
|
+
let vaultAddress;
|
|
57
|
+
if (input.vault) {
|
|
58
|
+
vaultAddress = (0, utils_1.toPublicKey)(input.vault);
|
|
59
|
+
}
|
|
60
|
+
else if (input.owner && input.vaultId) {
|
|
61
|
+
const { BN } = await Promise.resolve().then(() => __importStar(require("@coral-xyz/anchor")));
|
|
62
|
+
const [pda] = client.getVaultPDA((0, utils_1.toPublicKey)(input.owner), new BN(input.vaultId));
|
|
63
|
+
vaultAddress = pda;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return "Error: Provide either 'vault' (address) or both 'owner' and 'vaultId'.";
|
|
67
|
+
}
|
|
68
|
+
const vault = await client.fetchVaultByAddress(vaultAddress);
|
|
69
|
+
const policy = await client.fetchPolicy(vaultAddress);
|
|
70
|
+
const allowedTokens = policy.allowedTokens
|
|
71
|
+
.map((t) => t.toBase58())
|
|
72
|
+
.join(", ") || "Any";
|
|
73
|
+
const allowedProtocols = policy.allowedProtocols
|
|
74
|
+
.map((p) => p.toBase58())
|
|
75
|
+
.join(", ") || "Any";
|
|
76
|
+
return [
|
|
77
|
+
`## Vault: ${vaultAddress.toBase58()}`,
|
|
78
|
+
`- **Status:** ${(0, utils_1.formatVaultStatus)(vault.status)}`,
|
|
79
|
+
`- **Owner:** ${vault.owner.toBase58()}`,
|
|
80
|
+
`- **Agent:** ${vault.agent.toBase58()}`,
|
|
81
|
+
`- **Fee Destination:** ${vault.feeDestination.toBase58()}`,
|
|
82
|
+
`- **Created:** ${(0, utils_1.formatTimestamp)(vault.createdAt)}`,
|
|
83
|
+
`- **Total Transactions:** ${(0, utils_1.formatBN)(vault.totalTransactions)}`,
|
|
84
|
+
`- **Total Volume:** ${(0, utils_1.formatBN)(vault.totalVolume)}`,
|
|
85
|
+
`- **Open Positions:** ${vault.openPositions}`,
|
|
86
|
+
`- **Total Fees Collected:** ${(0, utils_1.formatBN)(vault.totalFeesCollected)}`,
|
|
87
|
+
"",
|
|
88
|
+
"### Policy",
|
|
89
|
+
`- **Daily Spending Cap:** ${(0, utils_1.formatBN)(policy.dailySpendingCap)}`,
|
|
90
|
+
`- **Max Transaction Size:** ${(0, utils_1.formatBN)(policy.maxTransactionSize)}`,
|
|
91
|
+
`- **Allowed Tokens:** ${allowedTokens}`,
|
|
92
|
+
`- **Allowed Protocols:** ${allowedProtocols}`,
|
|
93
|
+
`- **Max Leverage:** ${policy.maxLeverageBps} BPS`,
|
|
94
|
+
`- **Can Open Positions:** ${policy.canOpenPositions}`,
|
|
95
|
+
`- **Max Concurrent Positions:** ${policy.maxConcurrentPositions}`,
|
|
96
|
+
`- **Developer Fee Rate:** ${policy.developerFeeRate}`,
|
|
97
|
+
].join("\n");
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return (0, errors_1.formatError)(error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.checkVaultTool = {
|
|
104
|
+
name: "shield_check_vault",
|
|
105
|
+
description: "Check the status and policy configuration of an AgentShield vault. " +
|
|
106
|
+
"Provide either the vault address directly, or owner + vaultId to derive it.",
|
|
107
|
+
schema: exports.checkVaultSchema,
|
|
108
|
+
handler: checkVault,
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=check-vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-vault.js","sourceRoot":"","sources":["../../src/tools/check-vault.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentShieldClient } from "@agent-shield/sdk";
|
|
3
|
+
import { type McpConfig } from "../config";
|
|
4
|
+
export declare const closePositionSchema: z.ZodObject<{
|
|
5
|
+
vault: z.ZodString;
|
|
6
|
+
market: z.ZodString;
|
|
7
|
+
side: z.ZodEnum<["long", "short"]>;
|
|
8
|
+
priceWithSlippage: z.ZodString;
|
|
9
|
+
priceExponent: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
vault: string;
|
|
12
|
+
market: string;
|
|
13
|
+
side: "long" | "short";
|
|
14
|
+
priceWithSlippage: string;
|
|
15
|
+
priceExponent: number;
|
|
16
|
+
}, {
|
|
17
|
+
vault: string;
|
|
18
|
+
market: string;
|
|
19
|
+
side: "long" | "short";
|
|
20
|
+
priceWithSlippage: string;
|
|
21
|
+
priceExponent?: number | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type ClosePositionInput = z.infer<typeof closePositionSchema>;
|
|
24
|
+
export declare function closePosition(client: AgentShieldClient, config: McpConfig, input: ClosePositionInput): Promise<string>;
|
|
25
|
+
export declare const closePositionTool: {
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
schema: z.ZodObject<{
|
|
29
|
+
vault: z.ZodString;
|
|
30
|
+
market: z.ZodString;
|
|
31
|
+
side: z.ZodEnum<["long", "short"]>;
|
|
32
|
+
priceWithSlippage: z.ZodString;
|
|
33
|
+
priceExponent: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
vault: string;
|
|
36
|
+
market: string;
|
|
37
|
+
side: "long" | "short";
|
|
38
|
+
priceWithSlippage: string;
|
|
39
|
+
priceExponent: number;
|
|
40
|
+
}, {
|
|
41
|
+
vault: string;
|
|
42
|
+
market: string;
|
|
43
|
+
side: "long" | "short";
|
|
44
|
+
priceWithSlippage: string;
|
|
45
|
+
priceExponent?: number | undefined;
|
|
46
|
+
}>;
|
|
47
|
+
handler: typeof closePosition;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=close-position.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close-position.d.ts","sourceRoot":"","sources":["../../src/tools/close-position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAc9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAQrE,wBAAsB,aAAa,CACjC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;CAO7B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.closePositionTool = exports.closePositionSchema = void 0;
|
|
4
|
+
exports.closePosition = closePosition;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
exports.closePositionSchema = zod_1.z.object({
|
|
10
|
+
vault: zod_1.z.string().describe("Vault PDA address (base58)"),
|
|
11
|
+
market: zod_1.z.string().describe("Market/pool name (e.g. 'SOL', 'ETH')"),
|
|
12
|
+
side: zod_1.z
|
|
13
|
+
.enum(["long", "short"])
|
|
14
|
+
.describe("Position side: 'long' or 'short'"),
|
|
15
|
+
priceWithSlippage: zod_1.z
|
|
16
|
+
.string()
|
|
17
|
+
.describe("Exit price in base units (for slippage protection)"),
|
|
18
|
+
priceExponent: zod_1.z
|
|
19
|
+
.number()
|
|
20
|
+
.optional()
|
|
21
|
+
.default(0)
|
|
22
|
+
.describe("Price exponent (default: 0)"),
|
|
23
|
+
});
|
|
24
|
+
function parseSide(side) {
|
|
25
|
+
return side === "long" ? { long: {} } : { short: {} };
|
|
26
|
+
}
|
|
27
|
+
async function closePosition(client, config, input) {
|
|
28
|
+
try {
|
|
29
|
+
const agentKeypair = (0, config_1.loadAgentKeypair)(config);
|
|
30
|
+
const vaultAddress = (0, utils_1.toPublicKey)(input.vault);
|
|
31
|
+
const vault = await client.fetchVaultByAddress(vaultAddress);
|
|
32
|
+
const result = await client.flashTradeClose({
|
|
33
|
+
owner: vault.owner,
|
|
34
|
+
vaultId: vault.vaultId,
|
|
35
|
+
agent: agentKeypair.publicKey,
|
|
36
|
+
targetSymbol: input.market,
|
|
37
|
+
collateralSymbol: input.market,
|
|
38
|
+
collateralAmount: (0, utils_1.toBN)("0"),
|
|
39
|
+
side: parseSide(input.side),
|
|
40
|
+
priceWithSlippage: {
|
|
41
|
+
price: (0, utils_1.toBN)(input.priceWithSlippage),
|
|
42
|
+
exponent: input.priceExponent ?? 0,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const sig = await client.executeFlashTrade(result, agentKeypair.publicKey, [agentKeypair]);
|
|
46
|
+
return [
|
|
47
|
+
"## Position Closed",
|
|
48
|
+
`- **Vault:** ${input.vault}`,
|
|
49
|
+
`- **Market:** ${input.market}`,
|
|
50
|
+
`- **Side:** ${input.side.toUpperCase()}`,
|
|
51
|
+
`- **Transaction:** ${sig}`,
|
|
52
|
+
].join("\n");
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return (0, errors_1.formatError)(error);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.closePositionTool = {
|
|
59
|
+
name: "shield_close_position",
|
|
60
|
+
description: "Close a leveraged perpetual position via Flash Trade through an AgentShield vault. " +
|
|
61
|
+
"Requires AGENTSHIELD_AGENT_KEYPAIR_PATH.",
|
|
62
|
+
schema: exports.closePositionSchema,
|
|
63
|
+
handler: closePosition,
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=close-position.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close-position.js","sourceRoot":"","sources":["../../src/tools/close-position.ts"],"names":[],"mappings":";;;AA8BA,sCAwCC;AAtED,6BAAwB;AAExB,oCAA6C;AAC7C,sCAAwC;AACxC,sCAA6D;AAEhD,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACnE,IAAI,EAAE,OAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACvB,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,QAAQ,CAAC,oDAAoD,CAAC;IACjE,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,6BAA6B,CAAC;CAC3C,CAAC,CAAC;AAIH,SAAS,SAAS,CAChB,IAAsB;IAEtB,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,MAAyB,EACzB,MAAiB,EACjB,KAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YAC1C,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,YAAY,CAAC,SAAS;YAC7B,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,gBAAgB,EAAE,KAAK,CAAC,MAAM;YAC9B,gBAAgB,EAAE,IAAA,YAAI,EAAC,GAAG,CAAC;YAC3B,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,iBAAiB,EAAE;gBACjB,KAAK,EAAE,IAAA,YAAI,EAAC,KAAK,CAAC,iBAAiB,CAAC;gBACpC,QAAQ,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;aACnC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,iBAAiB,CACxC,MAAM,EACN,YAAY,CAAC,SAAS,EACtB,CAAC,YAAY,CAAC,CACf,CAAC;QAEF,OAAO;YACL,oBAAoB;YACpB,gBAAgB,KAAK,CAAC,KAAK,EAAE;YAC7B,iBAAiB,KAAK,CAAC,MAAM,EAAE;YAC/B,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACzC,sBAAsB,GAAG,EAAE;SAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAEY,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,qFAAqF;QACrF,0CAA0C;IAC5C,MAAM,EAAE,2BAAmB;IAC3B,OAAO,EAAE,aAAa;CACvB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentShieldClient } from "@agent-shield/sdk";
|
|
3
|
+
export declare const createVaultSchema: z.ZodObject<{
|
|
4
|
+
vaultId: z.ZodString;
|
|
5
|
+
dailySpendingCap: z.ZodString;
|
|
6
|
+
maxTransactionSize: z.ZodString;
|
|
7
|
+
allowedTokens: z.ZodArray<z.ZodString, "many">;
|
|
8
|
+
allowedProtocols: z.ZodArray<z.ZodString, "many">;
|
|
9
|
+
maxLeverageBps: z.ZodNumber;
|
|
10
|
+
maxConcurrentPositions: z.ZodNumber;
|
|
11
|
+
feeDestination: z.ZodString;
|
|
12
|
+
developerFeeRate: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
vaultId: string;
|
|
15
|
+
dailySpendingCap: string;
|
|
16
|
+
maxTransactionSize: string;
|
|
17
|
+
allowedTokens: string[];
|
|
18
|
+
allowedProtocols: string[];
|
|
19
|
+
maxLeverageBps: number;
|
|
20
|
+
maxConcurrentPositions: number;
|
|
21
|
+
feeDestination: string;
|
|
22
|
+
developerFeeRate: number;
|
|
23
|
+
}, {
|
|
24
|
+
vaultId: string;
|
|
25
|
+
dailySpendingCap: string;
|
|
26
|
+
maxTransactionSize: string;
|
|
27
|
+
allowedTokens: string[];
|
|
28
|
+
allowedProtocols: string[];
|
|
29
|
+
maxLeverageBps: number;
|
|
30
|
+
maxConcurrentPositions: number;
|
|
31
|
+
feeDestination: string;
|
|
32
|
+
developerFeeRate?: number | undefined;
|
|
33
|
+
}>;
|
|
34
|
+
export type CreateVaultInput = z.infer<typeof createVaultSchema>;
|
|
35
|
+
export declare function createVault(client: AgentShieldClient, input: CreateVaultInput): Promise<string>;
|
|
36
|
+
export declare const createVaultTool: {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
schema: z.ZodObject<{
|
|
40
|
+
vaultId: z.ZodString;
|
|
41
|
+
dailySpendingCap: z.ZodString;
|
|
42
|
+
maxTransactionSize: z.ZodString;
|
|
43
|
+
allowedTokens: z.ZodArray<z.ZodString, "many">;
|
|
44
|
+
allowedProtocols: z.ZodArray<z.ZodString, "many">;
|
|
45
|
+
maxLeverageBps: z.ZodNumber;
|
|
46
|
+
maxConcurrentPositions: z.ZodNumber;
|
|
47
|
+
feeDestination: z.ZodString;
|
|
48
|
+
developerFeeRate: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
vaultId: string;
|
|
51
|
+
dailySpendingCap: string;
|
|
52
|
+
maxTransactionSize: string;
|
|
53
|
+
allowedTokens: string[];
|
|
54
|
+
allowedProtocols: string[];
|
|
55
|
+
maxLeverageBps: number;
|
|
56
|
+
maxConcurrentPositions: number;
|
|
57
|
+
feeDestination: string;
|
|
58
|
+
developerFeeRate: number;
|
|
59
|
+
}, {
|
|
60
|
+
vaultId: string;
|
|
61
|
+
dailySpendingCap: string;
|
|
62
|
+
maxTransactionSize: string;
|
|
63
|
+
allowedTokens: string[];
|
|
64
|
+
allowedProtocols: string[];
|
|
65
|
+
maxLeverageBps: number;
|
|
66
|
+
maxConcurrentPositions: number;
|
|
67
|
+
feeDestination: string;
|
|
68
|
+
developerFeeRate?: number | undefined;
|
|
69
|
+
}>;
|
|
70
|
+
handler: typeof createVault;
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=create-vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-vault.d.ts","sourceRoot":"","sources":["../../src/tools/create-vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI3D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO3B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createVaultTool = exports.createVaultSchema = void 0;
|
|
4
|
+
exports.createVault = createVault;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
exports.createVaultSchema = zod_1.z.object({
|
|
9
|
+
vaultId: zod_1.z.string().describe("Unique vault ID number"),
|
|
10
|
+
dailySpendingCap: zod_1.z
|
|
11
|
+
.string()
|
|
12
|
+
.describe("Maximum daily spending in token base units (e.g. lamports)"),
|
|
13
|
+
maxTransactionSize: zod_1.z
|
|
14
|
+
.string()
|
|
15
|
+
.describe("Maximum single transaction size in token base units"),
|
|
16
|
+
allowedTokens: zod_1.z
|
|
17
|
+
.array(zod_1.z.string())
|
|
18
|
+
.describe("Array of allowed token mint addresses (base58). Max 10."),
|
|
19
|
+
allowedProtocols: zod_1.z
|
|
20
|
+
.array(zod_1.z.string())
|
|
21
|
+
.describe("Array of allowed protocol program IDs (base58). Max 10."),
|
|
22
|
+
maxLeverageBps: zod_1.z
|
|
23
|
+
.number()
|
|
24
|
+
.describe("Maximum leverage in basis points (e.g. 30000 = 3x)"),
|
|
25
|
+
maxConcurrentPositions: zod_1.z
|
|
26
|
+
.number()
|
|
27
|
+
.describe("Maximum number of concurrent open positions"),
|
|
28
|
+
feeDestination: zod_1.z
|
|
29
|
+
.string()
|
|
30
|
+
.describe("Fee destination wallet address (base58). Immutable after creation."),
|
|
31
|
+
developerFeeRate: zod_1.z
|
|
32
|
+
.number()
|
|
33
|
+
.optional()
|
|
34
|
+
.default(0)
|
|
35
|
+
.describe("Developer fee rate (max 50 = 0.5 BPS)"),
|
|
36
|
+
});
|
|
37
|
+
async function createVault(client, input) {
|
|
38
|
+
try {
|
|
39
|
+
const params = {
|
|
40
|
+
vaultId: (0, utils_1.toBN)(input.vaultId),
|
|
41
|
+
dailySpendingCap: (0, utils_1.toBN)(input.dailySpendingCap),
|
|
42
|
+
maxTransactionSize: (0, utils_1.toBN)(input.maxTransactionSize),
|
|
43
|
+
allowedTokens: input.allowedTokens.map(utils_1.toPublicKey),
|
|
44
|
+
allowedProtocols: input.allowedProtocols.map(utils_1.toPublicKey),
|
|
45
|
+
maxLeverageBps: input.maxLeverageBps,
|
|
46
|
+
maxConcurrentPositions: input.maxConcurrentPositions,
|
|
47
|
+
feeDestination: (0, utils_1.toPublicKey)(input.feeDestination),
|
|
48
|
+
developerFeeRate: input.developerFeeRate,
|
|
49
|
+
};
|
|
50
|
+
const sig = await client.createVault(params);
|
|
51
|
+
const owner = client.provider.wallet.publicKey;
|
|
52
|
+
const [vaultPDA] = client.getVaultPDA(owner, params.vaultId);
|
|
53
|
+
return [
|
|
54
|
+
"## Vault Created Successfully",
|
|
55
|
+
`- **Vault Address:** ${vaultPDA.toBase58()}`,
|
|
56
|
+
`- **Owner:** ${owner.toBase58()}`,
|
|
57
|
+
`- **Vault ID:** ${input.vaultId}`,
|
|
58
|
+
`- **Transaction:** ${sig}`,
|
|
59
|
+
"",
|
|
60
|
+
"Next steps: Use shield_register_agent to register an agent key, " +
|
|
61
|
+
"then shield_deposit to fund the vault.",
|
|
62
|
+
].join("\n");
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return (0, errors_1.formatError)(error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.createVaultTool = {
|
|
69
|
+
name: "shield_create_vault",
|
|
70
|
+
description: "Create a new AgentShield vault with policy configuration. " +
|
|
71
|
+
"Sets spending caps, allowed tokens/protocols, leverage limits, and fee settings.",
|
|
72
|
+
schema: exports.createVaultSchema,
|
|
73
|
+
handler: createVault,
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=create-vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-vault.js","sourceRoot":"","sources":["../../src/tools/create-vault.ts"],"names":[],"mappings":";;;AAsCA,kCAkCC;AAxED,6BAAwB;AAGxB,oCAA6C;AAC7C,sCAAwC;AAE3B,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACtD,gBAAgB,EAAE,OAAC;SAChB,MAAM,EAAE;SACR,QAAQ,CAAC,4DAA4D,CAAC;IACzE,kBAAkB,EAAE,OAAC;SAClB,MAAM,EAAE;SACR,QAAQ,CAAC,qDAAqD,CAAC;IAClE,aAAa,EAAE,OAAC;SACb,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,yDAAyD,CAAC;IACtE,gBAAgB,EAAE,OAAC;SAChB,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,yDAAyD,CAAC;IACtE,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,oDAAoD,CAAC;IACjE,sBAAsB,EAAE,OAAC;SACtB,MAAM,EAAE;SACR,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,oEAAoE,CAAC;IACjF,gBAAgB,EAAE,OAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,uCAAuC,CAAC;CACrD,CAAC,CAAC;AAII,KAAK,UAAU,WAAW,CAC/B,MAAyB,EACzB,KAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,IAAA,YAAI,EAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,gBAAgB,EAAE,IAAA,YAAI,EAAC,KAAK,CAAC,gBAAgB,CAAC;YAC9C,kBAAkB,EAAE,IAAA,YAAI,EAAC,KAAK,CAAC,kBAAkB,CAAC;YAClD,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAW,CAAC;YACnD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAW,CAAC;YACzD,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;YACpD,cAAc,EAAE,IAAA,mBAAW,EAAC,KAAK,CAAC,cAAc,CAAC;YACjD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7D,OAAO;YACL,+BAA+B;YAC/B,wBAAwB,QAAQ,CAAC,QAAQ,EAAE,EAAE;YAC7C,gBAAgB,KAAK,CAAC,QAAQ,EAAE,EAAE;YAClC,mBAAmB,KAAK,CAAC,OAAO,EAAE;YAClC,sBAAsB,GAAG,EAAE;YAC3B,EAAE;YACF,kEAAkE;gBAChE,wCAAwC;SAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAEY,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,4DAA4D;QAC5D,kFAAkF;IACpF,MAAM,EAAE,yBAAiB;IACzB,OAAO,EAAE,WAAW;CACrB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentShieldClient } from "@agent-shield/sdk";
|
|
3
|
+
export declare const depositSchema: z.ZodObject<{
|
|
4
|
+
vault: z.ZodString;
|
|
5
|
+
mint: z.ZodString;
|
|
6
|
+
amount: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
vault: string;
|
|
9
|
+
mint: string;
|
|
10
|
+
amount: string;
|
|
11
|
+
}, {
|
|
12
|
+
vault: string;
|
|
13
|
+
mint: string;
|
|
14
|
+
amount: string;
|
|
15
|
+
}>;
|
|
16
|
+
export type DepositInput = z.infer<typeof depositSchema>;
|
|
17
|
+
export declare function deposit(client: AgentShieldClient, input: DepositInput): Promise<string>;
|
|
18
|
+
export declare const depositTool: {
|
|
19
|
+
name: string;
|
|
20
|
+
description: string;
|
|
21
|
+
schema: z.ZodObject<{
|
|
22
|
+
vault: z.ZodString;
|
|
23
|
+
mint: z.ZodString;
|
|
24
|
+
amount: z.ZodString;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
vault: string;
|
|
27
|
+
mint: string;
|
|
28
|
+
amount: string;
|
|
29
|
+
}, {
|
|
30
|
+
vault: string;
|
|
31
|
+
mint: string;
|
|
32
|
+
amount: string;
|
|
33
|
+
}>;
|
|
34
|
+
handler: typeof deposit;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=deposit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../src/tools/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI3D,eAAO,MAAM,aAAa;;;;;;;;;;;;EAIxB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAOvB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.depositTool = exports.depositSchema = void 0;
|
|
4
|
+
exports.deposit = deposit;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
exports.depositSchema = zod_1.z.object({
|
|
9
|
+
vault: zod_1.z.string().describe("Vault PDA address (base58)"),
|
|
10
|
+
mint: zod_1.z.string().describe("Token mint address (base58)"),
|
|
11
|
+
amount: zod_1.z.string().describe("Amount in token base units (e.g. lamports)"),
|
|
12
|
+
});
|
|
13
|
+
async function deposit(client, input) {
|
|
14
|
+
try {
|
|
15
|
+
const sig = await client.deposit((0, utils_1.toPublicKey)(input.vault), (0, utils_1.toPublicKey)(input.mint), (0, utils_1.toBN)(input.amount));
|
|
16
|
+
return [
|
|
17
|
+
"## Deposit Successful",
|
|
18
|
+
`- **Vault:** ${input.vault}`,
|
|
19
|
+
`- **Token:** ${input.mint}`,
|
|
20
|
+
`- **Amount:** ${input.amount}`,
|
|
21
|
+
`- **Transaction:** ${sig}`,
|
|
22
|
+
].join("\n");
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return (0, errors_1.formatError)(error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.depositTool = {
|
|
29
|
+
name: "shield_deposit",
|
|
30
|
+
description: "Deposit tokens into an AgentShield vault. " +
|
|
31
|
+
"The owner must have sufficient token balance.",
|
|
32
|
+
schema: exports.depositSchema,
|
|
33
|
+
handler: deposit,
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=deposit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/tools/deposit.ts"],"names":[],"mappings":";;;AAaA,0BAqBC;AAlCD,6BAAwB;AAExB,oCAA6C;AAC7C,sCAAwC;AAE3B,QAAA,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACxD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CAC1E,CAAC,CAAC;AAII,KAAK,UAAU,OAAO,CAC3B,MAAyB,EACzB,KAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAC9B,IAAA,mBAAW,EAAC,KAAK,CAAC,KAAK,CAAC,EACxB,IAAA,mBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,EACvB,IAAA,YAAI,EAAC,KAAK,CAAC,MAAM,CAAC,CACnB,CAAC;QAEF,OAAO;YACL,uBAAuB;YACvB,gBAAgB,KAAK,CAAC,KAAK,EAAE;YAC7B,gBAAgB,KAAK,CAAC,IAAI,EAAE;YAC5B,iBAAiB,KAAK,CAAC,MAAM,EAAE;YAC/B,sBAAsB,GAAG,EAAE;SAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,4CAA4C;QAC5C,+CAA+C;IACjD,MAAM,EAAE,qBAAa;IACrB,OAAO,EAAE,OAAO;CACjB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentShieldClient } from "@agent-shield/sdk";
|
|
3
|
+
import { type McpConfig } from "../config";
|
|
4
|
+
export declare const executeSwapSchema: z.ZodObject<{
|
|
5
|
+
vault: z.ZodString;
|
|
6
|
+
inputMint: z.ZodString;
|
|
7
|
+
outputMint: z.ZodString;
|
|
8
|
+
amount: z.ZodString;
|
|
9
|
+
slippageBps: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
vault: string;
|
|
12
|
+
amount: string;
|
|
13
|
+
inputMint: string;
|
|
14
|
+
outputMint: string;
|
|
15
|
+
slippageBps: number;
|
|
16
|
+
}, {
|
|
17
|
+
vault: string;
|
|
18
|
+
amount: string;
|
|
19
|
+
inputMint: string;
|
|
20
|
+
outputMint: string;
|
|
21
|
+
slippageBps?: number | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type ExecuteSwapInput = z.infer<typeof executeSwapSchema>;
|
|
24
|
+
export declare function executeSwap(client: AgentShieldClient, config: McpConfig, input: ExecuteSwapInput): Promise<string>;
|
|
25
|
+
export declare const executeSwapTool: {
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
schema: z.ZodObject<{
|
|
29
|
+
vault: z.ZodString;
|
|
30
|
+
inputMint: z.ZodString;
|
|
31
|
+
outputMint: z.ZodString;
|
|
32
|
+
amount: z.ZodString;
|
|
33
|
+
slippageBps: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
vault: string;
|
|
36
|
+
amount: string;
|
|
37
|
+
inputMint: string;
|
|
38
|
+
outputMint: string;
|
|
39
|
+
slippageBps: number;
|
|
40
|
+
}, {
|
|
41
|
+
vault: string;
|
|
42
|
+
amount: string;
|
|
43
|
+
inputMint: string;
|
|
44
|
+
outputMint: string;
|
|
45
|
+
slippageBps?: number | undefined;
|
|
46
|
+
}>;
|
|
47
|
+
handler: typeof executeSwap;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=execute-swap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-swap.d.ts","sourceRoot":"","sources":["../../src/tools/execute-swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAU5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;CAQ3B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeSwapTool = exports.executeSwapSchema = void 0;
|
|
4
|
+
exports.executeSwap = executeSwap;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const errors_1 = require("../errors");
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
exports.executeSwapSchema = zod_1.z.object({
|
|
10
|
+
vault: zod_1.z.string().describe("Vault PDA address (base58)"),
|
|
11
|
+
inputMint: zod_1.z.string().describe("Input token mint address (base58)"),
|
|
12
|
+
outputMint: zod_1.z.string().describe("Output token mint address (base58)"),
|
|
13
|
+
amount: zod_1.z.string().describe("Input amount in token base units"),
|
|
14
|
+
slippageBps: zod_1.z
|
|
15
|
+
.number()
|
|
16
|
+
.optional()
|
|
17
|
+
.default(50)
|
|
18
|
+
.describe("Slippage tolerance in basis points (default: 50 = 0.5%)"),
|
|
19
|
+
});
|
|
20
|
+
async function executeSwap(client, config, input) {
|
|
21
|
+
try {
|
|
22
|
+
const agentKeypair = (0, config_1.loadAgentKeypair)(config);
|
|
23
|
+
const vaultAddress = (0, utils_1.toPublicKey)(input.vault);
|
|
24
|
+
// Fetch vault to get owner and vaultId for the swap params
|
|
25
|
+
const vault = await client.fetchVaultByAddress(vaultAddress);
|
|
26
|
+
// Execute swap through AgentShield
|
|
27
|
+
// executeJupiterSwap fetches the quote internally if not provided
|
|
28
|
+
const sig = await client.executeJupiterSwap({
|
|
29
|
+
owner: vault.owner,
|
|
30
|
+
vaultId: vault.vaultId,
|
|
31
|
+
agent: agentKeypair.publicKey,
|
|
32
|
+
inputMint: (0, utils_1.toPublicKey)(input.inputMint),
|
|
33
|
+
outputMint: (0, utils_1.toPublicKey)(input.outputMint),
|
|
34
|
+
amount: (0, utils_1.toBN)(input.amount),
|
|
35
|
+
slippageBps: input.slippageBps,
|
|
36
|
+
}, [agentKeypair]);
|
|
37
|
+
return [
|
|
38
|
+
"## Swap Executed",
|
|
39
|
+
`- **Vault:** ${input.vault}`,
|
|
40
|
+
`- **Input:** ${input.amount} of ${input.inputMint}`,
|
|
41
|
+
`- **Output Token:** ${input.outputMint}`,
|
|
42
|
+
`- **Slippage:** ${input.slippageBps} BPS`,
|
|
43
|
+
`- **Transaction:** ${sig}`,
|
|
44
|
+
].join("\n");
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
return (0, errors_1.formatError)(error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.executeSwapTool = {
|
|
51
|
+
name: "shield_execute_swap",
|
|
52
|
+
description: "Execute a Jupiter token swap through an AgentShield vault. " +
|
|
53
|
+
"Requires AGENTSHIELD_AGENT_KEYPAIR_PATH to be set. " +
|
|
54
|
+
"The swap is policy-checked: spending caps, token allowlist, and transaction size limits apply.",
|
|
55
|
+
schema: exports.executeSwapSchema,
|
|
56
|
+
handler: executeSwap,
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=execute-swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-swap.js","sourceRoot":"","sources":["../../src/tools/execute-swap.ts"],"names":[],"mappings":";;;AAoBA,kCAsCC;AA1DD,6BAAwB;AAExB,oCAA6C;AAC7C,sCAAwC;AACxC,sCAA6D;AAEhD,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACnE,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACrE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC/D,WAAW,EAAE,OAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC,CAAC;AAII,KAAK,UAAU,WAAW,CAC/B,MAAyB,EACzB,MAAiB,EACjB,KAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9C,2DAA2D;QAC3D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAE7D,mCAAmC;QACnC,kEAAkE;QAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CACzC;YACE,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,YAAY,CAAC,SAAS;YAC7B,SAAS,EAAE,IAAA,mBAAW,EAAC,KAAK,CAAC,SAAS,CAAC;YACvC,UAAU,EAAE,IAAA,mBAAW,EAAC,KAAK,CAAC,UAAU,CAAC;YACzC,MAAM,EAAE,IAAA,YAAI,EAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,EACD,CAAC,YAAY,CAAC,CACf,CAAC;QAEF,OAAO;YACL,kBAAkB;YAClB,gBAAgB,KAAK,CAAC,KAAK,EAAE;YAC7B,gBAAgB,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,SAAS,EAAE;YACpD,uBAAuB,KAAK,CAAC,UAAU,EAAE;YACzC,mBAAmB,KAAK,CAAC,WAAW,MAAM;YAC1C,sBAAsB,GAAG,EAAE;SAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAA,oBAAW,EAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAEY,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,6DAA6D;QAC7D,qDAAqD;QACrD,gGAAgG;IAClG,MAAM,EAAE,yBAAiB;IACzB,OAAO,EAAE,WAAW;CACrB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { checkVaultTool, checkVault, checkVaultSchema } from "./check-vault";
|
|
2
|
+
export { checkSpendingTool, checkSpending, checkSpendingSchema, } from "./check-spending";
|
|
3
|
+
export { createVaultTool, createVault, createVaultSchema, } from "./create-vault";
|
|
4
|
+
export { depositTool, deposit, depositSchema } from "./deposit";
|
|
5
|
+
export { withdrawTool, withdraw, withdrawSchema } from "./withdraw";
|
|
6
|
+
export { registerAgentTool, registerAgent, registerAgentSchema, } from "./register-agent";
|
|
7
|
+
export { updatePolicyTool, updatePolicy, updatePolicySchema, } from "./update-policy";
|
|
8
|
+
export { revokeAgentTool, revokeAgent, revokeAgentSchema, } from "./revoke-agent";
|
|
9
|
+
export { reactivateVaultTool, reactivateVault, reactivateVaultSchema, } from "./reactivate-vault";
|
|
10
|
+
export { executeSwapTool, executeSwap, executeSwapSchema, } from "./execute-swap";
|
|
11
|
+
export { openPositionTool, openPosition, openPositionSchema, } from "./open-position";
|
|
12
|
+
export { closePositionTool, closePosition, closePositionSchema, } from "./close-position";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,WAAW,EACX,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|