@agent-shield/sdk 0.1.6 → 0.3.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.
Files changed (49) hide show
  1. package/README.md +14 -12
  2. package/dist/accounts.d.ts +5 -3
  3. package/dist/accounts.d.ts.map +1 -1
  4. package/dist/accounts.js +23 -4
  5. package/dist/accounts.js.map +1 -1
  6. package/dist/client.d.ts +24 -5
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +73 -9
  9. package/dist/client.js.map +1 -1
  10. package/dist/composer.d.ts.map +1 -1
  11. package/dist/composer.js +3 -3
  12. package/dist/composer.js.map +1 -1
  13. package/dist/idl-json.d.ts +731 -33
  14. package/dist/idl-json.d.ts.map +1 -1
  15. package/dist/idl-json.js +1258 -54
  16. package/dist/idl-json.js.map +1 -1
  17. package/dist/idl.d.ts +1363 -159
  18. package/dist/idl.d.ts.map +1 -1
  19. package/dist/index.d.ts +7 -4
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +26 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/instructions.d.ts +658 -64
  24. package/dist/instructions.d.ts.map +1 -1
  25. package/dist/instructions.js +78 -8
  26. package/dist/instructions.js.map +1 -1
  27. package/dist/integrations/flash-trade.d.ts.map +1 -1
  28. package/dist/integrations/flash-trade.js +14 -6
  29. package/dist/integrations/flash-trade.js.map +1 -1
  30. package/dist/integrations/jupiter.d.ts.map +1 -1
  31. package/dist/integrations/jupiter.js +4 -1
  32. package/dist/integrations/jupiter.js.map +1 -1
  33. package/dist/oracle.d.ts +31 -0
  34. package/dist/oracle.d.ts.map +1 -0
  35. package/dist/oracle.js +57 -0
  36. package/dist/oracle.js.map +1 -0
  37. package/dist/rewriter.d.ts +21 -0
  38. package/dist/rewriter.d.ts.map +1 -0
  39. package/dist/rewriter.js +33 -0
  40. package/dist/rewriter.js.map +1 -0
  41. package/dist/types.d.ts +109 -13
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js +15 -1
  44. package/dist/types.js.map +1 -1
  45. package/dist/wrap.d.ts +60 -0
  46. package/dist/wrap.d.ts.map +1 -0
  47. package/dist/wrap.js +88 -0
  48. package/dist/wrap.js.map +1 -0
  49. package/package.json +13 -2
package/dist/types.d.ts CHANGED
@@ -7,6 +7,36 @@ export declare const FEE_RATE_DENOMINATOR = 1000000;
7
7
  export declare const PROTOCOL_FEE_RATE = 20;
8
8
  export declare const MAX_DEVELOPER_FEE_RATE = 50;
9
9
  export declare const PROTOCOL_TREASURY: PublicKey;
