@agent-shield/mcp 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.md +15 -16
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -8
- package/dist/config.js.map +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.js +28 -16
- package/dist/index.js.map +1 -1
- package/dist/tools/configure-from-file.d.ts.map +1 -1
- package/dist/tools/configure-from-file.js +5 -14
- package/dist/tools/configure-from-file.js.map +1 -1
- package/dist/tools/configure.d.ts +15 -3
- package/dist/tools/configure.d.ts.map +1 -1
- package/dist/tools/configure.js +66 -90
- package/dist/tools/configure.js.map +1 -1
- package/dist/tools/create-vault.js +1 -1
- package/dist/tools/create-vault.js.map +1 -1
- package/dist/tools/fund-wallet.d.ts.map +1 -1
- package/dist/tools/fund-wallet.js +2 -9
- package/dist/tools/fund-wallet.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/queue-policy-update.js +1 -1
- package/dist/tools/queue-policy-update.js.map +1 -1
- package/dist/tools/setup-status.d.ts +1 -2
- package/dist/tools/setup-status.d.ts.map +1 -1
- package/dist/tools/setup-status.js +26 -29
- package/dist/tools/setup-status.js.map +1 -1
- package/dist/tools/update-policy.js +1 -1
- package/dist/tools/update-policy.js.map +1 -1
- package/dist/tools/x402-fetch.d.ts +25 -0
- package/dist/tools/x402-fetch.d.ts.map +1 -0
- package/dist/tools/x402-fetch.js +133 -0
- package/dist/tools/x402-fetch.js.map +1 -0
- package/package.json +12 -11
- package/dist/tools/upgrade-tier.d.ts +0 -19
- package/dist/tools/upgrade-tier.d.ts.map +0 -1
- package/dist/tools/upgrade-tier.js +0 -115
- package/dist/tools/upgrade-tier.js.map +0 -1
|
@@ -7,8 +7,7 @@ const config_1 = require("../config");
|
|
|
7
7
|
exports.setupStatusSchema = zod_1.z.object({});
|
|
8
8
|
/**
|
|
9
9
|
* Check the current AgentShield setup status.
|
|
10
|
-
* Reads ~/.agentshield/config.json and reports
|
|
11
|
-
* If Tier 3 (vault), also includes vault address.
|
|
10
|
+
* Reads ~/.agentshield/config.json and reports layer status, wallet, policy, network.
|
|
12
11
|
*
|
|
13
12
|
* This tool works without an SDK client — it only reads local config.
|
|
14
13
|
*/
|
|
@@ -20,26 +19,21 @@ async function setupStatus(_client, _input) {
|
|
|
20
19
|
"",
|
|
21
20
|
"**Status:** Not configured",
|
|
22
21
|
"",
|
|
23
|
-
"AgentShield is not configured on this machine.
|
|
22
|
+
"AgentShield is not configured on this machine.",
|
|
24
23
|
"",
|
|
25
|
-
"
|
|
26
|
-
"-
|
|
27
|
-
"-
|
|
28
|
-
"-
|
|
24
|
+
"AgentShield provides on-chain guardrails for AI agents on Solana:",
|
|
25
|
+
"- Client-side policy checks (fast deny)",
|
|
26
|
+
"- TEE key custody (hardware enclave protection)",
|
|
27
|
+
"- On-chain vault enforcement (blockchain-enforced policies)",
|
|
29
28
|
"",
|
|
30
29
|
'Say "Set up AgentShield" to get started.',
|
|
31
30
|
].join("\n");
|
|
32
31
|
}
|
|
33
|
-
const
|
|
34
|
-
const tierLabels = {
|
|
35
|
-
1: "Shield (software controls)",
|
|
36
|
-
2: "Shield + TEE (hardware enclave)",
|
|
37
|
-
3: "Shield + TEE + Vault (on-chain enforcement)",
|
|
38
|
-
};
|
|
32
|
+
const fullyConfigured = (0, config_1.isFullyConfigured)(config);
|
|
39
33
|
const lines = [
|
|
40
34
|
"## AgentShield Setup Status",
|
|
41
35
|
"",
|
|
42
|
-
`**
|
|
36
|
+
`**Status:** ${fullyConfigured ? "Fully configured" : "Partially configured"}`,
|
|
43
37
|
`**Network:** ${config.network}`,
|
|
44
38
|
`**Template:** ${config.template}`,
|
|
45
39
|
`**Configured:** ${config.configuredAt}`,
|
|
@@ -54,7 +48,7 @@ async function setupStatus(_client, _input) {
|
|
|
54
48
|
}
|
|
55
49
|
lines.push("");
|
|
56
50
|
// Shield layer
|
|
57
|
-
lines.push("###
|
|
51
|
+
lines.push("### Policy Configuration");
|
|
58
52
|
const shield = config.layers.shield;
|
|
59
53
|
lines.push(`- **Enabled:** ${shield.enabled}`);
|
|
60
54
|
if (shield.enabled) {
|
|
@@ -65,7 +59,7 @@ async function setupStatus(_client, _input) {
|
|
|
65
59
|
}
|
|
66
60
|
lines.push("");
|
|
67
61
|
// TEE layer
|
|
68
|
-
lines.push("### TEE
|
|
62
|
+
lines.push("### TEE Custody");
|
|
69
63
|
const tee = config.layers.tee;
|
|
70
64
|
lines.push(`- **Enabled:** ${tee.enabled}`);
|
|
71
65
|
if (tee.enabled) {
|
|
@@ -74,7 +68,7 @@ async function setupStatus(_client, _input) {
|
|
|
74
68
|
}
|
|
75
69
|
lines.push("");
|
|
76
70
|
// Vault layer
|
|
77
|
-
lines.push("### Vault
|
|
71
|
+
lines.push("### On-Chain Vault");
|
|
78
72
|
const vault = config.layers.vault;
|
|
79
73
|
lines.push(`- **Enabled:** ${vault.enabled}`);
|
|
80
74
|
if (vault.enabled) {
|
|
@@ -82,24 +76,27 @@ async function setupStatus(_client, _input) {
|
|
|
82
76
|
lines.push(`- **Owner:** ${vault.owner}`);
|
|
83
77
|
lines.push(`- **Vault ID:** ${vault.vaultId}`);
|
|
84
78
|
}
|
|
85
|
-
//
|
|
86
|
-
if (
|
|
79
|
+
// Setup recommendation
|
|
80
|
+
if (!fullyConfigured) {
|
|
87
81
|
lines.push("");
|
|
88
|
-
lines.push("###
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
82
|
+
lines.push("### Setup Incomplete");
|
|
83
|
+
const missing = [];
|
|
84
|
+
if (!config.layers.shield.enabled)
|
|
85
|
+
missing.push("Policy checks");
|
|
86
|
+
if (!config.layers.tee.enabled)
|
|
87
|
+
missing.push("TEE custody");
|
|
88
|
+
if (!config.layers.vault.enabled)
|
|
89
|
+
missing.push("On-chain vault");
|
|
90
|
+
lines.push(`Missing: ${missing.join(", ")}`);
|
|
91
|
+
lines.push("");
|
|
92
|
+
lines.push("Run shield_configure to set up full protection.");
|
|
96
93
|
}
|
|
97
94
|
return lines.join("\n");
|
|
98
95
|
}
|
|
99
96
|
exports.setupStatusTool = {
|
|
100
97
|
name: "shield_setup_status",
|
|
101
|
-
description: "Check the current AgentShield setup status. Shows
|
|
102
|
-
"
|
|
98
|
+
description: "Check the current AgentShield setup status. Shows wallet configuration, guardrails, and network. " +
|
|
99
|
+
"Works even when AgentShield is not configured — " +
|
|
103
100
|
"reports setup instructions in that case.",
|
|
104
101
|
schema: exports.setupStatusSchema,
|
|
105
102
|
handler: setupStatus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-status.js","sourceRoot":"","sources":["../../src/tools/setup-status.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"setup-status.js","sourceRoot":"","sources":["../../src/tools/setup-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ exports.updatePolicySchema = zod_1.z.object({
|
|
|
40
40
|
developerFeeRate: zod_1.z
|
|
41
41
|
.number()
|
|
42
42
|
.optional()
|
|
43
|
-
.describe("New developer fee rate (max
|
|
43
|
+
.describe("New developer fee rate (max 500 = 5 BPS)"),
|
|
44
44
|
allowedDestinations: zod_1.z
|
|
45
45
|
.array(zod_1.z.string())
|
|
46
46
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-policy.js","sourceRoot":"","sources":["../../src/tools/update-policy.ts"],"names":[],"mappings":";;;AA+DA,oCAyDC;AAxHD,6BAAwB;AACxB,8CAAuC;AACvC,6CAA4C;AAG5C,oCAA6C;AAC7C,sCAAwC;AAE3B,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACxD,mBAAmB,EAAE,OAAC;SACnB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,qBAAqB,EAAE,OAAC;SACrB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;IACzD,aAAa,EAAE,OAAC;SACb,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,mEAAmE,CACpE;IACH,gBAAgB,EAAE,OAAC;SAChB,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE,CACrE;IACH,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,gBAAgB,EAAE,OAAC;SAChB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,sBAAsB,EAAE,OAAC;SACtB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,gBAAgB,EAAE,OAAC;SAChB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"update-policy.js","sourceRoot":"","sources":["../../src/tools/update-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentShieldClient } from "@agent-shield/sdk";
|
|
3
|
+
import type { McpConfig } from "../config";
|
|
4
|
+
export declare const x402FetchSchema: z.ZodObject<{
|
|
5
|
+
url: z.ZodString;
|
|
6
|
+
method: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
7
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
8
|
+
body: z.ZodOptional<z.ZodString>;
|
|
9
|
+
maxPayment: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type X402FetchInput = z.input<typeof x402FetchSchema>;
|
|
12
|
+
export declare function x402Fetch(_client: AgentShieldClient, config: McpConfig, input: X402FetchInput): Promise<string>;
|
|
13
|
+
export declare const x402FetchTool: {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
schema: z.ZodObject<{
|
|
17
|
+
url: z.ZodString;
|
|
18
|
+
method: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
19
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
20
|
+
body: z.ZodOptional<z.ZodString>;
|
|
21
|
+
maxPayment: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
handler: typeof x402Fetch;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=x402-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-fetch.d.ts","sourceRoot":"","sources":["../../src/tools/x402-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,eAAO,MAAM,eAAe;;;;;;iBAkB1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,wBAAsB,SAAS,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CA2EjB;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;CAQzB,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
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.x402FetchTool = exports.x402FetchSchema = void 0;
|
|
37
|
+
exports.x402Fetch = x402Fetch;
|
|
38
|
+
const zod_1 = require("zod");
|
|
39
|
+
const errors_1 = require("../errors");
|
|
40
|
+
exports.x402FetchSchema = zod_1.z.object({
|
|
41
|
+
url: zod_1.z.string().describe("URL of the x402-protected API endpoint"),
|
|
42
|
+
method: zod_1.z
|
|
43
|
+
.string()
|
|
44
|
+
.optional()
|
|
45
|
+
.default("GET")
|
|
46
|
+
.describe("HTTP method (default: GET)"),
|
|
47
|
+
headers: zod_1.z
|
|
48
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Additional HTTP headers as key-value pairs"),
|
|
51
|
+
body: zod_1.z.string().optional().describe("Request body (for POST/PUT)"),
|
|
52
|
+
maxPayment: zod_1.z
|
|
53
|
+
.string()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe("Maximum payment amount in token base units (rejects if server asks for more)"),
|
|
56
|
+
});
|
|
57
|
+
async function x402Fetch(_client, config, input) {
|
|
58
|
+
try {
|
|
59
|
+
// Dynamic import to avoid loading x402 code unless needed
|
|
60
|
+
const { shieldWallet, shieldedFetch } = await Promise.resolve().then(() => __importStar(require("@agent-shield/sdk")));
|
|
61
|
+
const { Connection, Keypair } = await Promise.resolve().then(() => __importStar(require("@solana/web3.js")));
|
|
62
|
+
// Load wallet keypair — direct bytes, walletPath file, or agentKeypairPath
|
|
63
|
+
let keypair;
|
|
64
|
+
const cfgAny = config;
|
|
65
|
+
if (typeof cfgAny.keypair === "string") {
|
|
66
|
+
// Direct keypair bytes (JSON array string) — programmatic/test usage
|
|
67
|
+
keypair = Keypair.fromSecretKey(new Uint8Array(JSON.parse(cfgAny.keypair)));
|
|
68
|
+
}
|
|
69
|
+
else if (config.walletPath) {
|
|
70
|
+
const { loadKeypair } = await Promise.resolve().then(() => __importStar(require("../config")));
|
|
71
|
+
keypair = loadKeypair(config.walletPath);
|
|
72
|
+
}
|
|
73
|
+
else if (config.agentKeypairPath) {
|
|
74
|
+
const { loadKeypair } = await Promise.resolve().then(() => __importStar(require("../config")));
|
|
75
|
+
keypair = loadKeypair(config.agentKeypairPath);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return "## Error\n\nNo agent keypair configured. Run `shield_configure` first.";
|
|
79
|
+
}
|
|
80
|
+
const wallet = {
|
|
81
|
+
publicKey: keypair.publicKey,
|
|
82
|
+
signTransaction: async (tx) => {
|
|
83
|
+
tx.partialSign?.(keypair);
|
|
84
|
+
return tx;
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
const connection = new Connection(config.rpcUrl, "confirmed");
|
|
88
|
+
const shielded = shieldWallet(wallet, undefined, { connection });
|
|
89
|
+
const fetchInit = {
|
|
90
|
+
method: input.method ?? "GET",
|
|
91
|
+
};
|
|
92
|
+
if (input.headers) {
|
|
93
|
+
fetchInit.headers = input.headers;
|
|
94
|
+
}
|
|
95
|
+
if (input.body) {
|
|
96
|
+
fetchInit.body = input.body;
|
|
97
|
+
}
|
|
98
|
+
const res = await shieldedFetch(shielded, input.url, {
|
|
99
|
+
...fetchInit,
|
|
100
|
+
connection,
|
|
101
|
+
});
|
|
102
|
+
const body = await res.text();
|
|
103
|
+
const x402 = res.x402;
|
|
104
|
+
const lines = [`=== x402 Fetch Result ===`];
|
|
105
|
+
lines.push(`URL: ${input.url}`);
|
|
106
|
+
lines.push(`Status: ${res.status}`);
|
|
107
|
+
if (x402) {
|
|
108
|
+
lines.push(`Paid: ${x402.paid}`);
|
|
109
|
+
if (x402.paid) {
|
|
110
|
+
lines.push(`Amount: ${x402.amountPaid}`);
|
|
111
|
+
lines.push(`Asset: ${x402.asset}`);
|
|
112
|
+
lines.push(`Pay To: ${x402.payTo}`);
|
|
113
|
+
if (x402.settlement?.transaction) {
|
|
114
|
+
lines.push(`Tx: ${x402.settlement.transaction}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
lines.push(`Response: ${body.slice(0, 2000)}`);
|
|
119
|
+
return lines.join("\n");
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return (0, errors_1.formatError)(error);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.x402FetchTool = {
|
|
126
|
+
name: "shield_x402_fetch",
|
|
127
|
+
description: "Fetch a URL with automatic x402 (HTTP 402 Payment Required) support. " +
|
|
128
|
+
"If the server returns 402 with payment requirements, the agent wallet " +
|
|
129
|
+
"signs a payment transaction (enforced by shield policies) and retries.",
|
|
130
|
+
schema: exports.x402FetchSchema,
|
|
131
|
+
handler: x402Fetch,
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=x402-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-fetch.js","sourceRoot":"","sources":["../../src/tools/x402-fetch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-shield/mcp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"author": "Kaleb Rupe (https://x.com/MightieMags)",
|
|
5
5
|
"homepage": "https://github.com/Kaleb-Rupe/agentshield#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -9,16 +9,12 @@
|
|
|
9
9
|
},
|
|
10
10
|
"description": "MCP server for AgentShield — manage on-chain vaults and enforce policies via AI tools",
|
|
11
11
|
"main": "dist/index.js",
|
|
12
|
+
"module": "dist/index.js",
|
|
12
13
|
"types": "dist/index.d.ts",
|
|
14
|
+
"sideEffects": false,
|
|
13
15
|
"bin": {
|
|
14
16
|
"agent-shield-mcp": "dist/index.js"
|
|
15
17
|
},
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
18
|
-
"clean": "rm -rf dist",
|
|
19
|
-
"test": "mocha --require ts-node/register 'tests/*.test.ts' 'tests/**/*.test.ts' --timeout 30000",
|
|
20
|
-
"prepublishOnly": "pnpm run build"
|
|
21
|
-
},
|
|
22
18
|
"files": [
|
|
23
19
|
"dist/**/*",
|
|
24
20
|
"README.md"
|
|
@@ -43,8 +39,6 @@
|
|
|
43
39
|
}
|
|
44
40
|
},
|
|
45
41
|
"devDependencies": {
|
|
46
|
-
"@agent-shield/sdk": "workspace:*",
|
|
47
|
-
"@agent-shield/custody-crossmint": "workspace:*",
|
|
48
42
|
"@coral-xyz/anchor": "^0.32.1",
|
|
49
43
|
"@solana/spl-token": "^0.4.0",
|
|
50
44
|
"@solana/web3.js": "^1.95.0",
|
|
@@ -56,7 +50,9 @@
|
|
|
56
50
|
"mocha": "^10.3.0",
|
|
57
51
|
"sinon": "^17.0.1",
|
|
58
52
|
"ts-node": "^10.9.2",
|
|
59
|
-
"typescript": "^5.3.3"
|
|
53
|
+
"typescript": "^5.3.3",
|
|
54
|
+
"@agent-shield/custody-crossmint": "0.1.4",
|
|
55
|
+
"@agent-shield/sdk": "0.5.1"
|
|
60
56
|
},
|
|
61
57
|
"keywords": [
|
|
62
58
|
"mcp",
|
|
@@ -74,5 +70,10 @@
|
|
|
74
70
|
"type": "git",
|
|
75
71
|
"url": "https://github.com/Kaleb-Rupe/agentshield",
|
|
76
72
|
"directory": "packages/mcp"
|
|
73
|
+
},
|
|
74
|
+
"scripts": {
|
|
75
|
+
"build": "tsc",
|
|
76
|
+
"clean": "rm -rf dist",
|
|
77
|
+
"test": "mocha --require ts-node/register 'tests/*.test.ts' 'tests/**/*.test.ts' --timeout 30000"
|
|
77
78
|
}
|
|
78
|
-
}
|
|
79
|
+
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const upgradeTierSchema: z.ZodObject<{
|
|
3
|
-
targetTier: z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>]>;
|
|
4
|
-
}, z.core.$strip>;
|
|
5
|
-
export type UpgradeTierInput = z.infer<typeof upgradeTierSchema>;
|
|
6
|
-
/**
|
|
7
|
-
* Upgrade from the current tier to a higher one.
|
|
8
|
-
* Preserves existing policy settings.
|
|
9
|
-
*/
|
|
10
|
-
export declare function upgradeTier(_client: any, input: UpgradeTierInput): Promise<string>;
|
|
11
|
-
export declare const upgradeTierTool: {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
schema: z.ZodObject<{
|
|
15
|
-
targetTier: z.ZodUnion<readonly [z.ZodLiteral<2>, z.ZodLiteral<3>]>;
|
|
16
|
-
}, z.core.$strip>;
|
|
17
|
-
handler: typeof upgradeTier;
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=upgrade-tier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-tier.d.ts","sourceRoot":"","sources":["../../src/tools/upgrade-tier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,iBAAiB;;iBAI5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CAkIjB;AAED,eAAO,MAAM,eAAe;;;;;;;CAS3B,CAAC"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.upgradeTierTool = exports.upgradeTierSchema = void 0;
|
|
4
|
-
exports.upgradeTier = upgradeTier;
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const config_1 = require("../config");
|
|
7
|
-
const ACTIONS_SERVER_URL = "https://agent-middleware.vercel.app";
|
|
8
|
-
exports.upgradeTierSchema = zod_1.z.object({
|
|
9
|
-
targetTier: zod_1.z
|
|
10
|
-
.union([zod_1.z.literal(2), zod_1.z.literal(3)])
|
|
11
|
-
.describe("Target tier: 2=add TEE custody, 3=add on-chain Vault"),
|
|
12
|
-
});
|
|
13
|
-
/**
|
|
14
|
-
* Upgrade from the current tier to a higher one.
|
|
15
|
-
* Preserves existing policy settings.
|
|
16
|
-
*/
|
|
17
|
-
async function upgradeTier(_client, input) {
|
|
18
|
-
const config = (0, config_1.loadShieldConfig)();
|
|
19
|
-
if (!config) {
|
|
20
|
-
return ("AgentShield is not configured yet. " +
|
|
21
|
-
"Use shield_configure to set up from scratch instead of upgrading.");
|
|
22
|
-
}
|
|
23
|
-
const currentTier = (0, config_1.getCurrentTier)(config);
|
|
24
|
-
if (input.targetTier <= currentTier) {
|
|
25
|
-
return `Already at Tier ${currentTier} — cannot downgrade to Tier ${input.targetTier}. Downgrades are not supported via tools.`;
|
|
26
|
-
}
|
|
27
|
-
const lines = [];
|
|
28
|
-
// ── Upgrade to Tier 2 (add TEE) ──────────────────────────────
|
|
29
|
-
if (input.targetTier >= 2 && !config.layers.tee.enabled) {
|
|
30
|
-
try {
|
|
31
|
-
const response = await fetch(`${ACTIONS_SERVER_URL}/api/actions/provision-tee`, {
|
|
32
|
-
method: "POST",
|
|
33
|
-
headers: { "Content-Type": "application/json" },
|
|
34
|
-
body: JSON.stringify({ network: config.network }),
|
|
35
|
-
});
|
|
36
|
-
if (!response.ok) {
|
|
37
|
-
const errorBody = await response.text();
|
|
38
|
-
return `Error provisioning TEE wallet: ${response.status} ${errorBody}`;
|
|
39
|
-
}
|
|
40
|
-
const teeResult = (await response.json());
|
|
41
|
-
const oldPubkey = config.wallet.publicKey;
|
|
42
|
-
config.layers.tee = {
|
|
43
|
-
enabled: true,
|
|
44
|
-
locator: teeResult.locator,
|
|
45
|
-
publicKey: teeResult.publicKey,
|
|
46
|
-
};
|
|
47
|
-
config.wallet.type = "crossmint";
|
|
48
|
-
config.wallet.publicKey = teeResult.publicKey;
|
|
49
|
-
lines.push("## Upgraded to Tier 2 (Shield + TEE)");
|
|
50
|
-
lines.push("");
|
|
51
|
-
lines.push(`**TEE Public Key:** ${teeResult.publicKey}`);
|
|
52
|
-
lines.push(`**Locator:** ${teeResult.locator}`);
|
|
53
|
-
lines.push("");
|
|
54
|
-
lines.push("Your agent's private key is now protected in a hardware enclave.");
|
|
55
|
-
lines.push("**Disclosure:** Your TEE wallet is custodied by AgentShield's platform. You can export or migrate later.");
|
|
56
|
-
lines.push("");
|
|
57
|
-
lines.push("### Transfer Funds");
|
|
58
|
-
lines.push(`If you have funds in your old wallet (\`${oldPubkey}\`), transfer them to the new TEE wallet:`);
|
|
59
|
-
lines.push(`- **New address:** \`${teeResult.publicKey}\``);
|
|
60
|
-
lines.push("- Use any Solana wallet to send SOL and tokens to the new address.");
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
const msg = error instanceof Error ? error.message : String(error);
|
|
64
|
-
return `Error connecting to AgentShield platform for TEE provisioning: ${msg}`;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// ── Upgrade to Tier 3 (add Vault) ────────────────────────────
|
|
68
|
-
if (input.targetTier >= 3 && !config.layers.vault.enabled) {
|
|
69
|
-
const params = new URLSearchParams();
|
|
70
|
-
params.set("template", config.template);
|
|
71
|
-
params.set("agentPubkey", config.wallet.publicKey);
|
|
72
|
-
const shield = config.layers.shield;
|
|
73
|
-
if (shield.dailyCapUsd) {
|
|
74
|
-
params.set("dailyCap", shield.dailyCapUsd.toString());
|
|
75
|
-
}
|
|
76
|
-
const actionUrl = `${ACTIONS_SERVER_URL}/api/actions/provision?${params.toString()}`;
|
|
77
|
-
const blinkUrl = `https://dial.to/?action=solana-action:${encodeURIComponent(actionUrl)}`;
|
|
78
|
-
config.layers.vault.enabled = true;
|
|
79
|
-
if (lines.length > 0) {
|
|
80
|
-
lines.push("");
|
|
81
|
-
lines.push("---");
|
|
82
|
-
lines.push("");
|
|
83
|
-
}
|
|
84
|
-
lines.push(lines.length === 0
|
|
85
|
-
? "## Upgraded to Tier 3 (Shield + Vault)"
|
|
86
|
-
: "## Also Adding Tier 3 (On-Chain Vault)");
|
|
87
|
-
if (!config.layers.tee.enabled) {
|
|
88
|
-
lines.push("");
|
|
89
|
-
lines.push("**Warning:** Your agent's private key is stored locally without hardware protection. " +
|
|
90
|
-
"We recommend adding TEE custody for production use.");
|
|
91
|
-
}
|
|
92
|
-
lines.push("");
|
|
93
|
-
lines.push("Sign the vault creation transaction to complete the upgrade:");
|
|
94
|
-
lines.push(`1. **Blink URL:** ${blinkUrl}`);
|
|
95
|
-
lines.push(`2. **Action URL:** ${actionUrl}`);
|
|
96
|
-
lines.push("");
|
|
97
|
-
lines.push("After signing, your vault address will be saved and on-chain policy enforcement will be active.");
|
|
98
|
-
lines.push("");
|
|
99
|
-
lines.push("### Policy Applied");
|
|
100
|
-
lines.push(`Your existing policy will be enforced on-chain: $${shield.dailyCapUsd}/day cap, ${shield.allowedProtocols.length} protocols, ${shield.maxLeverageBps} BPS max leverage.`);
|
|
101
|
-
}
|
|
102
|
-
// Save updated config
|
|
103
|
-
(0, config_1.saveShieldConfig)(config);
|
|
104
|
-
return lines.join("\n");
|
|
105
|
-
}
|
|
106
|
-
exports.upgradeTierTool = {
|
|
107
|
-
name: "shield_upgrade_tier",
|
|
108
|
-
description: "Upgrade AgentShield from the current tier to a higher one. " +
|
|
109
|
-
"Tier 2 adds TEE custody (hardware enclave key protection). " +
|
|
110
|
-
"Tier 3 adds on-chain Vault (blockchain-enforced policy). " +
|
|
111
|
-
"Preserves existing policy settings during upgrade.",
|
|
112
|
-
schema: exports.upgradeTierSchema,
|
|
113
|
-
handler: upgradeTier,
|
|
114
|
-
};
|
|
115
|
-
//# sourceMappingURL=upgrade-tier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-tier.js","sourceRoot":"","sources":["../../src/tools/upgrade-tier.ts"],"names":[],"mappings":"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"}
|