@cloakedagent/sdk 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 +90 -0
- package/dist/agent.d.ts +321 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +877 -0
- package/dist/agent.js.map +1 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -0
- package/dist/idl.json +1347 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +7 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +374 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +26 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +320 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +61 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +4 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/relayer.d.ts +130 -0
- package/dist/relayer.d.ts.map +1 -0
- package/dist/relayer.js +225 -0
- package/dist/relayer.js.map +1 -0
- package/dist/signer.d.ts +18 -0
- package/dist/signer.d.ts.map +1 -0
- package/dist/signer.js +34 -0
- package/dist/signer.js.map +1 -0
- package/dist/token.d.ts +320 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +896 -0
- package/dist/token.js.map +1 -0
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/zk/browser-prover.d.ts +85 -0
- package/dist/zk/browser-prover.d.ts.map +1 -0
- package/dist/zk/browser-prover.js +260 -0
- package/dist/zk/browser-prover.js.map +1 -0
- package/dist/zk/discovery.d.ts +65 -0
- package/dist/zk/discovery.d.ts.map +1 -0
- package/dist/zk/discovery.js +143 -0
- package/dist/zk/discovery.js.map +1 -0
- package/dist/zk/index.d.ts +14 -0
- package/dist/zk/index.d.ts.map +1 -0
- package/dist/zk/index.js +47 -0
- package/dist/zk/index.js.map +1 -0
- package/dist/zk/ownership_proof.json +1 -0
- package/dist/zk/poseidon.d.ts +31 -0
- package/dist/zk/poseidon.d.ts.map +1 -0
- package/dist/zk/poseidon.js +103 -0
- package/dist/zk/poseidon.js.map +1 -0
- package/dist/zk/prover.d.ts +49 -0
- package/dist/zk/prover.d.ts.map +1 -0
- package/dist/zk/prover.js +120 -0
- package/dist/zk/prover.js.map +1 -0
- package/dist/zk/secrets.d.ts +62 -0
- package/dist/zk/secrets.d.ts.map +1 -0
- package/dist/zk/secrets.js +98 -0
- package/dist/zk/secrets.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// sdk/src/mcp/tools.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.handleBalance = handleBalance;
|
|
5
|
+
exports.handleStatus = handleStatus;
|
|
6
|
+
exports.handlePay = handlePay;
|
|
7
|
+
exports.handleX402Fetch = handleX402Fetch;
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
const agent_1 = require("../agent");
|
|
10
|
+
/**
|
|
11
|
+
* Sanitize error messages to prevent key leakage
|
|
12
|
+
* Redacts base58-encoded strings that could be keys (32+ chars)
|
|
13
|
+
*/
|
|
14
|
+
function sanitizeErrorMessage(error) {
|
|
15
|
+
let message;
|
|
16
|
+
if (error instanceof Error) {
|
|
17
|
+
message = error.message;
|
|
18
|
+
}
|
|
19
|
+
else if (typeof error === "string") {
|
|
20
|
+
message = error;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// Don't use JSON.stringify on unknown objects - could leak keys
|
|
24
|
+
return "An error occurred";
|
|
25
|
+
}
|
|
26
|
+
// Redact potential base58 keys (32+ alphanumeric chars in base58 charset)
|
|
27
|
+
return message.replace(/[1-9A-HJ-NP-Za-km-z]{32,}/g, "[REDACTED]");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Tool handler for cloak_balance
|
|
31
|
+
* Returns enhanced balance info with constraints
|
|
32
|
+
*/
|
|
33
|
+
async function handleBalance(agentKey) {
|
|
34
|
+
const key = agentKey || process.env.CLOAKED_AGENT_KEY;
|
|
35
|
+
if (!key) {
|
|
36
|
+
throw new Error("No Agent Key provided and CLOAKED_AGENT_KEY not set");
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const rpcUrl = process.env.SOLANA_RPC_URL || "https://api.devnet.solana.com";
|
|
40
|
+
const agent = new agent_1.CloakedAgent(key, rpcUrl);
|
|
41
|
+
const state = await agent.getState();
|
|
42
|
+
// Calculate expires_in_days
|
|
43
|
+
let expiresInDays = null;
|
|
44
|
+
if (state.constraints.expiresAt) {
|
|
45
|
+
const now = Date.now();
|
|
46
|
+
const expiresAt = state.constraints.expiresAt.getTime();
|
|
47
|
+
expiresInDays = Math.max(0, Math.ceil((expiresAt - now) / (1000 * 60 * 60 * 24)));
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
balance_sol: state.balance / web3_js_1.LAMPORTS_PER_SOL,
|
|
51
|
+
balance_lamports: state.balance,
|
|
52
|
+
daily_spent: state.spending.dailySpent,
|
|
53
|
+
daily_limit: state.constraints.dailyLimit,
|
|
54
|
+
daily_remaining: state.spending.dailyRemaining === Number.MAX_SAFE_INTEGER ? -1 : state.spending.dailyRemaining,
|
|
55
|
+
total_spent: state.spending.totalSpent,
|
|
56
|
+
total_limit: state.constraints.totalLimit,
|
|
57
|
+
total_remaining: state.spending.totalRemaining === Number.MAX_SAFE_INTEGER ? -1 : state.spending.totalRemaining,
|
|
58
|
+
expires_in_days: expiresInDays,
|
|
59
|
+
frozen: state.constraints.frozen,
|
|
60
|
+
status: state.status,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
throw new Error(`Failed to get balance: ${sanitizeErrorMessage(error)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Tool handler for cloak_status
|
|
69
|
+
* Returns detailed agent status with health indicator
|
|
70
|
+
*/
|
|
71
|
+
async function handleStatus(agentKey) {
|
|
72
|
+
const key = agentKey || process.env.CLOAKED_AGENT_KEY;
|
|
73
|
+
if (!key) {
|
|
74
|
+
throw new Error("No Agent Key provided and CLOAKED_AGENT_KEY not set");
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const rpcUrl = process.env.SOLANA_RPC_URL || "https://api.devnet.solana.com";
|
|
78
|
+
const agent = new agent_1.CloakedAgent(key, rpcUrl);
|
|
79
|
+
const state = await agent.getState();
|
|
80
|
+
// Determine health status
|
|
81
|
+
let health = "ok";
|
|
82
|
+
if (state.status === "frozen") {
|
|
83
|
+
health = "frozen";
|
|
84
|
+
}
|
|
85
|
+
else if (state.status === "expired") {
|
|
86
|
+
health = "expired";
|
|
87
|
+
}
|
|
88
|
+
else if (state.balance < 0.01 * web3_js_1.LAMPORTS_PER_SOL) {
|
|
89
|
+
health = "low_balance";
|
|
90
|
+
}
|
|
91
|
+
else if (state.constraints.dailyLimit > 0 && state.spending.dailyRemaining < state.constraints.dailyLimit * 0.1) {
|
|
92
|
+
health = "near_daily_limit";
|
|
93
|
+
}
|
|
94
|
+
else if (state.constraints.totalLimit > 0 && state.spending.totalRemaining < state.constraints.totalLimit * 0.1) {
|
|
95
|
+
health = "near_total_limit";
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
constraints: {
|
|
99
|
+
max_per_tx: state.constraints.maxPerTx === 0 ? "unlimited" : state.constraints.maxPerTx,
|
|
100
|
+
daily_limit: state.constraints.dailyLimit === 0 ? "unlimited" : state.constraints.dailyLimit,
|
|
101
|
+
total_limit: state.constraints.totalLimit === 0 ? "unlimited" : state.constraints.totalLimit,
|
|
102
|
+
expires_at: state.constraints.expiresAt ? state.constraints.expiresAt.toISOString() : "never",
|
|
103
|
+
},
|
|
104
|
+
spending: {
|
|
105
|
+
balance_sol: state.balance / web3_js_1.LAMPORTS_PER_SOL,
|
|
106
|
+
daily_spent: state.spending.dailySpent,
|
|
107
|
+
total_spent: state.spending.totalSpent,
|
|
108
|
+
},
|
|
109
|
+
health,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
throw new Error(`Failed to get status: ${sanitizeErrorMessage(error)}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Tool handler for cloak_pay
|
|
118
|
+
* Pays to a destination address for x402 services
|
|
119
|
+
*/
|
|
120
|
+
async function handlePay(destination, amountSol, agentKey) {
|
|
121
|
+
const key = agentKey || process.env.CLOAKED_AGENT_KEY;
|
|
122
|
+
if (!key) {
|
|
123
|
+
throw new Error("No Agent Key provided and CLOAKED_AGENT_KEY not set");
|
|
124
|
+
}
|
|
125
|
+
const rpcUrl = process.env.SOLANA_RPC_URL || "https://api.devnet.solana.com";
|
|
126
|
+
const agent = new agent_1.CloakedAgent(key, rpcUrl);
|
|
127
|
+
const amountLamports = Math.floor(amountSol * web3_js_1.LAMPORTS_PER_SOL);
|
|
128
|
+
try {
|
|
129
|
+
const result = await agent.spend({
|
|
130
|
+
destination: new web3_js_1.PublicKey(destination),
|
|
131
|
+
amount: amountLamports,
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
success: true,
|
|
135
|
+
signature: result.signature,
|
|
136
|
+
remaining_balance: result.remainingBalance / web3_js_1.LAMPORTS_PER_SOL,
|
|
137
|
+
daily_remaining: result.dailyRemaining === Number.MAX_SAFE_INTEGER ? -1 : result.dailyRemaining / web3_js_1.LAMPORTS_PER_SOL,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
signature: "",
|
|
144
|
+
remaining_balance: 0,
|
|
145
|
+
daily_remaining: 0,
|
|
146
|
+
error: sanitizeErrorMessage(error),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Decode X-PAYMENT-REQUIRED header (base64 JSON)
|
|
152
|
+
*/
|
|
153
|
+
function decodePaymentRequired(encoded) {
|
|
154
|
+
const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
|
|
155
|
+
return JSON.parse(decoded);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Encode payment payload for X-PAYMENT header
|
|
159
|
+
*/
|
|
160
|
+
function encodePaymentPayload(signature) {
|
|
161
|
+
return Buffer.from(JSON.stringify({ signature })).toString('base64');
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Parse response content based on content-type
|
|
165
|
+
*/
|
|
166
|
+
async function parseResponseContent(response) {
|
|
167
|
+
const contentType = response.headers.get("content-type") || "application/octet-stream";
|
|
168
|
+
if (contentType.includes("application/json")) {
|
|
169
|
+
return { type: "json", content: await response.json(), contentType };
|
|
170
|
+
}
|
|
171
|
+
else if (contentType.includes("text/")) {
|
|
172
|
+
return { type: "text", content: await response.text(), contentType };
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// Binary - base64 encode
|
|
176
|
+
const buffer = await response.arrayBuffer();
|
|
177
|
+
return {
|
|
178
|
+
type: "binary",
|
|
179
|
+
content: Buffer.from(buffer).toString('base64'),
|
|
180
|
+
contentType
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Tool handler for cloak_x402_fetch
|
|
186
|
+
* Fetches x402-protected resources, automatically handling payment
|
|
187
|
+
*/
|
|
188
|
+
async function handleX402Fetch(url, options, agentKey) {
|
|
189
|
+
const key = agentKey || process.env.CLOAKED_AGENT_KEY;
|
|
190
|
+
if (!key) {
|
|
191
|
+
return {
|
|
192
|
+
success: false,
|
|
193
|
+
error: "No Agent Key provided and CLOAKED_AGENT_KEY not set",
|
|
194
|
+
statusCode: 0,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
const method = options?.method || "GET";
|
|
198
|
+
const customHeaders = options?.headers || {};
|
|
199
|
+
try {
|
|
200
|
+
// Step 1: Initial fetch
|
|
201
|
+
const initialResponse = await fetch(url, {
|
|
202
|
+
method,
|
|
203
|
+
headers: customHeaders,
|
|
204
|
+
body: options?.body,
|
|
205
|
+
});
|
|
206
|
+
// If not 402, return content directly
|
|
207
|
+
if (initialResponse.status !== 402) {
|
|
208
|
+
if (!initialResponse.ok) {
|
|
209
|
+
return {
|
|
210
|
+
success: false,
|
|
211
|
+
error: `HTTP ${initialResponse.status}: ${initialResponse.statusText}`,
|
|
212
|
+
statusCode: initialResponse.status,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
const parsed = await parseResponseContent(initialResponse);
|
|
216
|
+
return {
|
|
217
|
+
success: true,
|
|
218
|
+
...parsed,
|
|
219
|
+
statusCode: initialResponse.status,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// Step 2: Parse payment requirements from X-PAYMENT-REQUIRED header
|
|
223
|
+
const paymentRequiredHeader = initialResponse.headers.get("X-PAYMENT-REQUIRED");
|
|
224
|
+
if (!paymentRequiredHeader) {
|
|
225
|
+
return {
|
|
226
|
+
success: false,
|
|
227
|
+
error: "Received 402 but no X-PAYMENT-REQUIRED header found",
|
|
228
|
+
statusCode: 402,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
let requirements;
|
|
232
|
+
try {
|
|
233
|
+
requirements = decodePaymentRequired(paymentRequiredHeader);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return {
|
|
237
|
+
success: false,
|
|
238
|
+
error: "Failed to decode X-PAYMENT-REQUIRED header",
|
|
239
|
+
statusCode: 402,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
// Validate required fields
|
|
243
|
+
if (!requirements.payTo || typeof requirements.payTo !== 'string') {
|
|
244
|
+
return {
|
|
245
|
+
success: false,
|
|
246
|
+
error: "Invalid payment requirements: missing payTo address",
|
|
247
|
+
statusCode: 402,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
if (!requirements.amount || typeof requirements.amount !== 'string') {
|
|
251
|
+
return {
|
|
252
|
+
success: false,
|
|
253
|
+
error: "Invalid payment requirements: missing amount",
|
|
254
|
+
statusCode: 402,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
// Step 3: Make payment
|
|
258
|
+
const amountLamports = parseInt(requirements.amount, 10);
|
|
259
|
+
if (isNaN(amountLamports) || amountLamports <= 0) {
|
|
260
|
+
return {
|
|
261
|
+
success: false,
|
|
262
|
+
error: "Invalid payment amount in X-PAYMENT-REQUIRED header",
|
|
263
|
+
statusCode: 402,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
const amountSol = amountLamports / web3_js_1.LAMPORTS_PER_SOL;
|
|
267
|
+
const payResult = await handlePay(requirements.payTo, amountSol, key);
|
|
268
|
+
if (!payResult.success) {
|
|
269
|
+
return {
|
|
270
|
+
success: false,
|
|
271
|
+
error: `Payment failed: ${payResult.error}`,
|
|
272
|
+
statusCode: 402,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// Step 4: Retry with payment proof
|
|
276
|
+
const paymentPayload = encodePaymentPayload(payResult.signature);
|
|
277
|
+
const retryResponse = await fetch(url, {
|
|
278
|
+
method,
|
|
279
|
+
headers: {
|
|
280
|
+
...customHeaders,
|
|
281
|
+
"X-PAYMENT": paymentPayload,
|
|
282
|
+
},
|
|
283
|
+
body: options?.body,
|
|
284
|
+
});
|
|
285
|
+
if (!retryResponse.ok) {
|
|
286
|
+
return {
|
|
287
|
+
success: false,
|
|
288
|
+
error: `Payment accepted but resource fetch failed: HTTP ${retryResponse.status}`,
|
|
289
|
+
statusCode: retryResponse.status,
|
|
290
|
+
payment: {
|
|
291
|
+
signature: payResult.signature,
|
|
292
|
+
amount_sol: amountSol,
|
|
293
|
+
amount_lamports: amountLamports,
|
|
294
|
+
recipient: requirements.payTo,
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
// Step 5: Return content with payment info
|
|
299
|
+
const parsed = await parseResponseContent(retryResponse);
|
|
300
|
+
return {
|
|
301
|
+
success: true,
|
|
302
|
+
...parsed,
|
|
303
|
+
statusCode: retryResponse.status,
|
|
304
|
+
payment: {
|
|
305
|
+
signature: payResult.signature,
|
|
306
|
+
amount_sol: amountSol,
|
|
307
|
+
amount_lamports: amountLamports,
|
|
308
|
+
recipient: requirements.payTo,
|
|
309
|
+
},
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
return {
|
|
314
|
+
success: false,
|
|
315
|
+
error: sanitizeErrorMessage(error),
|
|
316
|
+
statusCode: 0,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response types for MCP tools
|
|
3
|
+
*/
|
|
4
|
+
export interface BalanceResponse {
|
|
5
|
+
balance_sol: number;
|
|
6
|
+
balance_lamports: number;
|
|
7
|
+
daily_spent: number;
|
|
8
|
+
daily_limit: number;
|
|
9
|
+
daily_remaining: number;
|
|
10
|
+
total_spent: number;
|
|
11
|
+
total_limit: number;
|
|
12
|
+
total_remaining: number;
|
|
13
|
+
expires_in_days: number | null;
|
|
14
|
+
frozen: boolean;
|
|
15
|
+
status: string;
|
|
16
|
+
}
|
|
17
|
+
export interface StatusResponse {
|
|
18
|
+
constraints: {
|
|
19
|
+
max_per_tx: number | string;
|
|
20
|
+
daily_limit: number | string;
|
|
21
|
+
total_limit: number | string;
|
|
22
|
+
expires_at: string;
|
|
23
|
+
};
|
|
24
|
+
spending: {
|
|
25
|
+
balance_sol: number;
|
|
26
|
+
daily_spent: number;
|
|
27
|
+
total_spent: number;
|
|
28
|
+
};
|
|
29
|
+
health: string;
|
|
30
|
+
}
|
|
31
|
+
export interface PayResponse {
|
|
32
|
+
success: boolean;
|
|
33
|
+
signature: string;
|
|
34
|
+
remaining_balance: number;
|
|
35
|
+
daily_remaining: number;
|
|
36
|
+
error?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ErrorResponse {
|
|
39
|
+
error: string;
|
|
40
|
+
}
|
|
41
|
+
export interface X402FetchResponse {
|
|
42
|
+
success: boolean;
|
|
43
|
+
type?: "json" | "text" | "binary";
|
|
44
|
+
content?: unknown;
|
|
45
|
+
contentType?: string;
|
|
46
|
+
payment?: {
|
|
47
|
+
signature: string;
|
|
48
|
+
amount_sol: number;
|
|
49
|
+
amount_lamports: number;
|
|
50
|
+
recipient: string;
|
|
51
|
+
};
|
|
52
|
+
error?: string;
|
|
53
|
+
statusCode: number;
|
|
54
|
+
}
|
|
55
|
+
export interface X402PaymentRequirements {
|
|
56
|
+
payTo: string;
|
|
57
|
+
amount: string;
|
|
58
|
+
currency: string;
|
|
59
|
+
network: string;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAGH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":";AAAA,uBAAuB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relayer Client for Truly Private Cloaked Agent Creation
|
|
3
|
+
*
|
|
4
|
+
* Handles communication with the backend relayer service for creating
|
|
5
|
+
* agents without the user's wallet signing any on-chain transaction.
|
|
6
|
+
*
|
|
7
|
+
* Security:
|
|
8
|
+
* - Agent Key encrypted with NaCl box (X25519) - decrypted client-side
|
|
9
|
+
* - User's wallet only signs "Cloak Private Agent" message for secret derivation
|
|
10
|
+
* - User's wallet NEVER appears in any on-chain transaction
|
|
11
|
+
*
|
|
12
|
+
* Economics:
|
|
13
|
+
* - User sends total (0.01 SOL fee + funding) to relayer via Privacy Cash
|
|
14
|
+
* - Relayer keeps 0.01 SOL fee, forwards rest to vault
|
|
15
|
+
*/
|
|
16
|
+
import { PublicKey } from "@solana/web3.js";
|
|
17
|
+
/** Options for creating a private agent via relayer */
|
|
18
|
+
export interface CreatePrivateViaRelayerOptions {
|
|
19
|
+
maxPerTx?: number;
|
|
20
|
+
dailyLimit?: number;
|
|
21
|
+
totalLimit?: number;
|
|
22
|
+
expiresAt?: Date | null;
|
|
23
|
+
}
|
|
24
|
+
/** Result from creating a Cloaked Agent via relayer */
|
|
25
|
+
export interface CreatePrivateViaRelayerResult {
|
|
26
|
+
agentKey: string;
|
|
27
|
+
agentStatePda: PublicKey;
|
|
28
|
+
vaultPda: PublicKey;
|
|
29
|
+
delegate: PublicKey;
|
|
30
|
+
signature: string;
|
|
31
|
+
}
|
|
32
|
+
/** Relayer status response */
|
|
33
|
+
export interface RelayerStatus {
|
|
34
|
+
address: string;
|
|
35
|
+
balance: number;
|
|
36
|
+
minBalance: number;
|
|
37
|
+
ready: boolean;
|
|
38
|
+
creationFee: number;
|
|
39
|
+
minDeposit: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get relayer status
|
|
43
|
+
*
|
|
44
|
+
* @param apiUrl - Optional API URL (defaults to CLOAK_API_URL or localhost:3645)
|
|
45
|
+
* @returns Relayer status including balance and readiness
|
|
46
|
+
*/
|
|
47
|
+
export declare function getRelayerStatus(apiUrl?: string): Promise<RelayerStatus>;
|
|
48
|
+
/**
|
|
49
|
+
* Create a Cloaked Agent via relayer
|
|
50
|
+
*
|
|
51
|
+
* The relayer signs and pays for the transaction, ensuring the user's wallet
|
|
52
|
+
* never appears on-chain. The Agent Key is encrypted and only the user can decrypt it.
|
|
53
|
+
*
|
|
54
|
+
* Flow:
|
|
55
|
+
* 1. User sends total (fee + funding) to relayer via Privacy Cash
|
|
56
|
+
* 2. Call this function with the deposit tx signature
|
|
57
|
+
* 3. Relayer keeps 0.01 SOL fee, forwards rest to vault
|
|
58
|
+
* 4. Relayer creates agent, encrypts Agent Key for user
|
|
59
|
+
*
|
|
60
|
+
* @param masterSecret - Master secret derived from wallet signature
|
|
61
|
+
* @param nonce - Agent index (0, 1, 2, ...)
|
|
62
|
+
* @param options - Agent creation options
|
|
63
|
+
* @param depositSignature - Privacy Cash tx signature to relayer
|
|
64
|
+
* @param depositAmount - Total lamports sent (fee + vault funding)
|
|
65
|
+
* @param apiUrl - Optional API URL
|
|
66
|
+
* @returns Agent Key and PDA addresses
|
|
67
|
+
*/
|
|
68
|
+
export declare function createPrivateAgentViaRelayer(masterSecret: bigint, nonce: number, options: CreatePrivateViaRelayerOptions, depositSignature: string, depositAmount: number, apiUrl?: string): Promise<CreatePrivateViaRelayerResult>;
|
|
69
|
+
/** Private operation parameters for relayer */
|
|
70
|
+
export interface PrivateOperationParams {
|
|
71
|
+
agentStatePda: string;
|
|
72
|
+
proofBytes: number[];
|
|
73
|
+
witnessBytes: number[];
|
|
74
|
+
}
|
|
75
|
+
/** Update constraints private parameters */
|
|
76
|
+
export interface UpdateConstraintsPrivateParams extends PrivateOperationParams {
|
|
77
|
+
maxPerTx: number | null;
|
|
78
|
+
dailyLimit: number | null;
|
|
79
|
+
totalLimit: number | null;
|
|
80
|
+
expiresAt: number | null;
|
|
81
|
+
}
|
|
82
|
+
/** Withdraw private parameters */
|
|
83
|
+
export interface WithdrawPrivateParams extends PrivateOperationParams {
|
|
84
|
+
amount: number;
|
|
85
|
+
destination: string;
|
|
86
|
+
}
|
|
87
|
+
/** Close private parameters */
|
|
88
|
+
export interface ClosePrivateParams extends PrivateOperationParams {
|
|
89
|
+
destination: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Freeze a private agent via relayer
|
|
93
|
+
*/
|
|
94
|
+
export declare function freezePrivateViaRelayer(params: PrivateOperationParams, apiUrl?: string): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Unfreeze a private agent via relayer
|
|
97
|
+
*/
|
|
98
|
+
export declare function unfreezePrivateViaRelayer(params: PrivateOperationParams, apiUrl?: string): Promise<string>;
|
|
99
|
+
/**
|
|
100
|
+
* Update constraints for a private agent via relayer
|
|
101
|
+
*/
|
|
102
|
+
export declare function updateConstraintsPrivateViaRelayer(params: UpdateConstraintsPrivateParams, apiUrl?: string): Promise<string>;
|
|
103
|
+
/**
|
|
104
|
+
* Withdraw from a private agent via relayer
|
|
105
|
+
*/
|
|
106
|
+
export declare function withdrawPrivateViaRelayer(params: WithdrawPrivateParams, apiUrl?: string): Promise<string>;
|
|
107
|
+
/**
|
|
108
|
+
* Close a private agent via relayer
|
|
109
|
+
*/
|
|
110
|
+
export declare function closePrivateViaRelayer(params: ClosePrivateParams, apiUrl?: string): Promise<string>;
|
|
111
|
+
/**
|
|
112
|
+
* Co-sign and submit a spend transaction via relayer
|
|
113
|
+
*
|
|
114
|
+
* The SDK builds the transaction, delegate signs, then sends to relayer.
|
|
115
|
+
* Relayer adds its signature as fee payer and submits to the network.
|
|
116
|
+
*
|
|
117
|
+
* @param transactionBase64 - Base64 encoded partially-signed transaction
|
|
118
|
+
* @param apiUrl - Optional API URL
|
|
119
|
+
* @returns Transaction signature
|
|
120
|
+
*/
|
|
121
|
+
export declare function cosignSpendViaRelayer(transactionBase64: string, apiUrl?: string): Promise<string>;
|
|
122
|
+
/**
|
|
123
|
+
* Get the relayer public key for use as fee payer
|
|
124
|
+
* Uses lightweight /pubkey endpoint that doesn't require RPC calls
|
|
125
|
+
*
|
|
126
|
+
* @param apiUrl - Optional API URL
|
|
127
|
+
* @returns Relayer public key
|
|
128
|
+
*/
|
|
129
|
+
export declare function getRelayerPublicKey(apiUrl?: string): Promise<PublicKey>;
|
|
130
|
+
//# sourceMappingURL=relayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../src/relayer.ts"],"names":[],"mappings":"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"}
|