@agent-shield/mcp 0.4.4 → 0.4.8
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/dist/config.d.ts +38 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +95 -7
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +108 -72
- package/dist/errors.js.map +1 -1
- package/dist/index.js +71 -36
- package/dist/index.js.map +1 -1
- package/dist/resources/activity.d.ts.map +1 -1
- package/dist/resources/activity.js +10 -14
- package/dist/resources/activity.js.map +1 -1
- package/dist/resources/policy.d.ts.map +1 -1
- package/dist/resources/policy.js +6 -4
- package/dist/resources/policy.js.map +1 -1
- package/dist/resources/spending.d.ts.map +1 -1
- package/dist/resources/spending.js +17 -12
- package/dist/resources/spending.js.map +1 -1
- package/dist/tools/agent-transfer.d.ts.map +1 -1
- package/dist/tools/agent-transfer.js +1 -0
- package/dist/tools/agent-transfer.js.map +1 -1
- package/dist/tools/check-pending-policy.d.ts.map +1 -1
- package/dist/tools/check-pending-policy.js +6 -10
- package/dist/tools/check-pending-policy.js.map +1 -1
- package/dist/tools/check-spending.d.ts.map +1 -1
- package/dist/tools/check-spending.js +15 -21
- package/dist/tools/check-spending.js.map +1 -1
- package/dist/tools/check-vault.d.ts.map +1 -1
- package/dist/tools/check-vault.js +6 -4
- package/dist/tools/check-vault.js.map +1 -1
- package/dist/tools/close-position.d.ts +2 -2
- package/dist/tools/close-position.d.ts.map +1 -1
- package/dist/tools/close-position.js +14 -6
- package/dist/tools/close-position.js.map +1 -1
- package/dist/tools/configure-from-file.d.ts +1 -1
- package/dist/tools/configure-from-file.d.ts.map +1 -1
- package/dist/tools/configure-from-file.js +10 -6
- package/dist/tools/configure-from-file.js.map +1 -1
- package/dist/tools/configure.d.ts +6 -4
- package/dist/tools/configure.d.ts.map +1 -1
- package/dist/tools/configure.js +104 -42
- package/dist/tools/configure.js.map +1 -1
- package/dist/tools/create-vault.d.ts +4 -4
- package/dist/tools/create-vault.d.ts.map +1 -1
- package/dist/tools/create-vault.js +13 -15
- package/dist/tools/create-vault.js.map +1 -1
- package/dist/tools/execute-swap.d.ts +2 -2
- package/dist/tools/execute-swap.d.ts.map +1 -1
- package/dist/tools/execute-swap.js +16 -4
- package/dist/tools/execute-swap.js.map +1 -1
- package/dist/tools/open-position.d.ts +2 -2
- package/dist/tools/open-position.d.ts.map +1 -1
- package/dist/tools/open-position.js +14 -6
- package/dist/tools/open-position.js.map +1 -1
- package/dist/tools/provision.d.ts +4 -2
- package/dist/tools/provision.d.ts.map +1 -1
- package/dist/tools/provision.js +6 -2
- package/dist/tools/provision.js.map +1 -1
- package/dist/tools/queue-policy-update.d.ts +4 -4
- package/dist/tools/queue-policy-update.d.ts.map +1 -1
- package/dist/tools/queue-policy-update.js +9 -16
- package/dist/tools/queue-policy-update.js.map +1 -1
- package/dist/tools/setup-status.d.ts.map +1 -1
- package/dist/tools/setup-status.js +4 -2
- package/dist/tools/setup-status.js.map +1 -1
- package/dist/tools/update-policy.d.ts +4 -4
- package/dist/tools/update-policy.d.ts.map +1 -1
- package/dist/tools/update-policy.js +9 -16
- package/dist/tools/update-policy.js.map +1 -1
- package/dist/tools/x402-fetch.d.ts +2 -2
- package/dist/tools/x402-fetch.d.ts.map +1 -1
- package/dist/tools/x402-fetch.js +41 -27
- package/dist/tools/x402-fetch.js.map +1 -1
- package/package.json +10 -10
package/dist/config.d.ts
CHANGED
|
@@ -5,8 +5,10 @@ export type McpCustodyProvider = "crossmint" | "turnkey" | "privy";
|
|
|
5
5
|
export interface ShieldLayerConfig {
|
|
6
6
|
shield: {
|
|
7
7
|
enabled: boolean;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
dailySpendingCapUsd: number;
|
|
9
|
+
/** Protocol mode: 0=all allowed, 1=allowlist, 2=denylist */
|
|
10
|
+
protocolMode: number;
|
|
11
|
+
protocols: string[];
|
|
10
12
|
maxLeverageBps: number;
|
|
11
13
|
rateLimit: number;
|
|
12
14
|
};
|
|
@@ -70,7 +72,7 @@ export interface McpConfig {
|
|
|
70
72
|
crossmintLocator?: string;
|
|
71
73
|
}
|
|
72
74
|
export declare function loadConfig(): McpConfig;
|
|
73
|
-
export declare function loadKeypair(
|
|
75
|
+
export declare function loadKeypair(filePath: string): Keypair;
|
|
74
76
|
export declare function createClient(config: McpConfig): AgentShieldClient;
|
|
75
77
|
/**
|
|
76
78
|
* Create a WalletLike from a TEE custody provider.
|
|
@@ -80,5 +82,38 @@ export declare function createCustodyWallet(config: McpConfig): Promise<{
|
|
|
80
82
|
publicKey: import("@solana/web3.js").PublicKey;
|
|
81
83
|
signTransaction: Function;
|
|
82
84
|
}>;
|
|
85
|
+
/** Minimal interface for custody wallets (avoids hard dep on adapter types). */
|
|
86
|
+
export interface CustodyWalletLike {
|
|
87
|
+
publicKey: import("@solana/web3.js").PublicKey;
|
|
88
|
+
signTransaction: <T>(tx: T) => Promise<T>;
|
|
89
|
+
signAllTransactions?: <T>(txs: T[]) => Promise<T[]>;
|
|
90
|
+
}
|
|
91
|
+
/** RPC URL helper: env override or clusterApiUrl fallback. */
|
|
92
|
+
export declare function rpcUrlForNetwork(network: "devnet" | "mainnet-beta"): string;
|
|
93
|
+
/**
|
|
94
|
+
* Create an AgentShieldClient backed by a custody wallet.
|
|
95
|
+
* Duck-typed: CrossmintWallet has publicKey, signTransaction, signAllTransactions.
|
|
96
|
+
*/
|
|
97
|
+
export declare function createCustodyClient(config: McpConfig): Promise<{
|
|
98
|
+
client: AgentShieldClient;
|
|
99
|
+
custodyWallet: CustodyWalletLike;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Resolve an AgentShieldClient from the best available config source.
|
|
103
|
+
*
|
|
104
|
+
* Priority:
|
|
105
|
+
* 1. File-based config (from shield_configure)
|
|
106
|
+
* - crossmint type → needs CROSSMINT_API_KEY + locator → createCustodyClient
|
|
107
|
+
* - keypair type → createClient
|
|
108
|
+
* 2. Env-var config (backwards compatible)
|
|
109
|
+
* - custodyProvider set → createCustodyClient
|
|
110
|
+
* - else → createClient (keypair)
|
|
111
|
+
* 3. null if nothing works
|
|
112
|
+
*/
|
|
113
|
+
export declare function resolveClient(): Promise<{
|
|
114
|
+
client: AgentShieldClient;
|
|
115
|
+
config: McpConfig;
|
|
116
|
+
custodyWallet: CustodyWalletLike | null;
|
|
117
|
+
} | null>;
|
|
83
118
|
export declare function loadAgentKeypair(config: McpConfig): Keypair;
|
|
84
119
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKtD,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAInE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -43,6 +43,9 @@ exports.loadConfig = loadConfig;
|
|
|
43
43
|
exports.loadKeypair = loadKeypair;
|
|
44
44
|
exports.createClient = createClient;
|
|
45
45
|
exports.createCustodyWallet = createCustodyWallet;
|
|
46
|
+
exports.rpcUrlForNetwork = rpcUrlForNetwork;
|
|
47
|
+
exports.createCustodyClient = createCustodyClient;
|
|
48
|
+
exports.resolveClient = resolveClient;
|
|
46
49
|
exports.loadAgentKeypair = loadAgentKeypair;
|
|
47
50
|
const web3_js_1 = require("@solana/web3.js");
|
|
48
51
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
@@ -58,6 +61,18 @@ function getConfigDir() {
|
|
|
58
61
|
function getConfigPath() {
|
|
59
62
|
return path.join(getConfigDir(), "config.json");
|
|
60
63
|
}
|
|
64
|
+
/** Runtime guard — rejects corrupted or incompatible config files. */
|
|
65
|
+
function isValidConfig(obj) {
|
|
66
|
+
return (typeof obj === "object" &&
|
|
67
|
+
obj !== null &&
|
|
68
|
+
obj.version === 1 &&
|
|
69
|
+
typeof obj.layers?.shield?.enabled === "boolean" &&
|
|
70
|
+
typeof obj.layers?.shield?.dailySpendingCapUsd === "number" &&
|
|
71
|
+
typeof obj.layers?.tee === "object" &&
|
|
72
|
+
typeof obj.layers?.vault === "object" &&
|
|
73
|
+
typeof obj.wallet?.publicKey === "string" &&
|
|
74
|
+
(obj.network === "devnet" || obj.network === "mainnet-beta"));
|
|
75
|
+
}
|
|
61
76
|
/**
|
|
62
77
|
* Load local shield config from ~/.agentshield/config.json.
|
|
63
78
|
* Falls back to env vars for backwards compatibility with existing MCP installs.
|
|
@@ -69,7 +84,8 @@ function loadShieldConfig() {
|
|
|
69
84
|
if (fs.existsSync(configPath)) {
|
|
70
85
|
try {
|
|
71
86
|
const raw = fs.readFileSync(configPath, "utf-8");
|
|
72
|
-
|
|
87
|
+
const parsed = JSON.parse(raw);
|
|
88
|
+
return isValidConfig(parsed) ? parsed : null;
|
|
73
89
|
}
|
|
74
90
|
catch {
|
|
75
91
|
return null;
|
|
@@ -85,8 +101,9 @@ function loadShieldConfig() {
|
|
|
85
101
|
layers: {
|
|
86
102
|
shield: {
|
|
87
103
|
enabled: true,
|
|
88
|
-
|
|
89
|
-
|
|
104
|
+
dailySpendingCapUsd: 500,
|
|
105
|
+
protocolMode: 0,
|
|
106
|
+
protocols: [],
|
|
90
107
|
maxLeverageBps: 0,
|
|
91
108
|
rateLimit: 60,
|
|
92
109
|
},
|
|
@@ -162,10 +179,10 @@ function loadConfig() {
|
|
|
162
179
|
}
|
|
163
180
|
return { walletPath, rpcUrl, agentKeypairPath };
|
|
164
181
|
}
|
|
165
|
-
function loadKeypair(
|
|
166
|
-
const resolved =
|
|
167
|
-
?
|
|
168
|
-
:
|
|
182
|
+
function loadKeypair(filePath) {
|
|
183
|
+
const resolved = filePath.startsWith("~")
|
|
184
|
+
? filePath.replace("~", os.homedir())
|
|
185
|
+
: filePath;
|
|
169
186
|
const raw = fs.readFileSync(resolved, "utf-8");
|
|
170
187
|
const secretKey = Uint8Array.from(JSON.parse(raw));
|
|
171
188
|
return web3_js_1.Keypair.fromSecretKey(secretKey);
|
|
@@ -215,6 +232,77 @@ async function createCustodyWallet(config) {
|
|
|
215
232
|
"Supported: crossmint, turnkey, privy.");
|
|
216
233
|
}
|
|
217
234
|
}
|
|
235
|
+
/** RPC URL helper: env override or clusterApiUrl fallback. */
|
|
236
|
+
function rpcUrlForNetwork(network) {
|
|
237
|
+
return process.env.AGENTSHIELD_RPC_URL || (0, web3_js_1.clusterApiUrl)(network);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create an AgentShieldClient backed by a custody wallet.
|
|
241
|
+
* Duck-typed: CrossmintWallet has publicKey, signTransaction, signAllTransactions.
|
|
242
|
+
*/
|
|
243
|
+
async function createCustodyClient(config) {
|
|
244
|
+
const custodyWallet = (await createCustodyWallet(config));
|
|
245
|
+
const connection = new web3_js_1.Connection(config.rpcUrl, "confirmed");
|
|
246
|
+
const client = new sdk_1.AgentShieldClient(connection, custodyWallet);
|
|
247
|
+
return { client, custodyWallet };
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Resolve an AgentShieldClient from the best available config source.
|
|
251
|
+
*
|
|
252
|
+
* Priority:
|
|
253
|
+
* 1. File-based config (from shield_configure)
|
|
254
|
+
* - crossmint type → needs CROSSMINT_API_KEY + locator → createCustodyClient
|
|
255
|
+
* - keypair type → createClient
|
|
256
|
+
* 2. Env-var config (backwards compatible)
|
|
257
|
+
* - custodyProvider set → createCustodyClient
|
|
258
|
+
* - else → createClient (keypair)
|
|
259
|
+
* 3. null if nothing works
|
|
260
|
+
*/
|
|
261
|
+
async function resolveClient() {
|
|
262
|
+
// Priority 1: File-based config
|
|
263
|
+
const fileConfig = loadShieldConfig();
|
|
264
|
+
if (fileConfig) {
|
|
265
|
+
if (fileConfig.wallet.type === "crossmint" &&
|
|
266
|
+
fileConfig.layers.tee.enabled) {
|
|
267
|
+
const apiKey = process.env.CROSSMINT_API_KEY;
|
|
268
|
+
if (!apiKey) {
|
|
269
|
+
throw new Error("Crossmint wallet configured but CROSSMINT_API_KEY is not set. " +
|
|
270
|
+
"Set CROSSMINT_API_KEY in your environment to use your custody wallet.");
|
|
271
|
+
}
|
|
272
|
+
const mcpConfig = {
|
|
273
|
+
rpcUrl: rpcUrlForNetwork(fileConfig.network),
|
|
274
|
+
custodyProvider: "crossmint",
|
|
275
|
+
crossmintApiKey: apiKey,
|
|
276
|
+
crossmintLocator: fileConfig.layers.tee.locator ?? undefined,
|
|
277
|
+
};
|
|
278
|
+
const { client, custodyWallet } = await createCustodyClient(mcpConfig);
|
|
279
|
+
return { client, config: mcpConfig, custodyWallet };
|
|
280
|
+
}
|
|
281
|
+
if (fileConfig.wallet.type === "keypair" && fileConfig.wallet.path) {
|
|
282
|
+
const mcpConfig = {
|
|
283
|
+
walletPath: fileConfig.wallet.path,
|
|
284
|
+
rpcUrl: rpcUrlForNetwork(fileConfig.network),
|
|
285
|
+
agentKeypairPath: fileConfig.wallet.path,
|
|
286
|
+
};
|
|
287
|
+
const client = createClient(mcpConfig);
|
|
288
|
+
return { client, config: mcpConfig, custodyWallet: null };
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Priority 2: Env-var config
|
|
292
|
+
try {
|
|
293
|
+
const envConfig = loadConfig();
|
|
294
|
+
if (envConfig.custodyProvider) {
|
|
295
|
+
const { client, custodyWallet } = await createCustodyClient(envConfig);
|
|
296
|
+
return { client, config: envConfig, custodyWallet };
|
|
297
|
+
}
|
|
298
|
+
const client = createClient(envConfig);
|
|
299
|
+
return { client, config: envConfig, custodyWallet: null };
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
// loadConfig throws when no wallet path — that's fine, fall through
|
|
303
|
+
}
|
|
304
|
+
return null;
|
|
305
|
+
}
|
|
218
306
|
function loadAgentKeypair(config) {
|
|
219
307
|
if (!config.agentKeypairPath) {
|
|
220
308
|
throw new Error("AGENTSHIELD_AGENT_KEYPAIR_PATH is required for agent-signed operations. " +
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export interface ErrorInfo {
|
|
|
5
5
|
suggestion: string;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
* Maps all
|
|
8
|
+
* Maps all 46 AgentShield Anchor error codes (6000–6045) to
|
|
9
9
|
* human-readable messages with actionable suggestions for AI tools.
|
|
10
10
|
*/
|
|
11
11
|
declare const ERROR_MAP: Record<number, ErrorInfo>;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,QAAA,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,QAAA,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA4TxC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CASnD;AA6BD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAmClD;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/errors.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.ERROR_MAP = void 0;
|
|
|
4
4
|
exports.lookupError = lookupError;
|
|
5
5
|
exports.formatError = formatError;
|
|
6
6
|
/**
|
|
7
|
-
* Maps all
|
|
7
|
+
* Maps all 46 AgentShield Anchor error codes (6000–6045) to
|
|
8
8
|
* human-readable messages with actionable suggestions for AI tools.
|
|
9
9
|
*/
|
|
10
10
|
const ERROR_MAP = {
|
|
@@ -28,15 +28,15 @@ const ERROR_MAP = {
|
|
|
28
28
|
},
|
|
29
29
|
6003: {
|
|
30
30
|
code: 6003,
|
|
31
|
-
name: "
|
|
32
|
-
message: "Token not in
|
|
33
|
-
suggestion: "
|
|
31
|
+
name: "TokenNotRegistered",
|
|
32
|
+
message: "Token not registered in oracle registry",
|
|
33
|
+
suggestion: "Register the token in the oracle registry before using it, or use a token that is already registered.",
|
|
34
34
|
},
|
|
35
35
|
6004: {
|
|
36
36
|
code: 6004,
|
|
37
37
|
name: "ProtocolNotAllowed",
|
|
38
|
-
message: "Protocol not
|
|
39
|
-
suggestion: "Use shield_update_policy to add the protocol to
|
|
38
|
+
message: "Protocol not allowed by policy",
|
|
39
|
+
suggestion: "Use shield_update_policy to add the protocol to the allowlist, or switch protocolMode to allow-all (mode 0).",
|
|
40
40
|
},
|
|
41
41
|
6005: {
|
|
42
42
|
code: 6005,
|
|
@@ -94,159 +94,195 @@ const ERROR_MAP = {
|
|
|
94
94
|
},
|
|
95
95
|
6014: {
|
|
96
96
|
code: 6014,
|
|
97
|
-
name: "TooManyAllowedTokens",
|
|
98
|
-
message: "Policy configuration invalid: too many allowed tokens",
|
|
99
|
-
suggestion: "Maximum 10 allowed tokens. Remove tokens you no longer need.",
|
|
100
|
-
},
|
|
101
|
-
6015: {
|
|
102
|
-
code: 6015,
|
|
103
97
|
name: "TooManyAllowedProtocols",
|
|
104
98
|
message: "Policy configuration invalid: too many allowed protocols",
|
|
105
99
|
suggestion: "Maximum 10 allowed protocols. Remove protocols you no longer need.",
|
|
106
100
|
},
|
|
107
|
-
|
|
108
|
-
code:
|
|
101
|
+
6015: {
|
|
102
|
+
code: 6015,
|
|
109
103
|
name: "AgentAlreadyRegistered",
|
|
110
104
|
message: "Agent already registered for this vault",
|
|
111
105
|
suggestion: "Use shield_revoke_agent first, then register the new agent.",
|
|
112
106
|
},
|
|
113
|
-
|
|
114
|
-
code:
|
|
107
|
+
6016: {
|
|
108
|
+
code: 6016,
|
|
115
109
|
name: "NoAgentRegistered",
|
|
116
110
|
message: "No agent registered for this vault",
|
|
117
111
|
suggestion: "Use shield_register_agent to register an agent before executing trades.",
|
|
118
112
|
},
|
|
119
|
-
|
|
120
|
-
code:
|
|
113
|
+
6017: {
|
|
114
|
+
code: 6017,
|
|
121
115
|
name: "VaultNotFrozen",
|
|
122
116
|
message: "Vault is not frozen (expected frozen for reactivation)",
|
|
123
117
|
suggestion: "Only frozen vaults can be reactivated. The vault may already be active.",
|
|
124
118
|
},
|
|
125
|
-
|
|
126
|
-
code:
|
|
119
|
+
6018: {
|
|
120
|
+
code: 6018,
|
|
127
121
|
name: "VaultAlreadyClosed",
|
|
128
122
|
message: "Vault is already closed",
|
|
129
123
|
suggestion: "This vault has been permanently closed. Create a new vault instead.",
|
|
130
124
|
},
|
|
131
|
-
|
|
132
|
-
code:
|
|
125
|
+
6019: {
|
|
126
|
+
code: 6019,
|
|
133
127
|
name: "InsufficientBalance",
|
|
134
128
|
message: "Insufficient vault balance for withdrawal",
|
|
135
129
|
suggestion: "Use shield_check_vault to verify balances. Deposit more funds or reduce the withdrawal amount.",
|
|
136
130
|
},
|
|
137
|
-
|
|
138
|
-
code:
|
|
131
|
+
6020: {
|
|
132
|
+
code: 6020,
|
|
139
133
|
name: "DeveloperFeeTooHigh",
|
|
140
134
|
message: "Developer fee rate exceeds maximum (500 / 1,000,000 = 5 BPS)",
|
|
141
135
|
suggestion: "Set developerFeeRate to 500 or less (maximum 0.05%).",
|
|
142
136
|
},
|
|
143
|
-
|
|
144
|
-
code:
|
|
137
|
+
6021: {
|
|
138
|
+
code: 6021,
|
|
145
139
|
name: "InvalidFeeDestination",
|
|
146
140
|
message: "Fee destination account invalid",
|
|
147
141
|
suggestion: "Provide a valid Solana public key for the fee destination.",
|
|
148
142
|
},
|
|
149
|
-
|
|
150
|
-
code:
|
|
143
|
+
6022: {
|
|
144
|
+
code: 6022,
|
|
151
145
|
name: "InvalidProtocolTreasury",
|
|
152
146
|
message: "Protocol treasury account does not match expected address",
|
|
153
147
|
suggestion: "This is an internal error. The protocol treasury address is hardcoded.",
|
|
154
148
|
},
|
|
155
|
-
|
|
156
|
-
code:
|
|
157
|
-
name: "TooManySpendEntries",
|
|
158
|
-
message: "Spend entry limit reached (too many active entries in rolling window)",
|
|
159
|
-
suggestion: "Wait for older entries to expire from the 24h rolling window.",
|
|
160
|
-
},
|
|
161
|
-
6025: {
|
|
162
|
-
code: 6025,
|
|
149
|
+
6023: {
|
|
150
|
+
code: 6023,
|
|
163
151
|
name: "InvalidAgentKey",
|
|
164
152
|
message: "Invalid agent: cannot be the zero address",
|
|
165
153
|
suggestion: "Provide a valid Solana public key for the agent.",
|
|
166
154
|
},
|
|
167
|
-
|
|
168
|
-
code:
|
|
155
|
+
6024: {
|
|
156
|
+
code: 6024,
|
|
169
157
|
name: "AgentIsOwner",
|
|
170
158
|
message: "Invalid agent: agent cannot be the vault owner",
|
|
171
159
|
suggestion: "The agent key must be different from the vault owner. Use a separate keypair.",
|
|
172
160
|
},
|
|
173
|
-
|
|
174
|
-
code:
|
|
161
|
+
6025: {
|
|
162
|
+
code: 6025,
|
|
175
163
|
name: "Overflow",
|
|
176
164
|
message: "Arithmetic overflow",
|
|
177
165
|
suggestion: "The amount is too large. Reduce the value and try again.",
|
|
178
166
|
},
|
|
179
|
-
|
|
180
|
-
code:
|
|
167
|
+
6026: {
|
|
168
|
+
code: 6026,
|
|
181
169
|
name: "DelegationFailed",
|
|
182
170
|
message: "Token delegation approval failed",
|
|
183
171
|
suggestion: "The vault may not have sufficient token balance. Check vault balance and try again.",
|
|
184
172
|
},
|
|
185
|
-
|
|
186
|
-
code:
|
|
173
|
+
6027: {
|
|
174
|
+
code: 6027,
|
|
187
175
|
name: "RevocationFailed",
|
|
188
176
|
message: "Token delegation revocation failed",
|
|
189
177
|
suggestion: "The session may have already been finalized. Check session status.",
|
|
190
178
|
},
|
|
191
|
-
|
|
192
|
-
code:
|
|
179
|
+
6028: {
|
|
180
|
+
code: 6028,
|
|
193
181
|
name: "OracleFeedStale",
|
|
194
182
|
message: "Oracle feed value is too stale",
|
|
195
|
-
suggestion: "The oracle price data is outdated. Wait for a fresh price update and retry.",
|
|
183
|
+
suggestion: "The oracle price data is outdated (exceeds 100-slot staleness window). Wait for a fresh price update and retry.",
|
|
196
184
|
},
|
|
197
|
-
|
|
198
|
-
code:
|
|
185
|
+
6029: {
|
|
186
|
+
code: 6029,
|
|
199
187
|
name: "OracleFeedInvalid",
|
|
200
188
|
message: "Cannot parse oracle feed data",
|
|
201
|
-
suggestion: "The oracle feed account data is malformed
|
|
189
|
+
suggestion: "The oracle feed account data is malformed. Verify the oracle configuration in the oracle registry.",
|
|
202
190
|
},
|
|
203
|
-
|
|
204
|
-
code:
|
|
191
|
+
6030: {
|
|
192
|
+
code: 6030,
|
|
205
193
|
name: "TokenSpendBlocked",
|
|
206
194
|
message: "Unpriced token cannot be spent (receive-only)",
|
|
207
|
-
suggestion: "This token is configured as receive-only
|
|
195
|
+
suggestion: "This token has no oracle price feed and is configured as receive-only. It cannot be used for spending.",
|
|
208
196
|
},
|
|
209
|
-
|
|
210
|
-
code:
|
|
197
|
+
6031: {
|
|
198
|
+
code: 6031,
|
|
211
199
|
name: "InvalidTokenAccount",
|
|
212
200
|
message: "Token account does not belong to vault or has wrong mint",
|
|
213
201
|
suggestion: "Ensure the token account is owned by the vault PDA and matches the token mint.",
|
|
214
202
|
},
|
|
215
|
-
|
|
216
|
-
code:
|
|
203
|
+
6032: {
|
|
204
|
+
code: 6032,
|
|
217
205
|
name: "OracleAccountMissing",
|
|
218
206
|
message: "Oracle-priced token requires feed account in remaining_accounts",
|
|
219
207
|
suggestion: "Pass the oracle feed account when transacting with oracle-priced tokens. The SDK resolves this automatically.",
|
|
220
208
|
},
|
|
209
|
+
6033: {
|
|
210
|
+
code: 6033,
|
|
211
|
+
name: "OracleConfidenceTooWide",
|
|
212
|
+
message: "Oracle price confidence interval too wide",
|
|
213
|
+
suggestion: "The oracle price has high uncertainty (>10% confidence interval). Wait for more stable market conditions and retry.",
|
|
214
|
+
},
|
|
215
|
+
6034: {
|
|
216
|
+
code: 6034,
|
|
217
|
+
name: "OracleUnsupportedType",
|
|
218
|
+
message: "Oracle account owner is not a recognized oracle program",
|
|
219
|
+
suggestion: "The oracle feed account must be owned by either Pyth Receiver or Switchboard On-Demand program. Check the oracle registry.",
|
|
220
|
+
},
|
|
221
221
|
6035: {
|
|
222
222
|
code: 6035,
|
|
223
|
-
name: "
|
|
224
|
-
message: "
|
|
225
|
-
suggestion: "
|
|
223
|
+
name: "OracleNotVerified",
|
|
224
|
+
message: "Pyth price update not fully verified by Wormhole",
|
|
225
|
+
suggestion: "The Pyth price update has not been verified by Wormhole guardians. Use a fully verified price feed.",
|
|
226
226
|
},
|
|
227
227
|
6036: {
|
|
228
228
|
code: 6036,
|
|
229
|
-
name: "
|
|
230
|
-
message: "
|
|
231
|
-
suggestion: "
|
|
229
|
+
name: "TimelockNotExpired",
|
|
230
|
+
message: "Timelock period has not expired yet",
|
|
231
|
+
suggestion: "Wait for the timelock period to expire before applying the pending policy update.",
|
|
232
232
|
},
|
|
233
233
|
6037: {
|
|
234
234
|
code: 6037,
|
|
235
|
-
name: "
|
|
236
|
-
message: "
|
|
237
|
-
suggestion: "
|
|
235
|
+
name: "TimelockActive",
|
|
236
|
+
message: "Vault has timelock active — use queue_policy_update instead",
|
|
237
|
+
suggestion: "This vault has a timelock configured. Use shield_queue_policy_update to queue changes, then apply after the timelock expires.",
|
|
238
238
|
},
|
|
239
239
|
6038: {
|
|
240
240
|
code: 6038,
|
|
241
|
-
name: "
|
|
242
|
-
message: "
|
|
243
|
-
suggestion: "
|
|
241
|
+
name: "NoTimelockConfigured",
|
|
242
|
+
message: "No timelock configured on this vault",
|
|
243
|
+
suggestion: "This vault does not have a timelock. Use shield_update_policy directly instead of queue_policy_update.",
|
|
244
244
|
},
|
|
245
245
|
6039: {
|
|
246
246
|
code: 6039,
|
|
247
|
-
name: "
|
|
248
|
-
message: "
|
|
249
|
-
suggestion: "
|
|
247
|
+
name: "DestinationNotAllowed",
|
|
248
|
+
message: "Destination not in allowed list",
|
|
249
|
+
suggestion: "Use shield_update_policy to add the destination address to allowedDestinations.",
|
|
250
|
+
},
|
|
251
|
+
6040: {
|
|
252
|
+
code: 6040,
|
|
253
|
+
name: "TooManyDestinations",
|
|
254
|
+
message: "Too many destinations (max 10)",
|
|
255
|
+
suggestion: "Maximum 10 allowed destinations. Remove destinations you no longer need before adding new ones.",
|
|
256
|
+
},
|
|
257
|
+
6041: {
|
|
258
|
+
code: 6041,
|
|
259
|
+
name: "InvalidProtocolMode",
|
|
260
|
+
message: "Invalid protocol mode (must be 0, 1, or 2)",
|
|
261
|
+
suggestion: "Set protocolMode to 0 (allow all), 1 (allowlist), or 2 (denylist).",
|
|
262
|
+
},
|
|
263
|
+
6042: {
|
|
264
|
+
code: 6042,
|
|
265
|
+
name: "OracleRegistryFull",
|
|
266
|
+
message: "Oracle registry is full (max 105 entries)",
|
|
267
|
+
suggestion: "The oracle registry has reached its maximum capacity of 105 token entries. Remove unused entries before adding new ones.",
|
|
268
|
+
},
|
|
269
|
+
6043: {
|
|
270
|
+
code: 6043,
|
|
271
|
+
name: "UnauthorizedRegistryAdmin",
|
|
272
|
+
message: "Unauthorized: not the oracle registry authority",
|
|
273
|
+
suggestion: "Only the oracle registry authority can modify the registry. Verify you are using the correct admin wallet.",
|
|
274
|
+
},
|
|
275
|
+
6044: {
|
|
276
|
+
code: 6044,
|
|
277
|
+
name: "OraclePriceDivergence",
|
|
278
|
+
message: "Primary and fallback oracle prices diverge beyond threshold",
|
|
279
|
+
suggestion: "The primary and fallback oracle feeds report prices that differ too much. Wait for price convergence or verify oracle feed configuration.",
|
|
280
|
+
},
|
|
281
|
+
6045: {
|
|
282
|
+
code: 6045,
|
|
283
|
+
name: "OracleBothFeedsFailed",
|
|
284
|
+
message: "Both primary and fallback oracle feeds failed",
|
|
285
|
+
suggestion: "Neither oracle feed returned a valid price. Check that the oracle accounts are valid and not stale.",
|
|
250
286
|
},
|
|
251
287
|
};
|
|
252
288
|
exports.ERROR_MAP = ERROR_MAP;
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|