@agent-shield/mcp 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,239 @@
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.configureFromFileTool = exports.configureFromFileSchema = void 0;
37
+ exports.configureFromFile = configureFromFile;
38
+ const zod_1 = require("zod");
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const os = __importStar(require("os"));
42
+ const config_1 = require("../config");
43
+ exports.configureFromFileSchema = zod_1.z.object({
44
+ configFile: zod_1.z
45
+ .string()
46
+ .describe("Absolute or ~-relative path to a JSON config file matching the ShieldLocalConfig schema"),
47
+ });
48
+ /**
49
+ * Apply an AgentShield configuration from a pre-written JSON file.
50
+ *
51
+ * Designed for programmatic deployments (CI/CD pipelines, orchestrator
52
+ * platforms) that need a non-interactive config path. The human who
53
+ * wrote the config file is the human-in-the-loop.
54
+ *
55
+ * The config file must match the ShieldLocalConfig schema. Minimal
56
+ * required fields:
57
+ * ```json
58
+ * {
59
+ * "version": 1,
60
+ * "layers": {
61
+ * "shield": { "enabled": true, "dailyCapUsd": 500, "allowedProtocols": [], "maxLeverageBps": 0, "rateLimit": 60 },
62
+ * "tee": { "enabled": false, "locator": null, "publicKey": null },
63
+ * "vault": { "enabled": false, "address": null, "owner": null, "vaultId": null }
64
+ * },
65
+ * "wallet": { "type": "keypair", "path": "~/.agentshield/wallets/agent.json", "publicKey": "<base58>" },
66
+ * "network": "devnet",
67
+ * "template": "conservative",
68
+ * "configuredAt": "2026-01-01T00:00:00.000Z"
69
+ * }
70
+ * ```
71
+ */
72
+ async function configureFromFile(_client, input) {
73
+ try {
74
+ // Resolve ~ in path
75
+ const filePath = input.configFile.startsWith("~")
76
+ ? input.configFile.replace("~", os.homedir())
77
+ : input.configFile;
78
+ const resolved = path.resolve(filePath);
79
+ if (!fs.existsSync(resolved)) {
80
+ return `Error: Config file not found at ${resolved}`;
81
+ }
82
+ let raw;
83
+ try {
84
+ raw = fs.readFileSync(resolved, "utf-8");
85
+ }
86
+ catch (err) {
87
+ const msg = err instanceof Error ? err.message : String(err);
88
+ return `Error reading config file: ${msg}`;
89
+ }
90
+ let parsed;
91
+ try {
92
+ parsed = JSON.parse(raw);
93
+ }
94
+ catch {
95
+ return `Error: Config file is not valid JSON`;
96
+ }
97
+ // Validate required fields
98
+ const errors = validateConfig(parsed);
99
+ if (errors.length > 0) {
100
+ return [
101
+ "Error: Config file has invalid structure:",
102
+ "",
103
+ ...errors.map((e) => `- ${e}`),
104
+ "",
105
+ "See shield_setup_status for the expected schema.",
106
+ ].join("\n");
107
+ }
108
+ const config = parsed;
109
+ // Check if already configured
110
+ const existing = (0, config_1.loadShieldConfig)();
111
+ const isOverwrite = existing !== null;
112
+ // Save config
113
+ (0, config_1.saveShieldConfig)(config);
114
+ const tierLabels = {
115
+ 1: "Shield (software controls only — development use)",
116
+ 2: "Shield + TEE (hardware enclave key protection)",
117
+ 3: "Shield + TEE + Vault (on-chain enforcement — recommended for production)",
118
+ };
119
+ const tier = config.layers.vault.enabled
120
+ ? 3
121
+ : config.layers.tee.enabled
122
+ ? 2
123
+ : 1;
124
+ const lines = [
125
+ `## AgentShield Configured from File${isOverwrite ? " (overwritten)" : ""}`,
126
+ "",
127
+ `**Source:** ${resolved}`,
128
+ `**Tier:** ${tier} — ${tierLabels[tier]}`,
129
+ `**Network:** ${config.network}`,
130
+ `**Template:** ${config.template}`,
131
+ `**Wallet:** ${config.wallet.publicKey}`,
132
+ `**Daily Cap:** $${config.layers.shield.dailyCapUsd}`,
133
+ ];
134
+ if (tier < 3) {
135
+ lines.push("");
136
+ lines.push("**Note:** For production use with real funds, upgrade to Tier 3 " +
137
+ "(Shield + TEE + Vault) for blockchain-enforced policy limits that " +
138
+ "cannot be bypassed even by compromised agent software.");
139
+ }
140
+ return lines.join("\n");
141
+ }
142
+ catch (error) {
143
+ const msg = error instanceof Error ? error.message : String(error);
144
+ return `Error applying config from file: ${msg}`;
145
+ }
146
+ }
147
+ /**
148
+ * Validate that a parsed object matches the ShieldLocalConfig shape.
149
+ * Returns an array of error messages (empty = valid).
150
+ */
151
+ function validateConfig(obj) {
152
+ const errors = [];
153
+ if (typeof obj !== "object" || obj === null) {
154
+ return ["Config must be a JSON object"];
155
+ }
156
+ if (obj.version !== 1) {
157
+ errors.push('Missing or invalid "version" (must be 1)');
158
+ }
159
+ // Layers
160
+ if (typeof obj.layers !== "object" || obj.layers === null) {
161
+ errors.push('Missing "layers" object');
162
+ }
163
+ else {
164
+ // Shield
165
+ if (typeof obj.layers.shield !== "object" || obj.layers.shield === null) {
166
+ errors.push('Missing "layers.shield" object');
167
+ }
168
+ else {
169
+ if (typeof obj.layers.shield.enabled !== "boolean") {
170
+ errors.push('"layers.shield.enabled" must be a boolean');
171
+ }
172
+ if (typeof obj.layers.shield.dailyCapUsd !== "number") {
173
+ errors.push('"layers.shield.dailyCapUsd" must be a number');
174
+ }
175
+ if (!Array.isArray(obj.layers.shield.allowedProtocols)) {
176
+ errors.push('"layers.shield.allowedProtocols" must be an array');
177
+ }
178
+ if (typeof obj.layers.shield.maxLeverageBps !== "number") {
179
+ errors.push('"layers.shield.maxLeverageBps" must be a number');
180
+ }
181
+ if (typeof obj.layers.shield.rateLimit !== "number") {
182
+ errors.push('"layers.shield.rateLimit" must be a number');
183
+ }
184
+ }
185
+ // TEE
186
+ if (typeof obj.layers.tee !== "object" || obj.layers.tee === null) {
187
+ errors.push('Missing "layers.tee" object');
188
+ }
189
+ else {
190
+ if (typeof obj.layers.tee.enabled !== "boolean") {
191
+ errors.push('"layers.tee.enabled" must be a boolean');
192
+ }
193
+ }
194
+ // Vault
195
+ if (typeof obj.layers.vault !== "object" || obj.layers.vault === null) {
196
+ errors.push('Missing "layers.vault" object');
197
+ }
198
+ else {
199
+ if (typeof obj.layers.vault.enabled !== "boolean") {
200
+ errors.push('"layers.vault.enabled" must be a boolean');
201
+ }
202
+ }
203
+ }
204
+ // Wallet
205
+ if (typeof obj.wallet !== "object" || obj.wallet === null) {
206
+ errors.push('Missing "wallet" object');
207
+ }
208
+ else {
209
+ if (obj.wallet.type !== "keypair" && obj.wallet.type !== "crossmint") {
210
+ errors.push('"wallet.type" must be "keypair" or "crossmint"');
211
+ }
212
+ if (typeof obj.wallet.publicKey !== "string" || !obj.wallet.publicKey) {
213
+ errors.push('"wallet.publicKey" must be a non-empty string');
214
+ }
215
+ }
216
+ // Network
217
+ if (obj.network !== "devnet" && obj.network !== "mainnet-beta") {
218
+ errors.push('"network" must be "devnet" or "mainnet-beta"');
219
+ }
220
+ // Template
221
+ if (!["conservative", "moderate", "aggressive"].includes(obj.template)) {
222
+ errors.push('"template" must be "conservative", "moderate", or "aggressive"');
223
+ }
224
+ // configuredAt
225
+ if (typeof obj.configuredAt !== "string") {
226
+ errors.push('"configuredAt" must be an ISO date string');
227
+ }
228
+ return errors;
229
+ }
230
+ exports.configureFromFileTool = {
231
+ name: "shield_configure_from_file",
232
+ description: "Apply AgentShield configuration from a pre-written JSON file. " +
233
+ "Designed for CI/CD pipelines and orchestrator platforms that need " +
234
+ "non-interactive setup. The config file must match the ShieldLocalConfig " +
235
+ "schema (same format as ~/.agentshield/config.json).",
236
+ schema: exports.configureFromFileSchema,
237
+ handler: configureFromFile,
238
+ };
239
+ //# sourceMappingURL=configure-from-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-from-file.js","sourceRoot":"","sources":["../../src/tools/configure-from-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { z } from "zod";
2
+ export declare const configureSchema: z.ZodObject<{
3
+ tier: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
4
+ template: z.ZodDefault<z.ZodOptional<z.ZodEnum<["conservative", "moderate", "aggressive"]>>>;
5
+ dailyCapUsd: z.ZodOptional<z.ZodNumber>;
6
+ allowedProtocols: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ maxLeverageBps: z.ZodOptional<z.ZodNumber>;
8
+ rateLimit: z.ZodOptional<z.ZodNumber>;
9
+ network: z.ZodDefault<z.ZodOptional<z.ZodEnum<["devnet", "mainnet-beta"]>>>;
10
+ walletPath: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ template: "conservative" | "moderate" | "aggressive";
13
+ tier: 1 | 2 | 3;
14
+ network: "devnet" | "mainnet-beta";
15
+ allowedProtocols?: string[] | undefined;
16
+ maxLeverageBps?: number | undefined;
17
+ dailyCapUsd?: number | undefined;
18
+ rateLimit?: number | undefined;
19
+ walletPath?: string | undefined;
20
+ }, {
21
+ tier: 1 | 2 | 3;
22
+ template?: "conservative" | "moderate" | "aggressive" | undefined;
23
+ allowedProtocols?: string[] | undefined;
24
+ maxLeverageBps?: number | undefined;
25
+ dailyCapUsd?: number | undefined;
26
+ rateLimit?: number | undefined;
27
+ network?: "devnet" | "mainnet-beta" | undefined;
28
+ walletPath?: string | undefined;
29
+ }>;
30
+ export type ConfigureInput = z.infer<typeof configureSchema>;
31
+ export declare function configure(_client: any, input: ConfigureInput): Promise<string>;
32
+ export declare const configureTool: {
33
+ name: string;
34
+ description: string;
35
+ schema: z.ZodObject<{
36
+ tier: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
37
+ template: z.ZodDefault<z.ZodOptional<z.ZodEnum<["conservative", "moderate", "aggressive"]>>>;
38
+ dailyCapUsd: z.ZodOptional<z.ZodNumber>;
39
+ allowedProtocols: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
40
+ maxLeverageBps: z.ZodOptional<z.ZodNumber>;
41
+ rateLimit: z.ZodOptional<z.ZodNumber>;
42
+ network: z.ZodDefault<z.ZodOptional<z.ZodEnum<["devnet", "mainnet-beta"]>>>;
43
+ walletPath: z.ZodOptional<z.ZodString>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ template: "conservative" | "moderate" | "aggressive";
46
+ tier: 1 | 2 | 3;
47
+ network: "devnet" | "mainnet-beta";
48
+ allowedProtocols?: string[] | undefined;
49
+ maxLeverageBps?: number | undefined;
50
+ dailyCapUsd?: number | undefined;
51
+ rateLimit?: number | undefined;
52
+ walletPath?: string | undefined;
53
+ }, {
54
+ tier: 1 | 2 | 3;
55
+ template?: "conservative" | "moderate" | "aggressive" | undefined;
56
+ allowedProtocols?: string[] | undefined;
57
+ maxLeverageBps?: number | undefined;
58
+ dailyCapUsd?: number | undefined;
59
+ rateLimit?: number | undefined;
60
+ network?: "devnet" | "mainnet-beta" | undefined;
61
+ walletPath?: string | undefined;
62
+ }>;
63
+ handler: typeof configure;
64
+ };
65
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/tools/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoDxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,wBAAsB,SAAS,CAC7B,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CAmMjB;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUzB,CAAC"}
@@ -0,0 +1,286 @@
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.configureTool = exports.configureSchema = void 0;
37
+ exports.configure = configure;
38
+ const zod_1 = require("zod");
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const os = __importStar(require("os"));
42
+ const config_1 = require("../config");
43
+ /**
44
+ * Template definitions for configure tool.
45
+ * Duplicated from actions-server/src/lib/templates.ts for zero-dependency use.
46
+ * Keep in sync — see apps/actions-server/src/lib/templates.ts.
47
+ */
48
+ const CONFIGURE_TEMPLATES = {
49
+ conservative: {
50
+ dailyCapUsd: 500,
51
+ allowedProtocols: ["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"],
52
+ maxLeverageBps: 0,
53
+ rateLimit: 60,
54
+ },
55
+ moderate: {
56
+ dailyCapUsd: 2000,
57
+ allowedProtocols: [
58
+ "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
59
+ "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
60
+ "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
61
+ "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo",
62
+ ],
63
+ maxLeverageBps: 20000,
64
+ rateLimit: 120,
65
+ },
66
+ aggressive: {
67
+ dailyCapUsd: 10000,
68
+ allowedProtocols: [
69
+ "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
70
+ "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
71
+ "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
72
+ "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo",
73
+ "F1aShdFvR4FHMqAjMbBiGWCHKYaUqR6sFg1MG2pPVfkz",
74
+ ],
75
+ maxLeverageBps: 50000,
76
+ rateLimit: 300,
77
+ },
78
+ };
79
+ const ACTIONS_SERVER_URL = "https://agent-middleware.vercel.app";
80
+ exports.configureSchema = zod_1.z.object({
81
+ tier: zod_1.z
82
+ .union([zod_1.z.literal(1), zod_1.z.literal(2), zod_1.z.literal(3)])
83
+ .describe("Security tier: 1=Shield (software controls), 2=Shield+TEE (hardware enclave), 3=Shield+TEE+Vault (on-chain)"),
84
+ template: zod_1.z
85
+ .enum(["conservative", "moderate", "aggressive"])
86
+ .optional()
87
+ .default("conservative")
88
+ .describe("Policy template (default: conservative)"),
89
+ dailyCapUsd: zod_1.z
90
+ .number()
91
+ .optional()
92
+ .describe("Custom daily spending cap in USD (overrides template)"),
93
+ allowedProtocols: zod_1.z
94
+ .array(zod_1.z.string())
95
+ .optional()
96
+ .describe("Custom allowed protocol program IDs (base58)"),
97
+ maxLeverageBps: zod_1.z
98
+ .number()
99
+ .optional()
100
+ .describe("Custom max leverage in basis points"),
101
+ rateLimit: zod_1.z
102
+ .number()
103
+ .optional()
104
+ .describe("Custom rate limit in transactions per minute"),
105
+ network: zod_1.z
106
+ .enum(["devnet", "mainnet-beta"])
107
+ .optional()
108
+ .default("devnet")
109
+ .describe("Solana network (default: devnet)"),
110
+ walletPath: zod_1.z
111
+ .string()
112
+ .optional()
113
+ .describe("Path to existing keypair JSON (generates new if omitted)"),
114
+ });
115
+ async function configure(_client, input) {
116
+ try {
117
+ const template = CONFIGURE_TEMPLATES[input.template] ??
118
+ CONFIGURE_TEMPLATES.conservative;
119
+ const dailyCapUsd = input.dailyCapUsd ?? template.dailyCapUsd;
120
+ const allowedProtocols = input.allowedProtocols ?? [
121
+ ...template.allowedProtocols,
122
+ ];
123
+ const maxLeverageBps = input.maxLeverageBps ?? template.maxLeverageBps;
124
+ const rateLimit = input.rateLimit ?? template.rateLimit;
125
+ // ── Tier 1: Shield (Software Controls) ──────────────────────
126
+ let walletPath = input.walletPath || null;
127
+ let walletPublicKey;
128
+ let walletType = "keypair";
129
+ if (walletPath) {
130
+ // Use existing keypair
131
+ const { Keypair } = await Promise.resolve().then(() => __importStar(require("@solana/web3.js")));
132
+ const resolved = walletPath.startsWith("~")
133
+ ? walletPath.replace("~", os.homedir())
134
+ : walletPath;
135
+ const raw = fs.readFileSync(resolved, "utf-8");
136
+ const kp = Keypair.fromSecretKey(Uint8Array.from(JSON.parse(raw)));
137
+ walletPublicKey = kp.publicKey.toBase58();
138
+ }
139
+ else {
140
+ // Generate new keypair
141
+ const { Keypair } = await Promise.resolve().then(() => __importStar(require("@solana/web3.js")));
142
+ const kp = Keypair.generate();
143
+ const walletsDir = path.join((0, config_1.getConfigDir)(), "wallets");
144
+ if (!fs.existsSync(walletsDir)) {
145
+ fs.mkdirSync(walletsDir, { recursive: true, mode: 0o700 });
146
+ }
147
+ walletPath = path.join(walletsDir, "agent.json");
148
+ fs.writeFileSync(walletPath, JSON.stringify(Array.from(kp.secretKey)), {
149
+ mode: 0o600,
150
+ });
151
+ walletPublicKey = kp.publicKey.toBase58();
152
+ }
153
+ const config = {
154
+ version: 1,
155
+ layers: {
156
+ shield: {
157
+ enabled: true,
158
+ dailyCapUsd,
159
+ allowedProtocols,
160
+ maxLeverageBps,
161
+ rateLimit,
162
+ },
163
+ tee: { enabled: false, locator: null, publicKey: null },
164
+ vault: {
165
+ enabled: false,
166
+ address: null,
167
+ owner: null,
168
+ vaultId: null,
169
+ },
170
+ },
171
+ wallet: {
172
+ type: walletType,
173
+ path: walletPath,
174
+ publicKey: walletPublicKey,
175
+ },
176
+ network: input.network,
177
+ template: input.template,
178
+ configuredAt: new Date().toISOString(),
179
+ };
180
+ const lines = [
181
+ "## AgentShield Configured — Tier 1 (Shield)",
182
+ "",
183
+ `**Wallet:** ${walletPublicKey}`,
184
+ `**Network:** ${config.network}`,
185
+ `**Template:** ${input.template}`,
186
+ `**Daily Cap:** $${dailyCapUsd}`,
187
+ `**Protocols:** ${allowedProtocols.length}`,
188
+ `**Max Leverage:** ${maxLeverageBps} BPS`,
189
+ ];
190
+ // ── Tier 2: TEE (Hardware Enclave) ──────────────────────────
191
+ if (input.tier >= 2) {
192
+ try {
193
+ const response = await fetch(`${ACTIONS_SERVER_URL}/api/actions/provision-tee`, {
194
+ method: "POST",
195
+ headers: { "Content-Type": "application/json" },
196
+ body: JSON.stringify({ network: input.network }),
197
+ });
198
+ if (!response.ok) {
199
+ const errorBody = await response.text();
200
+ return `Error provisioning TEE wallet: ${response.status} ${errorBody}`;
201
+ }
202
+ const teeResult = (await response.json());
203
+ config.layers.tee = {
204
+ enabled: true,
205
+ locator: teeResult.locator,
206
+ publicKey: teeResult.publicKey,
207
+ };
208
+ config.wallet.type = "crossmint";
209
+ // TEE wallet becomes the active wallet
210
+ config.wallet.publicKey = teeResult.publicKey;
211
+ lines[0] = "## AgentShield Configured — Tier 2 (Shield + TEE)";
212
+ lines.push("");
213
+ lines.push("### TEE Custody");
214
+ lines.push(`- **TEE Public Key:** ${teeResult.publicKey}`);
215
+ lines.push(`- **Locator:** ${teeResult.locator}`);
216
+ lines.push("- Your agent's private key is protected in a hardware enclave.");
217
+ lines.push("- **Disclosure:** Your TEE wallet is custodied by AgentShield's platform. You can export or migrate later.");
218
+ }
219
+ catch (error) {
220
+ const msg = error instanceof Error ? error.message : String(error);
221
+ return `Error connecting to AgentShield platform for TEE provisioning: ${msg}`;
222
+ }
223
+ }
224
+ // ── Tier 3: Vault (On-Chain Enforcement) ────────────────────
225
+ if (input.tier >= 3) {
226
+ // Generate provision Blink URL for user to sign
227
+ const params = new URLSearchParams();
228
+ params.set("template", input.template);
229
+ if (input.dailyCapUsd) {
230
+ params.set("dailyCap", input.dailyCapUsd.toString());
231
+ }
232
+ params.set("agentPubkey", config.wallet.publicKey);
233
+ const actionUrl = `${ACTIONS_SERVER_URL}/api/actions/provision?${params.toString()}`;
234
+ const blinkUrl = `https://dial.to/?action=solana-action:${encodeURIComponent(actionUrl)}`;
235
+ config.layers.vault.enabled = true;
236
+ // Vault address will be set after user signs the transaction
237
+ lines[0] = `## AgentShield Configured — Tier 3 (Shield + ${config.layers.tee.enabled ? "TEE + " : ""}Vault)`;
238
+ lines.push("");
239
+ lines.push("### On-Chain Vault");
240
+ lines.push("Your vault needs one more step — sign the creation transaction:");
241
+ lines.push(`1. **Blink URL:** ${blinkUrl}`);
242
+ lines.push(`2. **Action URL:** ${actionUrl}`);
243
+ lines.push("");
244
+ lines.push("After signing, your vault address will be saved automatically.");
245
+ if (!config.layers.tee.enabled) {
246
+ lines.push("");
247
+ lines.push("**Warning:** Your agent's private key is stored locally without hardware protection. " +
248
+ "We recommend adding TEE custody for production use.");
249
+ }
250
+ }
251
+ // Save config
252
+ (0, config_1.saveShieldConfig)(config);
253
+ lines.push("");
254
+ lines.push("### Next Steps");
255
+ if (input.tier === 1) {
256
+ lines.push("1. Fund your wallet with SOL and tokens");
257
+ lines.push("2. For production use, consider upgrading to Tier 2 (TEE) for hardware key protection");
258
+ lines.push("3. **Important:** Back up your keypair file. If you lose it, you lose access to your wallet.");
259
+ }
260
+ else if (input.tier === 2) {
261
+ lines.push("1. Fund your TEE wallet with SOL and tokens");
262
+ lines.push("2. For maximum security (>$5k/day), consider upgrading to Tier 3 (Vault)");
263
+ }
264
+ else {
265
+ lines.push("1. Sign the vault creation transaction using the link above");
266
+ lines.push("2. Fund your vault with SOL and tokens");
267
+ lines.push("3. You're ready to trade with full protection!");
268
+ }
269
+ return lines.join("\n");
270
+ }
271
+ catch (error) {
272
+ const msg = error instanceof Error ? error.message : String(error);
273
+ return `Error configuring AgentShield: ${msg}`;
274
+ }
275
+ }
276
+ exports.configureTool = {
277
+ name: "shield_configure",
278
+ description: "Set up AgentShield with any security tier. " +
279
+ "Tier 1 (Shield): software spending controls, free, instant. " +
280
+ "Tier 2 (Shield+TEE): adds hardware enclave key protection, free, ~30s. " +
281
+ "Tier 3 (Shield+TEE+Vault): adds on-chain policy enforcement, ~0.003 SOL, ~2min. " +
282
+ "Generates keypair, provisions TEE wallet, and/or creates vault Blink URL as needed.",
283
+ schema: exports.configureSchema,
284
+ handler: configure,
285
+ };
286
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/tools/configure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ export declare const fundWalletSchema: z.ZodObject<{
3
+ mint: z.ZodOptional<z.ZodString>;
4
+ amount: z.ZodOptional<z.ZodString>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ mint?: string | undefined;
7
+ amount?: string | undefined;
8
+ }, {
9
+ mint?: string | undefined;
10
+ amount?: string | undefined;
11
+ }>;
12
+ export type FundWalletInput = z.infer<typeof fundWalletSchema>;
13
+ /**
14
+ * Generate funding URLs for the configured wallet.
15
+ * Returns Blink URL (desktop), Solana Pay URL (mobile QR), and raw address.
16
+ */
17
+ export declare function fundWallet(_client: any, input: FundWalletInput): Promise<string>;
18
+ export declare const fundWalletTool: {
19
+ name: string;
20
+ description: string;
21
+ schema: z.ZodObject<{
22
+ mint: z.ZodOptional<z.ZodString>;
23
+ amount: z.ZodOptional<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ mint?: string | undefined;
26
+ amount?: string | undefined;
27
+ }, {
28
+ mint?: string | undefined;
29
+ amount?: string | undefined;
30
+ }>;
31
+ handler: typeof fundWallet;
32
+ };
33
+ //# sourceMappingURL=fund-wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fund-wallet.d.ts","sourceRoot":"","sources":["../../src/tools/fund-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,gBAAgB;;;;;;;;;EAa3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,CAqEjB;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAQ1B,CAAC"}