@agent-shield/sdk 0.3.1 → 0.5.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.
Files changed (58) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +14 -22
  3. package/dist/idl-json.d.ts +3 -3
  4. package/dist/idl-json.d.ts.map +1 -1
  5. package/dist/idl-json.js +2020 -2942
  6. package/dist/idl-json.js.map +1 -1
  7. package/dist/idl.d.ts +1403 -2057
  8. package/dist/idl.d.ts.map +1 -1
  9. package/dist/index.d.ts +5 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +46 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/instructions.d.ts +893 -893
  14. package/dist/types.d.ts +2 -2
  15. package/dist/types.d.ts.map +1 -1
  16. package/dist/types.js +2 -2
  17. package/dist/types.js.map +1 -1
  18. package/dist/wrapper/engine.d.ts +17 -0
  19. package/dist/wrapper/engine.d.ts.map +1 -0
  20. package/dist/wrapper/engine.js +45 -0
  21. package/dist/wrapper/engine.js.map +1 -0
  22. package/dist/wrapper/errors.d.ts +10 -0
  23. package/dist/wrapper/errors.d.ts.map +1 -0
  24. package/dist/wrapper/errors.js +20 -0
  25. package/dist/wrapper/errors.js.map +1 -0
  26. package/dist/wrapper/harden.d.ts +119 -0
  27. package/dist/wrapper/harden.d.ts.map +1 -0
  28. package/dist/wrapper/harden.js +399 -0
  29. package/dist/wrapper/harden.js.map +1 -0
  30. package/dist/wrapper/index.d.ts +17 -0
  31. package/dist/wrapper/index.d.ts.map +1 -0
  32. package/dist/wrapper/index.js +60 -0
  33. package/dist/wrapper/index.js.map +1 -0
  34. package/dist/wrapper/inspector.d.ts +22 -0
  35. package/dist/wrapper/inspector.d.ts.map +1 -0
  36. package/dist/wrapper/inspector.js +175 -0
  37. package/dist/wrapper/inspector.js.map +1 -0
  38. package/dist/wrapper/policies.d.ts +78 -0
  39. package/dist/wrapper/policies.d.ts.map +1 -0
  40. package/dist/wrapper/policies.js +108 -0
  41. package/dist/wrapper/policies.js.map +1 -0
  42. package/dist/wrapper/registry.d.ts +24 -0
  43. package/dist/wrapper/registry.d.ts.map +1 -0
  44. package/dist/wrapper/registry.js +43 -0
  45. package/dist/wrapper/registry.js.map +1 -0
  46. package/dist/wrapper/shield.d.ts +86 -0
  47. package/dist/wrapper/shield.d.ts.map +1 -0
  48. package/dist/wrapper/shield.js +226 -0
  49. package/dist/wrapper/shield.js.map +1 -0
  50. package/dist/wrapper/state.d.ts +3 -0
  51. package/dist/wrapper/state.d.ts.map +1 -0
  52. package/dist/wrapper/state.js +6 -0
  53. package/dist/wrapper/state.js.map +1 -0
  54. package/dist/wrapper/x402.d.ts +151 -0
  55. package/dist/wrapper/x402.d.ts.map +1 -0
  56. package/dist/wrapper/x402.js +326 -0
  57. package/dist/wrapper/x402.js.map +1 -0
  58. package/package.json +15 -11
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.X402UnsupportedError = exports.X402PaymentError = exports.X402ParseError = void 0;
4
+ exports.decodePaymentRequiredHeader = decodePaymentRequiredHeader;
5
+ exports.encodePaymentSignatureHeader = encodePaymentSignatureHeader;
6
+ exports.decodePaymentResponseHeader = decodePaymentResponseHeader;
7
+ exports.selectPaymentOption = selectPaymentOption;
8
+ exports.evaluateX402Payment = evaluateX402Payment;
9
+ exports.buildX402TransferInstruction = buildX402TransferInstruction;
10
+ exports.encodeX402Payload = encodeX402Payload;
11
+ exports.shieldedFetch = shieldedFetch;
12
+ exports.createShieldedFetchForWallet = createShieldedFetchForWallet;
13
+ /**
14
+ * x402 — HTTP 402 Payment Required support for shielded wallets.
15
+ *
16
+ * Implements the x402 V2 protocol (coinbase/x402) for machine-to-machine
17
+ * crypto payments. The client signs a payment, retries with PAYMENT-SIGNATURE
18
+ * header, and the API server settles via a facilitator.
19
+ *
20
+ * @see https://x402.org
21
+ */
22
+ const web3_js_1 = require("@solana/web3.js");
23
+ const spl_token_1 = require("@solana/spl-token");
24
+ const engine_1 = require("./engine");
25
+ const errors_1 = require("./errors");
26
+ const registry_1 = require("./registry");
27
+ // ---------------------------------------------------------------------------
28
+ // Errors
29
+ // ---------------------------------------------------------------------------
30
+ class X402ParseError extends Error {
31
+ constructor(message) {
32
+ super(`x402 parse error: ${message}`);
33
+ this.name = "X402ParseError";
34
+ }
35
+ }
36
+ exports.X402ParseError = X402ParseError;
37
+ class X402PaymentError extends Error {
38
+ constructor(message) {
39
+ super(`x402 payment error: ${message}`);
40
+ this.name = "X402PaymentError";
41
+ }
42
+ }
43
+ exports.X402PaymentError = X402PaymentError;
44
+ class X402UnsupportedError extends Error {
45
+ constructor(message) {
46
+ super(`x402 unsupported: ${message}`);
47
+ this.name = "X402UnsupportedError";
48
+ }
49
+ }
50
+ exports.X402UnsupportedError = X402UnsupportedError;
51
+ // ---------------------------------------------------------------------------
52
+ // Header encoding / decoding
53
+ // ---------------------------------------------------------------------------
54
+ function base64Encode(data) {
55
+ if (typeof Buffer !== "undefined") {
56
+ return Buffer.from(data, "utf-8").toString("base64");
57
+ }
58
+ return btoa(data);
59
+ }
60
+ function base64Decode(encoded) {
61
+ if (typeof Buffer !== "undefined") {
62
+ return Buffer.from(encoded, "base64").toString("utf-8");
63
+ }
64
+ return atob(encoded);
65
+ }
66
+ /**
67
+ * Decode a base64-encoded PAYMENT-REQUIRED header value.
68
+ */
69
+ function decodePaymentRequiredHeader(header) {
70
+ try {
71
+ const json = base64Decode(header);
72
+ const parsed = JSON.parse(json);
73
+ if (!parsed.accepts || !Array.isArray(parsed.accepts)) {
74
+ throw new Error("missing accepts array");
75
+ }
76
+ return parsed;
77
+ }
78
+ catch (err) {
79
+ throw new X402ParseError(`Failed to decode PAYMENT-REQUIRED header: ${err.message}`);
80
+ }
81
+ }
82
+ /**
83
+ * Encode a PaymentPayload as a base64 string for PAYMENT-SIGNATURE header.
84
+ */
85
+ function encodePaymentSignatureHeader(payload) {
86
+ return base64Encode(JSON.stringify(payload));
87
+ }
88
+ /**
89
+ * Decode a base64-encoded PAYMENT-RESPONSE header value.
90
+ */
91
+ function decodePaymentResponseHeader(header) {
92
+ try {
93
+ return JSON.parse(base64Decode(header));
94
+ }
95
+ catch (err) {
96
+ throw new X402ParseError(`Failed to decode PAYMENT-RESPONSE header: ${err.message}`);
97
+ }
98
+ }
99
+ // ---------------------------------------------------------------------------
100
+ // Payment option selection
101
+ // ---------------------------------------------------------------------------
102
+ /**
103
+ * Select a Solana-compatible payment option from the accepts array.
104
+ *
105
+ * @param paymentRequired The decoded PAYMENT-REQUIRED payload
106
+ * @param allowedTokens Optional set of token mint addresses to accept
107
+ * @returns The first matching PaymentRequirements, or throws
108
+ */
109
+ function selectPaymentOption(paymentRequired, allowedTokens) {
110
+ for (const option of paymentRequired.accepts) {
111
+ // Network must start with "solana:" (CAIP-2 format)
112
+ if (!option.network.startsWith("solana:")) {
113
+ continue;
114
+ }
115
+ // If token filter provided, asset must be in the allowlist
116
+ if (allowedTokens && !allowedTokens.has(option.asset)) {
117
+ continue;
118
+ }
119
+ return option;
120
+ }
121
+ throw new X402UnsupportedError("No compatible Solana payment option found in accepts array");
122
+ }
123
+ // ---------------------------------------------------------------------------
124
+ // Policy evaluation (pre-check only — does NOT record spend)
125
+ // ---------------------------------------------------------------------------
126
+ /**
127
+ * Evaluate an x402 payment against shield policies without recording spend.
128
+ *
129
+ * Creates a synthetic TransactionAnalysis from the payment requirements
130
+ * and runs it through the existing policy engine.
131
+ */
132
+ function evaluateX402Payment(selected, policies, state) {
133
+ const analysis = {
134
+ programIds: [spl_token_1.TOKEN_PROGRAM_ID],
135
+ transfers: [
136
+ {
137
+ mint: new web3_js_1.PublicKey(selected.asset),
138
+ amount: BigInt(selected.amount),
139
+ direction: "outgoing",
140
+ destination: new web3_js_1.PublicKey(selected.payTo),
141
+ },
142
+ ],
143
+ estimatedValueLamports: BigInt(selected.amount),
144
+ };
145
+ return (0, engine_1.evaluatePolicy)(analysis, policies, state);
146
+ }
147
+ // ---------------------------------------------------------------------------
148
+ // Transfer instruction builder
149
+ // ---------------------------------------------------------------------------
150
+ /**
151
+ * Build an SPL TransferChecked instruction for an x402 payment.
152
+ */
153
+ function buildX402TransferInstruction(params) {
154
+ const sourceAta = (0, spl_token_1.getAssociatedTokenAddressSync)(params.asset, params.from);
155
+ const destAta = (0, spl_token_1.getAssociatedTokenAddressSync)(params.asset, params.payTo);
156
+ return (0, spl_token_1.createTransferCheckedInstruction)(sourceAta, params.asset, destAta, params.from, params.amount, params.decimals);
157
+ }
158
+ // ---------------------------------------------------------------------------
159
+ // Payload encoding
160
+ // ---------------------------------------------------------------------------
161
+ /**
162
+ * Encode a signed transaction into a full x402 V2 PaymentPayload.
163
+ */
164
+ function encodeX402Payload(signedTx, resource, accepted) {
165
+ const txBase64 = base64Encode(String.fromCharCode(...signedTx));
166
+ const payload = {
167
+ x402Version: 2,
168
+ resource,
169
+ accepted,
170
+ payload: { transaction: txBase64 },
171
+ extensions: {},
172
+ };
173
+ return encodePaymentSignatureHeader(payload);
174
+ }
175
+ // ---------------------------------------------------------------------------
176
+ // Core: shieldedFetch
177
+ // ---------------------------------------------------------------------------
178
+ /**
179
+ * Fetch a URL with automatic x402 payment support.
180
+ *
181
+ * Flow:
182
+ * 1. Make the initial HTTP request
183
+ * 2. If 402, parse PAYMENT-REQUIRED header
184
+ * 3. Select a Solana payment option
185
+ * 4. Evaluate against shield policies (fast deny)
186
+ * 5. Build, sign, and encode payment transaction
187
+ * 6. Retry with PAYMENT-SIGNATURE header
188
+ * 7. Return response with x402 metadata
189
+ *
190
+ * The client NEVER settles — the API server calls the facilitator.
191
+ */
192
+ async function shieldedFetch(wallet, url, options) {
193
+ const init = { ...options };
194
+ const connection = options?.connection;
195
+ const dryRun = options?.dryRun ?? false;
196
+ // Strip our custom options from the fetch init
197
+ delete init.connection;
198
+ delete init.dryRun;
199
+ // Step 1: Initial request
200
+ const response = await globalThis.fetch(url.toString(), init);
201
+ // Non-402 responses pass through unchanged
202
+ if (response.status !== 402) {
203
+ return response;
204
+ }
205
+ // Step 2: Extract PAYMENT-REQUIRED header (case-insensitive)
206
+ const paymentRequiredHeader = response.headers.get("payment-required") ??
207
+ response.headers.get("PAYMENT-REQUIRED");
208
+ if (!paymentRequiredHeader) {
209
+ // Non-x402 402 response — return as-is
210
+ return response;
211
+ }
212
+ // Step 3: Prevent infinite retry loops — reject if already attempted
213
+ const hasPaymentHeader = (() => {
214
+ if (!init.headers)
215
+ return false;
216
+ if (init.headers instanceof Headers) {
217
+ return (init.headers.has("PAYMENT-SIGNATURE") ||
218
+ init.headers.has("payment-signature"));
219
+ }
220
+ if (Array.isArray(init.headers)) {
221
+ return init.headers.some(([k]) => k.toLowerCase() === "payment-signature");
222
+ }
223
+ const rec = init.headers;
224
+ return "PAYMENT-SIGNATURE" in rec || "payment-signature" in rec;
225
+ })();
226
+ if (hasPaymentHeader) {
227
+ throw new X402PaymentError("Payment already attempted — refusing to retry to prevent infinite loops");
228
+ }
229
+ // Step 4: Decode header
230
+ const paymentRequired = decodePaymentRequiredHeader(paymentRequiredHeader);
231
+ // Step 5: Select a Solana payment option
232
+ const allowedTokens = wallet.resolvedPolicies.allowedTokens
233
+ ? new Set(wallet.resolvedPolicies.allowedTokens)
234
+ : undefined;
235
+ const selected = selectPaymentOption(paymentRequired, allowedTokens);
236
+ // Step 5: Policy pre-check (does NOT record spend)
237
+ const violations = evaluateX402Payment(selected, wallet.resolvedPolicies, wallet.shieldState);
238
+ if (violations.length > 0) {
239
+ throw new errors_1.ShieldDeniedError(violations);
240
+ }
241
+ // Step 6: Dry run — return metadata without paying
242
+ if (dryRun) {
243
+ const dryResponse = new Response(null, {
244
+ status: 402,
245
+ });
246
+ dryResponse.x402 = {
247
+ paid: false,
248
+ amountPaid: selected.amount,
249
+ asset: selected.asset,
250
+ payTo: selected.payTo,
251
+ };
252
+ return dryResponse;
253
+ }
254
+ // Step 7: Build and sign the payment transaction
255
+ const assetPubkey = new web3_js_1.PublicKey(selected.asset);
256
+ const tokenInfo = (0, registry_1.getTokenInfo)(assetPubkey);
257
+ const decimals = tokenInfo?.decimals ?? 6; // USDC default
258
+ if (!connection) {
259
+ throw new X402PaymentError("Connection required for x402 payments. Pass connection in ShieldedFetchOptions.");
260
+ }
261
+ const transferIx = buildX402TransferInstruction({
262
+ from: wallet.publicKey,
263
+ payTo: new web3_js_1.PublicKey(selected.payTo),
264
+ asset: assetPubkey,
265
+ amount: BigInt(selected.amount),
266
+ decimals,
267
+ });
268
+ const tx = new web3_js_1.Transaction();
269
+ tx.add(transferIx);
270
+ const { blockhash } = await connection.getLatestBlockhash();
271
+ tx.recentBlockhash = blockhash;
272
+ tx.feePayer = wallet.publicKey;
273
+ // For client-side wallets: signTransaction runs through the shield interceptor
274
+ // which evaluates policies AND records the spend.
275
+ // For hardened wallets: the shield interceptor wraps in vault composition.
276
+ const signedTx = await wallet.signTransaction(tx);
277
+ const serialized = signedTx.serialize({
278
+ verifySignatures: false,
279
+ });
280
+ // Step 8: Encode the payment payload
281
+ const encodedPayload = encodeX402Payload(serialized, paymentRequired.resource, selected);
282
+ // Step 10: Retry with PAYMENT-SIGNATURE header
283
+ const retryHeaders = new Headers(init.headers);
284
+ retryHeaders.set("PAYMENT-SIGNATURE", encodedPayload);
285
+ const retryResponse = (await globalThis.fetch(url.toString(), {
286
+ ...init,
287
+ headers: retryHeaders,
288
+ }));
289
+ // Step 10: Parse PAYMENT-RESPONSE header if present
290
+ const paymentResponseHeader = retryResponse.headers.get("payment-response") ??
291
+ retryResponse.headers.get("PAYMENT-RESPONSE");
292
+ let settlement;
293
+ if (paymentResponseHeader) {
294
+ try {
295
+ settlement = decodePaymentResponseHeader(paymentResponseHeader);
296
+ }
297
+ catch {
298
+ // Non-fatal — settlement data is optional
299
+ }
300
+ }
301
+ // Attach x402 metadata
302
+ retryResponse.x402 = {
303
+ paid: true,
304
+ amountPaid: selected.amount,
305
+ asset: selected.asset,
306
+ payTo: selected.payTo,
307
+ settlement,
308
+ };
309
+ return retryResponse;
310
+ }
311
+ // ---------------------------------------------------------------------------
312
+ // Factory
313
+ // ---------------------------------------------------------------------------
314
+ /**
315
+ * Create a wallet-bound fetch function with automatic x402 payment support.
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * const fetch = createShieldedFetchForWallet(shieldedWallet, { connection });
320
+ * const res = await fetch('https://api.example.com/paid-endpoint');
321
+ * ```
322
+ */
323
+ function createShieldedFetchForWallet(wallet, defaults) {
324
+ return (url, init) => shieldedFetch(wallet, url, { ...defaults, ...init });
325
+ }
326
+ //# sourceMappingURL=x402.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/wrapper/x402.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-shield/sdk",
3
- "version": "0.3.1",
3
+ "version": "0.5.1",
4
4
  "author": "Kaleb Rupe (https://x.com/MightieMags)",