10
+ export declare const USD_DECIMALS = 6;
11
+ export declare const UNPRICED_SENTINEL: PublicKey;
12
+ /** Tracker capacity tier — determines max rolling spend entries */
13
+ export declare enum TrackerTier {
14
+ /** 200 entries (~16 KB, ~0.11 SOL rent) */
15
+ Standard = 0,
16
+ /** 500 entries (~33 KB, ~0.23 SOL rent) */
17
+ Pro = 1,
18
+ /** 1000 entries (~61 KB, ~0.42 SOL rent) */
19
+ Max = 2
20
+ }
21
+ /** Oracle source types */
22
+ export type OracleSource = "pyth" | "switchboard";
23
+ /** Per-token configuration stored in PolicyConfig */
24
+ export interface AllowedToken {
25
+ /** Token mint address */
26
+ mint: PublicKey;
27
+ /** Oracle feed account (Pyth PriceUpdateV2 or Switchboard PullFeed).
28
+ * Pubkey.default = stablecoin (1:1 USD).
29
+ * UNPRICED_SENTINEL = unpriced (receive-only). */
30
+ oracleFeed: PublicKey;
31
+ /** Token decimals (e.g., 6 for USDC, 9 for SOL) */
32
+ decimals: number;
33
+ /** Per-token daily cap in base units (0 = no per-token limit) */
34
+ dailyCapBase: BN;
35
+ /** Per-token max single tx in base units (0 = no per-token limit) */
36
+ maxTxBase: BN;
37
+ }
38
+ /** Token classification for oracle routing */
39
+ export type TokenClassification = "stablecoin" | "oracle-priced" | "unpriced";
10
40
  export type AgentVaultAccount = {
11
41
  owner: PublicKey;
12
42
  agent: PublicKey;
@@ -19,28 +49,62 @@ export type AgentVaultAccount = {
19
49
  totalVolume: BN;
20
50
  openPositions: number;
21
51
  totalFeesCollected: BN;
52
+ trackerTier: {
53
+ standard: Record<string, never>;
54
+ } | {
55
+ pro: Record<string, never>;
56
+ } | {
57
+ max: Record<string, never>;
58
+ };
22
59
  };
23
60
  export type PolicyConfigAccount = {
24
61
  vault: PublicKey;
25
- dailySpendingCap: BN;
26
- maxTransactionSize: BN;
27
- allowedTokens: PublicKey[];
62
+ dailySpendingCapUsd: BN;
63
+ maxTransactionSizeUsd: BN;
64
+ allowedTokens: AllowedToken[];
28
65
  allowedProtocols: PublicKey[];
29
66
  maxLeverageBps: number;
30
67
  canOpenPositions: boolean;
31
68
  maxConcurrentPositions: number;
32
69
  developerFeeRate: number;
70
+ timelockDuration: BN;
71
+ allowedDestinations: PublicKey[];
72
+ bump: number;
73
+ };
74
+ export type PendingPolicyUpdateAccount = {
75
+ vault: PublicKey;
76
+ queuedAt: BN;
77
+ executesAt: BN;
78
+ dailySpendingCapUsd: BN | null;
79
+ maxTransactionAmountUsd: BN | null;
80
+ allowedTokens: AllowedToken[] | null;
81
+ allowedProtocols: PublicKey[] | null;
82
+ maxLeverageBps: number | null;
83
+ canOpenPositions: boolean | null;
84
+ maxConcurrentPositions: number | null;
85
+ developerFeeRate: number | null;
86
+ timelockDuration: BN | null;
87
+ allowedDestinations: PublicKey[] | null;
33
88
  bump: number;
34
89
  };
35
90
  export type SpendTrackerAccount = {
36
91
  vault: PublicKey;
92
+ trackerTier: {
93
+ standard: Record<string, never>;
94
+ } | {
95
+ pro: Record<string, never>;
96
+ } | {
97
+ max: Record<string, never>;
98
+ };
99
+ maxSpendEntries: number;
37
100
  rollingSpends: SpendEntry[];
38
101
  recentTransactions: TransactionRecord[];
39
102
  bump: number;
40
103
  };
41
104
  export type SpendEntry = {
42
- tokenMint: PublicKey;
43
- amountSpent: BN;
105
+ tokenIndex: number;
106
+ usdAmount: BN;
107
+ baseAmount: BN;
44
108
  timestamp: BN;
45
109
  };
46
110
  export type TransactionRecord = {
@@ -61,6 +125,8 @@ export type SessionAuthorityAccount = {
61
125
  authorizedProtocol: PublicKey;
62
126
  actionType: ActionType;
63
127
  expiresAtSlot: BN;
128
+ delegated: boolean;
129
+ delegationTokenAccount: PublicKey;
64
130
  bump: number;
65
131
  };
66
132
  export type VaultStatus = {
@@ -84,27 +150,55 @@ export type ActionType = {
84
150
  deposit: Record<string, never>;
85
151
  } | {
86
152
  withdraw: Record<string, never>;
153
+ } | {
154
+ transfer: Record<string, never>;
87
155
  };
88
156
  export interface InitializeVaultParams {
89
157
  vaultId: BN;
90
- dailySpendingCap: BN;
91
- maxTransactionSize: BN;
92
- allowedTokens: PublicKey[];
158
+ dailySpendingCapUsd: BN;
159
+ maxTransactionSizeUsd: BN;
160
+ allowedTokens: AllowedToken[];
93
161
  allowedProtocols: PublicKey[];
94
162
  maxLeverageBps: number;
95
163
  maxConcurrentPositions: number;
96
164
  feeDestination: PublicKey;
97
165
  developerFeeRate?: number;
166
+ timelockDuration?: BN;
167
+ allowedDestinations?: PublicKey[];
168
+ /** Tracker capacity tier (default: Standard = 0) */
169
+ trackerTier?: TrackerTier;
98
170
  }
99
171
  export interface UpdatePolicyParams {
100
- dailySpendingCap?: BN | null;
101
- maxTransactionSize?: BN | null;
102
- allowedTokens?: PublicKey[] | null;
172
+ dailySpendingCapUsd?: BN | null;
173
+ maxTransactionSizeUsd?: BN | null;
174
+ allowedTokens?: AllowedToken[] | null;
103
175
  allowedProtocols?: PublicKey[] | null;
104
176
  maxLeverageBps?: number | null;
105
177
  canOpenPositions?: boolean | null;
106
178
  maxConcurrentPositions?: number | null;
107
179
  developerFeeRate?: number | null;
180
+ timelockDuration?: BN | null;
181
+ allowedDestinations?: PublicKey[] | null;
182
+ }
183
+ export interface QueuePolicyUpdateParams {
184
+ dailySpendingCapUsd?: BN | null;
185
+ maxTransactionAmountUsd?: BN | null;
186
+ allowedTokens?: AllowedToken[] | null;
187
+ allowedProtocols?: PublicKey[] | null;
188
+ maxLeverageBps?: number | null;
189
+ canOpenPositions?: boolean | null;
190
+ maxConcurrentPositions?: number | null;
191
+ developerFeeRate?: number | null;
192
+ timelockDuration?: BN | null;
193
+ allowedDestinations?: PublicKey[] | null;
194
+ }
195
+ export interface AgentTransferParams {
196
+ amount: BN;
197
+ vaultTokenAccount: PublicKey;
198
+ destinationTokenAccount: PublicKey;
199
+ feeDestinationTokenAccount?: PublicKey | null;
200
+ protocolTreasuryTokenAccount?: PublicKey | null;
201
+ oracleFeedAccount?: PublicKey;
108
202
  }
109
203
  export interface AuthorizeParams {
110
204
  actionType: ActionType;
@@ -127,11 +221,13 @@ export interface ComposeActionParams {
127
221
  defiInstructions: import("@solana/web3.js").TransactionInstruction[];
128
222
  /** Whether the finalize step should report success (default: true) */
129
223
  success?: boolean;
130
- /** Optional: vault token account for fee deduction */
131
- vaultTokenAccount?: PublicKey | null;
224
+ /** Vault's PDA-owned token account for the spend token (required for delegation) */
225
+ vaultTokenAccount: PublicKey;
132
226
  /** Optional: fee destination token account */
133
227
  feeDestinationTokenAccount?: PublicKey | null;
134
228
  /** Optional: protocol treasury token account for protocol fee */
135
229
  protocolTreasuryTokenAccount?: PublicKey | null;
230
+ /** Oracle feed account for oracle-priced tokens (Pyth or Switchboard) */
231
+ oracleFeedAccount?: PublicKey;
136
232
  }
137
233
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PROTOCOL_TREASURY = exports.MAX_DEVELOPER_FEE_RATE = exports.PROTOCOL_FEE_RATE = exports.FEE_RATE_DENOMINATOR = exports.AGENT_SHIELD_PROGRAM_ID = void 0;
3
+ exports.TrackerTier = exports.UNPRICED_SENTINEL = exports.USD_DECIMALS = exports.PROTOCOL_TREASURY = exports.MAX_DEVELOPER_FEE_RATE = exports.PROTOCOL_FEE_RATE = exports.FEE_RATE_DENOMINATOR = exports.AGENT_SHIELD_PROGRAM_ID = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
5
  exports.AGENT_SHIELD_PROGRAM_ID = new web3_js_1.PublicKey("4ZeVCqnjUgUtFrHHPG7jELUxvJeoVGHhGNgPrhBPwrHL");
6
6
  // Fee constants matching on-chain values
@@ -8,4 +8,18 @@ exports.FEE_RATE_DENOMINATOR = 1000000;
8
8
  exports.PROTOCOL_FEE_RATE = 20; // 0.2 BPS
9
9
  exports.MAX_DEVELOPER_FEE_RATE = 50; // 0.5 BPS
10
10
  exports.PROTOCOL_TREASURY = new web3_js_1.PublicKey("ASHie1dFTnDSnrHMPGmniJhMgfJVGPm3rAaEPnrtWDiT");
11
+ // USD decimals (6) — $500 = 500_000_000
12
+ exports.USD_DECIMALS = 6;
13
+ // Sentinel for unpriced (receive-only) tokens — all 0xFF bytes
14
+ exports.UNPRICED_SENTINEL = new web3_js_1.PublicKey(new Uint8Array(32).fill(0xff));
15
+ /** Tracker capacity tier — determines max rolling spend entries */
16
+ var TrackerTier;
17
+ (function (TrackerTier) {
18
+ /** 200 entries (~16 KB, ~0.11 SOL rent) */
19
+ TrackerTier[TrackerTier["Standard"] = 0] = "Standard";
20
+ /** 500 entries (~33 KB, ~0.23 SOL rent) */
21
+ TrackerTier[TrackerTier["Pro"] = 1] = "Pro";
22
+ /** 1000 entries (~61 KB, ~0.42 SOL rent) */
23
+ TrackerTier[TrackerTier["Max"] = 2] = "Max";
24
+ })(TrackerTier || (exports.TrackerTier = TrackerTier = {}));
11
25
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAM/B,QAAA,uBAAuB,GAAG,IAAI,mBAAS,CAClD,8CAA8C,CAC/C,CAAC;AAEF,yCAAyC;AAC5B,QAAA,oBAAoB,GAAG,OAAS,CAAC;AACjC,QAAA,iBAAiB,GAAG,EAAE,CAAC,CAAC,UAAU;AAClC,QAAA,sBAAsB,GAAG,EAAE,CAAC,CAAC,UAAU;AACvC,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAC5C,8CAA8C,CAC/C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAM/B,QAAA,uBAAuB,GAAG,IAAI,mBAAS,CAClD,8CAA8C,CAC/C,CAAC;AAEF,yCAAyC;AAC5B,QAAA,oBAAoB,GAAG,OAAS,CAAC;AACjC,QAAA,iBAAiB,GAAG,EAAE,CAAC,CAAC,UAAU;AAClC,QAAA,sBAAsB,GAAG,EAAE,CAAC,CAAC,UAAU;AACvC,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAC5C,8CAA8C,CAC/C,CAAC;AAEF,wCAAwC;AAC3B,QAAA,YAAY,GAAG,CAAC,CAAC;AAE9B,+DAA+D;AAClD,QAAA,iBAAiB,GAAG,IAAI,mBAAS,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9E,mEAAmE;AACnE,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,2CAA2C;IAC3C,qDAAY,CAAA;IACZ,2CAA2C;IAC3C,2CAAO,CAAA;IACP,4CAA4C;IAC5C,2CAAO,CAAA;AACT,CAAC,EAPW,WAAW,2BAAX,WAAW,QAOtB"}
package/dist/wrap.d.ts ADDED
@@ -0,0 +1,60 @@
1
+ import { PublicKey, TransactionInstruction, VersionedTransaction, Connection, AddressLookupTableAccount } from "@solana/web3.js";
2
+ import { BN, Program } from "@coral-xyz/anchor";
3
+ import type { AgentShield, ActionType, AllowedToken } from "./types";
4
+ export interface WrapTransactionParams {
5
+ /** Vault PDA */
6
+ vault: PublicKey;
7
+ /** Vault owner pubkey */
8
+ owner: PublicKey;
9
+ /** Vault ID */
10
+ vaultId: BN;
11
+ /** Agent signer pubkey */
12
+ agent: PublicKey;
13
+ /** Raw DeFi instruction(s) — will be authority-rewritten */
14
+ defiInstructions: TransactionInstruction[];
15
+ /** Token mint being spent */
16
+ tokenMint: PublicKey;
17
+ /** Amount in base units */
18
+ amount: BN;
19
+ /** Target DeFi protocol program ID */
20
+ targetProtocol: PublicKey;
21
+ /** Action type (swap, openPosition, etc.) */
22
+ actionType: ActionType;
23
+ /** Leverage in basis points (for perp actions) */
24
+ leverageBps?: number | null;
25
+ /** Address lookup tables for compact transaction encoding */
26
+ addressLookupTables?: AddressLookupTableAccount[];
27
+ /** Compute unit budget override */
28
+ computeUnits?: number;
29
+ /** Fee destination token account (optional) */
30
+ feeDestinationTokenAccount?: PublicKey | null;
31
+ /** Protocol treasury token account (optional) */
32
+ protocolTreasuryTokenAccount?: PublicKey | null;
33
+ /** Oracle feed account for oracle-priced tokens (auto-resolved from policy if omitted) */
34
+ oracleFeedAccount?: PublicKey;
35
+ }
36
+ /**
37
+ * Wrap arbitrary DeFi instructions into a complete AgentShield transaction.
38
+ *
39
+ * This is the protocol-agnostic entry point. It:
40
+ * 1. Resolves the vault's token account
41
+ * 2. Rewrites authority in DeFi instructions (vault PDA → agent)
42
+ * 3. Builds: [ComputeBudget, ValidateAndAuthorize, ...defi, FinalizeSession]
43
+ * 4. Returns an unsigned VersionedTransaction
44
+ */
45
+ export declare function wrapTransaction(program: Program<AgentShield>, connection: Connection, params: WrapTransactionParams): Promise<VersionedTransaction>;
46
+ /**
47
+ * Build the instruction array for a wrapped transaction without
48
+ * creating the VersionedTransaction. Useful when the caller needs
49
+ * to compose further or use a different signing flow.
50
+ */
51
+ export declare function wrapInstructions(program: Program<AgentShield>, params: WrapTransactionParams): Promise<TransactionInstruction[]>;
52
+ /**
53
+ * Classify a token based on its AllowedToken oracle_feed value.
54
+ */
55
+ export declare function classifyToken(token: AllowedToken): "stablecoin" | "oracle-priced" | "unpriced";
56
+ /**
57
+ * Find an AllowedToken in a policy by mint address.
58
+ */
59
+ export declare function findAllowedToken(allowedTokens: AllowedToken[], mint: PublicKey): AllowedToken | undefined;
60
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EAEtB,oBAAoB,EAEpB,UAAU,EACV,yBAAyB,EAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAYrE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe;IACf,OAAO,EAAE,EAAE,CAAC;IACZ,0BAA0B;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,gBAAgB,EAAE,sBAAsB,EAAE,CAAC;IAC3C,6BAA6B;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,2BAA2B;IAC3B,MAAM,EAAE,EAAE,CAAC;IACX,sCAAsC;IACtC,cAAc,EAAE,SAAS,CAAC;IAC1B,6CAA6C;IAC7C,UAAU,EAAE,UAAU,CAAC;IACvB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAClD,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,0BAA0B,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9C,iDAAiD;IACjD,4BAA4B,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChD,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA8DnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,GAClB,YAAY,GAAG,eAAe,GAAG,UAAU,CAQ7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,YAAY,EAAE,EAC7B,IAAI,EAAE,SAAS,GACd,YAAY,GAAG,SAAS,CAE1B"}
package/dist/wrap.js ADDED
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapTransaction = wrapTransaction;
4
+ exports.wrapInstructions = wrapInstructions;
5
+ exports.classifyToken = classifyToken;
6
+ exports.findAllowedToken = findAllowedToken;
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ const spl_token_1 = require("@solana/spl-token");
9
+ const types_1 = require("./types");
10
+ const accounts_1 = require("./accounts");
11
+ const instructions_1 = require("./instructions");
12
+ const rewriter_1 = require("./rewriter");
13
+ /** Default compute budget for wrapped transactions (1.4M CU) */
14
+ const DEFAULT_COMPUTE_UNITS = 1400000;
15
+ /**
16
+ * Wrap arbitrary DeFi instructions into a complete AgentShield transaction.
17
+ *
18
+ * This is the protocol-agnostic entry point. It:
19
+ * 1. Resolves the vault's token account
20
+ * 2. Rewrites authority in DeFi instructions (vault PDA → agent)
21
+ * 3. Builds: [ComputeBudget, ValidateAndAuthorize, ...defi, FinalizeSession]
22
+ * 4. Returns an unsigned VersionedTransaction
23
+ */
24
+ async function wrapTransaction(program, connection, params) {
25
+ const instructions = await wrapInstructions(program, params);
26
+ const { blockhash } = await connection.getLatestBlockhash();
27
+ const messageV0 = new web3_js_1.TransactionMessage({
28
+ payerKey: params.agent,
29
+ recentBlockhash: blockhash,
30
+ instructions,
31
+ }).compileToV0Message(params.addressLookupTables);
32
+ return new web3_js_1.VersionedTransaction(messageV0);
33
+ }
34
+ /**
35
+ * Build the instruction array for a wrapped transaction without
36
+ * creating the VersionedTransaction. Useful when the caller needs
37
+ * to compose further or use a different signing flow.
38
+ */
39
+ async function wrapInstructions(program, params) {
40
+ const computeUnits = params.computeUnits ?? DEFAULT_COMPUTE_UNITS;
41
+ // Derive vault token account
42
+ const vaultTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(params.tokenMint, params.vault, true);
43
+ // Rewrite authority in DeFi instructions
44
+ const rewrittenDefi = (0, rewriter_1.rewriteVaultAuthority)(params.defiInstructions, params.vault, params.agent);
45
+ // Compute budget
46
+ const computeIx = web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({
47
+ units: computeUnits,
48
+ });
49
+ // Auto-resolve oracle feed from policy if not explicitly provided
50
+ let oracleFeed = params.oracleFeedAccount;
51
+ if (!oracleFeed) {
52
+ const policy = await (0, accounts_1.fetchPolicy)(program, params.vault);
53
+ const token = findAllowedToken(policy.allowedTokens, params.tokenMint);
54
+ if (token && classifyToken(token) === "oracle-priced") {
55
+ oracleFeed = token.oracleFeed;
56
+ }
57
+ }
58
+ // Validate and authorize (includes token delegation CPI)
59
+ const validateIx = await (0, instructions_1.buildValidateAndAuthorize)(program, params.agent, params.vault, vaultTokenAccount, {
60
+ actionType: params.actionType,
61
+ tokenMint: params.tokenMint,
62
+ amount: params.amount,
63
+ targetProtocol: params.targetProtocol,
64
+ leverageBps: params.leverageBps,
65
+ }, oracleFeed).instruction();
66
+ // Finalize session (revokes delegation, collects fees)
67
+ const finalizeIx = await (0, instructions_1.buildFinalizeSession)(program, params.agent, params.vault, params.agent, params.tokenMint, true, vaultTokenAccount, params.feeDestinationTokenAccount, params.protocolTreasuryTokenAccount).instruction();
68
+ return [computeIx, validateIx, ...rewrittenDefi, finalizeIx];
69
+ }
70
+ /**
71
+ * Classify a token based on its AllowedToken oracle_feed value.
72
+ */
73
+ function classifyToken(token) {
74
+ if (token.oracleFeed.equals(web3_js_1.PublicKey.default)) {
75
+ return "stablecoin";
76
+ }
77
+ if (token.oracleFeed.equals(types_1.UNPRICED_SENTINEL)) {
78
+ return "unpriced";
79
+ }
80
+ return "oracle-priced";
81
+ }
82
+ /**
83
+ * Find an AllowedToken in a policy by mint address.
84
+ */
85
+ function findAllowedToken(allowedTokens, mint) {
86
+ return allowedTokens.find((t) => t.mint.equals(mint));
87
+ }
88
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../src/wrap.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.1.6",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript SDK for AgentShield — permission-guarded DeFi access for AI agents on Solana",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -32,10 +32,21 @@
32
32
  "ts-node": "^10.9.2",
33
33
  "typescript": "^5.3.3"
34
34
  },
35
+ "keywords": [
36
+ "solana",
37
+ "ai-agent",
38
+ "anchor",
39
+ "defi",
40
+ "security",
41
+ "spending-limits",
42
+ "policy-engine",
43
+ "mcp"
44
+ ],
35
45
  "license": "MIT",
36
46
  "repository": {
37
47
  "type": "git",
38
- "url": "https://github.com/agentshield/agent-middleware"
48
+ "url": "https://github.com/Kaleb-Rupe/agentshield",
49
+ "directory": "sdk/typescript"
39
50
  },
40
51
  "scripts": {
41
52
  "build": "tsc",