5
5
  "homepage": "https://github.com/Kaleb-Rupe/agentshield#readme",
6
6
  "bugs": {
@@ -11,26 +11,25 @@
11
11
  "main": "dist/index.js",
12
12
  "module": "dist/index.js",
13
13
  "types": "dist/index.d.ts",
14
- "files": ["dist", "README.md"],
14
+ "files": [
15
+ "dist",
16
+ "README.md"
17
+ ],
15
18
  "sideEffects": false,
16
19
  "engines": {
17
20
  "node": ">=18.0.0"
18
21
  },
19
- "scripts": {
20
- "build": "tsc",
21
- "clean": "rm -rf dist",
22
- "test": "mocha --require ts-node/register tests/**/*.test.ts --timeout 30000",
23
- "prepublishOnly": "npm run clean && npm run build"
24
- },
25
22
  "dependencies": {
26
- "@solana/spl-token": "^0.4.0"
23
+ "@solana/spl-token": "^0.4.0",
24
+ "@x402/core": "^2.4.0",
25
+ "@agent-shield/core": "0.1.4"
27
26
  },
28
27
  "peerDependencies": {
29
28
  "@coral-xyz/anchor": "^0.32.1",
30
29
  "@solana/web3.js": "^1.95.0"
31
30
  },
32
31
  "optionalDependencies": {
33
- "flash-sdk": "^14.0.0"
32
+ "flash-sdk": "^14.1.1"
34
33
  },
35
34
  "devDependencies": {
36
35
  "@types/bn.js": "^5.1.5",
@@ -56,5 +55,10 @@
56
55
  "type": "git",
57
56
  "url": "https://github.com/Kaleb-Rupe/agentshield",
58
57
  "directory": "sdk/typescript"
58
+ },
59
+ "scripts": {
60
+ "build": "tsc",
61
+ "clean": "rm -rf dist",
62
+ "test": "mocha --require ts-node/register tests/**/*.test.ts --timeout 30000"
59
63
  }
60
- }
64
+ }