@rebelfi/agent-sdk 1.0.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 (243) hide show
  1. package/README.md +337 -0
  2. package/dist/amount-utils.d.ts +9 -0
  3. package/dist/amount-utils.js +80 -0
  4. package/dist/amount-utils.js.map +1 -0
  5. package/dist/cjs/amount-utils.js +87 -0
  6. package/dist/cjs/amount-utils.js.map +1 -0
  7. package/dist/cjs/cli.js +189 -0
  8. package/dist/cjs/cli.js.map +1 -0
  9. package/dist/cjs/client.js +49 -0
  10. package/dist/cjs/client.js.map +1 -0
  11. package/dist/cjs/commands/account.js +250 -0
  12. package/dist/cjs/commands/account.js.map +1 -0
  13. package/dist/cjs/commands/auth.js +78 -0
  14. package/dist/cjs/commands/auth.js.map +1 -0
  15. package/dist/cjs/commands/balance.js +15 -0
  16. package/dist/cjs/commands/balance.js.map +1 -0
  17. package/dist/cjs/commands/cancel.js +34 -0
  18. package/dist/cjs/commands/cancel.js.map +1 -0
  19. package/dist/cjs/commands/chat.js +15 -0
  20. package/dist/cjs/commands/chat.js.map +1 -0
  21. package/dist/cjs/commands/claim.js +34 -0
  22. package/dist/cjs/commands/claim.js.map +1 -0
  23. package/dist/cjs/commands/config.js +29 -0
  24. package/dist/cjs/commands/config.js.map +1 -0
  25. package/dist/cjs/commands/contacts.js +29 -0
  26. package/dist/cjs/commands/contacts.js.map +1 -0
  27. package/dist/cjs/commands/init.js +43 -0
  28. package/dist/cjs/commands/init.js.map +1 -0
  29. package/dist/cjs/commands/orders.js +167 -0
  30. package/dist/cjs/commands/orders.js.map +1 -0
  31. package/dist/cjs/commands/pay.js +41 -0
  32. package/dist/cjs/commands/pay.js.map +1 -0
  33. package/dist/cjs/commands/payments.js +27 -0
  34. package/dist/cjs/commands/payments.js.map +1 -0
  35. package/dist/cjs/commands/wallet.js +69 -0
  36. package/dist/cjs/commands/wallet.js.map +1 -0
  37. package/dist/cjs/config.js +91 -0
  38. package/dist/cjs/config.js.map +1 -0
  39. package/dist/cjs/contacts.js +87 -0
  40. package/dist/cjs/contacts.js.map +1 -0
  41. package/dist/cjs/errors.js +93 -0
  42. package/dist/cjs/errors.js.map +1 -0
  43. package/dist/cjs/index.js +64 -0
  44. package/dist/cjs/index.js.map +1 -0
  45. package/dist/cjs/intent/chains.js +29 -0
  46. package/dist/cjs/intent/chains.js.map +1 -0
  47. package/dist/cjs/intent/constraints.js +46 -0
  48. package/dist/cjs/intent/constraints.js.map +1 -0
  49. package/dist/cjs/intent/helpers.js +34 -0
  50. package/dist/cjs/intent/helpers.js.map +1 -0
  51. package/dist/cjs/intent/index.js +99 -0
  52. package/dist/cjs/intent/index.js.map +1 -0
  53. package/dist/cjs/intent/matcher.js +119 -0
  54. package/dist/cjs/intent/matcher.js.map +1 -0
  55. package/dist/cjs/intent/program-registry.js +68 -0
  56. package/dist/cjs/intent/program-registry.js.map +1 -0
  57. package/dist/cjs/intent/token-registry.js +99 -0
  58. package/dist/cjs/intent/token-registry.js.map +1 -0
  59. package/dist/cjs/intent/types.js +3 -0
  60. package/dist/cjs/intent/types.js.map +1 -0
  61. package/dist/cjs/orders/evaluate.js +168 -0
  62. package/dist/cjs/orders/evaluate.js.map +1 -0
  63. package/dist/cjs/orders/index.js +14 -0
  64. package/dist/cjs/orders/index.js.map +1 -0
  65. package/dist/cjs/orders/store.js +47 -0
  66. package/dist/cjs/orders/store.js.map +1 -0
  67. package/dist/cjs/orders/sugar.js +35 -0
  68. package/dist/cjs/orders/sugar.js.map +1 -0
  69. package/dist/cjs/orders/types.js +3 -0
  70. package/dist/cjs/orders/types.js.map +1 -0
  71. package/dist/cjs/output.js +47 -0
  72. package/dist/cjs/output.js.map +1 -0
  73. package/dist/cjs/package.json +1 -0
  74. package/dist/cjs/transfers.js +15 -0
  75. package/dist/cjs/transfers.js.map +1 -0
  76. package/dist/cjs/validate.js +77 -0
  77. package/dist/cjs/validate.js.map +1 -0
  78. package/dist/cjs/verify/decoders/ata.js +19 -0
  79. package/dist/cjs/verify/decoders/ata.js.map +1 -0
  80. package/dist/cjs/verify/decoders/compute-budget.js +32 -0
  81. package/dist/cjs/verify/decoders/compute-budget.js.map +1 -0
  82. package/dist/cjs/verify/decoders/handshake.js +180 -0
  83. package/dist/cjs/verify/decoders/handshake.js.map +1 -0
  84. package/dist/cjs/verify/decoders/jupiter.js +39 -0
  85. package/dist/cjs/verify/decoders/jupiter.js.map +1 -0
  86. package/dist/cjs/verify/decoders/memo.js +12 -0
  87. package/dist/cjs/verify/decoders/memo.js.map +1 -0
  88. package/dist/cjs/verify/decoders/silkysig.js +162 -0
  89. package/dist/cjs/verify/decoders/silkysig.js.map +1 -0
  90. package/dist/cjs/verify/decoders/spl-token.js +125 -0
  91. package/dist/cjs/verify/decoders/spl-token.js.map +1 -0
  92. package/dist/cjs/verify/decoders/system.js +87 -0
  93. package/dist/cjs/verify/decoders/system.js.map +1 -0
  94. package/dist/cjs/verify/flags.js +87 -0
  95. package/dist/cjs/verify/flags.js.map +1 -0
  96. package/dist/cjs/verify/index.js +384 -0
  97. package/dist/cjs/verify/index.js.map +1 -0
  98. package/dist/cjs/verify/registry.js +24 -0
  99. package/dist/cjs/verify/registry.js.map +1 -0
  100. package/dist/cjs/verify/rpc.js +52 -0
  101. package/dist/cjs/verify/rpc.js.map +1 -0
  102. package/dist/cli.d.ts +2 -0
  103. package/dist/cli.js +224 -0
  104. package/dist/cli.js.map +1 -0
  105. package/dist/client.d.ts +7 -0
  106. package/dist/client.js +43 -0
  107. package/dist/client.js.map +1 -0
  108. package/dist/commands/account.d.ts +21 -0
  109. package/dist/commands/account.js +239 -0
  110. package/dist/commands/account.js.map +1 -0
  111. package/dist/commands/auth.d.ts +5 -0
  112. package/dist/commands/auth.js +70 -0
  113. package/dist/commands/auth.js.map +1 -0
  114. package/dist/commands/balance.d.ts +3 -0
  115. package/dist/commands/balance.js +12 -0
  116. package/dist/commands/balance.js.map +1 -0
  117. package/dist/commands/cancel.d.ts +3 -0
  118. package/dist/commands/cancel.js +28 -0
  119. package/dist/commands/cancel.js.map +1 -0
  120. package/dist/commands/chat.d.ts +1 -0
  121. package/dist/commands/chat.js +12 -0
  122. package/dist/commands/chat.js.map +1 -0
  123. package/dist/commands/claim.d.ts +3 -0
  124. package/dist/commands/claim.js +28 -0
  125. package/dist/commands/claim.js.map +1 -0
  126. package/dist/commands/config.d.ts +3 -0
  127. package/dist/commands/config.js +24 -0
  128. package/dist/commands/config.js.map +1 -0
  129. package/dist/commands/contacts.d.ts +4 -0
  130. package/dist/commands/contacts.js +23 -0
  131. package/dist/commands/contacts.js.map +1 -0
  132. package/dist/commands/init.d.ts +1 -0
  133. package/dist/commands/init.js +37 -0
  134. package/dist/commands/init.js.map +1 -0
  135. package/dist/commands/orders.d.ts +19 -0
  136. package/dist/commands/orders.js +157 -0
  137. package/dist/commands/orders.js.map +1 -0
  138. package/dist/commands/pay.d.ts +4 -0
  139. package/dist/commands/pay.js +35 -0
  140. package/dist/commands/pay.js.map +1 -0
  141. package/dist/commands/payments.d.ts +4 -0
  142. package/dist/commands/payments.js +23 -0
  143. package/dist/commands/payments.js.map +1 -0
  144. package/dist/commands/wallet.d.ts +7 -0
  145. package/dist/commands/wallet.js +61 -0
  146. package/dist/commands/wallet.js.map +1 -0
  147. package/dist/config.d.ts +40 -0
  148. package/dist/config.js +74 -0
  149. package/dist/config.js.map +1 -0
  150. package/dist/contacts.d.ts +15 -0
  151. package/dist/contacts.js +74 -0
  152. package/dist/contacts.js.map +1 -0
  153. package/dist/errors.d.ts +14 -0
  154. package/dist/errors.js +87 -0
  155. package/dist/errors.js.map +1 -0
  156. package/dist/index.d.ts +18 -0
  157. package/dist/index.js +14 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/intent/chains.d.ts +7 -0
  160. package/dist/intent/chains.js +24 -0
  161. package/dist/intent/chains.js.map +1 -0
  162. package/dist/intent/constraints.d.ts +8 -0
  163. package/dist/intent/constraints.js +43 -0
  164. package/dist/intent/constraints.js.map +1 -0
  165. package/dist/intent/helpers.d.ts +6 -0
  166. package/dist/intent/helpers.js +27 -0
  167. package/dist/intent/helpers.js.map +1 -0
  168. package/dist/intent/index.d.ts +11 -0
  169. package/dist/intent/index.js +87 -0
  170. package/dist/intent/index.js.map +1 -0
  171. package/dist/intent/matcher.d.ts +8 -0
  172. package/dist/intent/matcher.js +116 -0
  173. package/dist/intent/matcher.js.map +1 -0
  174. package/dist/intent/program-registry.d.ts +13 -0
  175. package/dist/intent/program-registry.js +65 -0
  176. package/dist/intent/program-registry.js.map +1 -0
  177. package/dist/intent/token-registry.d.ts +17 -0
  178. package/dist/intent/token-registry.js +96 -0
  179. package/dist/intent/token-registry.js.map +1 -0
  180. package/dist/intent/types.d.ts +89 -0
  181. package/dist/intent/types.js +2 -0
  182. package/dist/intent/types.js.map +1 -0
  183. package/dist/orders/evaluate.d.ts +28 -0
  184. package/dist/orders/evaluate.js +165 -0
  185. package/dist/orders/evaluate.js.map +1 -0
  186. package/dist/orders/index.d.ts +7 -0
  187. package/dist/orders/index.js +4 -0
  188. package/dist/orders/index.js.map +1 -0
  189. package/dist/orders/store.d.ts +9 -0
  190. package/dist/orders/store.js +37 -0
  191. package/dist/orders/store.js.map +1 -0
  192. package/dist/orders/sugar.d.ts +13 -0
  193. package/dist/orders/sugar.js +32 -0
  194. package/dist/orders/sugar.js.map +1 -0
  195. package/dist/orders/types.d.ts +37 -0
  196. package/dist/orders/types.js +2 -0
  197. package/dist/orders/types.js.map +1 -0
  198. package/dist/output.d.ts +4 -0
  199. package/dist/output.js +42 -0
  200. package/dist/output.js.map +1 -0
  201. package/dist/transfers.d.ts +32 -0
  202. package/dist/transfers.js +12 -0
  203. package/dist/transfers.js.map +1 -0
  204. package/dist/validate.d.ts +8 -0
  205. package/dist/validate.js +69 -0
  206. package/dist/validate.js.map +1 -0
  207. package/dist/verify/decoders/ata.d.ts +5 -0
  208. package/dist/verify/decoders/ata.js +16 -0
  209. package/dist/verify/decoders/ata.js.map +1 -0
  210. package/dist/verify/decoders/compute-budget.d.ts +5 -0
  211. package/dist/verify/decoders/compute-budget.js +29 -0
  212. package/dist/verify/decoders/compute-budget.js.map +1 -0
  213. package/dist/verify/decoders/handshake.d.ts +5 -0
  214. package/dist/verify/decoders/handshake.js +177 -0
  215. package/dist/verify/decoders/handshake.js.map +1 -0
  216. package/dist/verify/decoders/jupiter.d.ts +5 -0
  217. package/dist/verify/decoders/jupiter.js +36 -0
  218. package/dist/verify/decoders/jupiter.js.map +1 -0
  219. package/dist/verify/decoders/memo.d.ts +5 -0
  220. package/dist/verify/decoders/memo.js +9 -0
  221. package/dist/verify/decoders/memo.js.map +1 -0
  222. package/dist/verify/decoders/silkysig.d.ts +5 -0
  223. package/dist/verify/decoders/silkysig.js +159 -0
  224. package/dist/verify/decoders/silkysig.js.map +1 -0
  225. package/dist/verify/decoders/spl-token.d.ts +5 -0
  226. package/dist/verify/decoders/spl-token.js +122 -0
  227. package/dist/verify/decoders/spl-token.js.map +1 -0
  228. package/dist/verify/decoders/system.d.ts +5 -0
  229. package/dist/verify/decoders/system.js +84 -0
  230. package/dist/verify/decoders/system.js.map +1 -0
  231. package/dist/verify/flags.d.ts +3 -0
  232. package/dist/verify/flags.js +83 -0
  233. package/dist/verify/flags.js.map +1 -0
  234. package/dist/verify/index.d.ts +75 -0
  235. package/dist/verify/index.js +380 -0
  236. package/dist/verify/index.js.map +1 -0
  237. package/dist/verify/registry.d.ts +13 -0
  238. package/dist/verify/registry.js +21 -0
  239. package/dist/verify/registry.js.map +1 -0
  240. package/dist/verify/rpc.d.ts +14 -0
  241. package/dist/verify/rpc.js +48 -0
  242. package/dist/verify/rpc.js.map +1 -0
  243. package/package.json +85 -0
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzeTransaction = analyzeTransaction;
4
+ exports.verifyIntent = verifyIntent;
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const registry_js_1 = require("./registry.js");
7
+ const system_js_1 = require("./decoders/system.js");
8
+ const spl_token_js_1 = require("./decoders/spl-token.js");
9
+ const ata_js_1 = require("./decoders/ata.js");
10
+ const compute_budget_js_1 = require("./decoders/compute-budget.js");
11
+ const memo_js_1 = require("./decoders/memo.js");
12
+ const handshake_js_1 = require("./decoders/handshake.js");
13
+ const silkysig_js_1 = require("./decoders/silkysig.js");
14
+ const jupiter_js_1 = require("./decoders/jupiter.js");
15
+ const flags_js_1 = require("./flags.js");
16
+ const rpc_js_1 = require("./rpc.js");
17
+ const amount_utils_js_1 = require("../amount-utils.js");
18
+ // ─── Registry loading ────────────────────────────────────────────────────────
19
+ function loadRegistry(override) {
20
+ return {
21
+ programs: { ...registry_js_1.REGISTRY.programs, ...(override?.programs ?? {}) },
22
+ tokens: { ...registry_js_1.REGISTRY.tokens, ...(override?.tokens ?? {}) },
23
+ };
24
+ }
25
+ // ─── Instruction decoding ─────────────────────────────────────────────────────
26
+ function decodeInstruction(programId, decoder, data, accounts, tokenCache) {
27
+ try {
28
+ switch (decoder) {
29
+ case 'system': {
30
+ const r = (0, system_js_1.decodeSystem)(data, accounts);
31
+ return r ? { type: r.type, params: r.params } : { type: null, params: {} };
32
+ }
33
+ case 'spl-token': {
34
+ const r = (0, spl_token_js_1.decodeSplToken)(data, accounts, (m) => tokenCache.getSymbol(m));
35
+ return r ? { type: r.type, params: r.params } : { type: null, params: {} };
36
+ }
37
+ case 'ata': {
38
+ const r = (0, ata_js_1.decodeAta)(data, accounts);
39
+ return { type: r.type, params: r.params };
40
+ }
41
+ case 'compute-budget': {
42
+ const r = (0, compute_budget_js_1.decodeComputeBudget)(data);
43
+ return { type: r.type, params: r.params };
44
+ }
45
+ case 'memo': {
46
+ const r = (0, memo_js_1.decodeMemo)(data);
47
+ return { type: r.type, params: r.params };
48
+ }
49
+ case 'handshake': {
50
+ const r = (0, handshake_js_1.decodeHandshake)(data, accounts, (m) => tokenCache.getSymbol(m), (m) => tokenCache.getDecimals(m));
51
+ return r ? { type: r.type, params: r.params } : { type: null, params: {} };
52
+ }
53
+ case 'silkysig': {
54
+ const r = (0, silkysig_js_1.decodeSilkysig)(data, accounts, (m) => tokenCache.getSymbol(m), (m) => tokenCache.getDecimals(m));
55
+ return r ? { type: r.type, params: r.params } : { type: null, params: {} };
56
+ }
57
+ case 'jupiter': {
58
+ const r = (0, jupiter_js_1.decodeJupiter)(data, accounts);
59
+ return { type: r.type, params: r.params };
60
+ }
61
+ default:
62
+ return { type: null, params: {} };
63
+ }
64
+ }
65
+ catch {
66
+ return { type: null, params: { decodeError: 'failed to decode instruction data' } };
67
+ }
68
+ }
69
+ function deserializeTx(txBase64) {
70
+ const buf = Buffer.from(txBase64, 'base64');
71
+ // Try versioned first, fall back to legacy
72
+ let feePayer;
73
+ let rawInstructions;
74
+ try {
75
+ const vtx = web3_js_1.VersionedTransaction.deserialize(buf);
76
+ const msg = vtx.message;
77
+ const accountKeys = msg.staticAccountKeys.map((k) => k.toBase58());
78
+ // For versioned transactions, append lookup table keys if resolved
79
+ feePayer = accountKeys[0] ?? '';
80
+ rawInstructions = msg.compiledInstructions.map((ix) => ({
81
+ programId: accountKeys[ix.programIdIndex] ?? '',
82
+ accounts: ix.accountKeyIndexes.map((i) => accountKeys[i] ?? ''),
83
+ data: Buffer.from(ix.data),
84
+ }));
85
+ }
86
+ catch {
87
+ const tx = web3_js_1.Transaction.from(buf);
88
+ feePayer = tx.feePayer?.toBase58() ?? tx.signatures[0]?.publicKey?.toBase58() ?? '';
89
+ const msg = tx.compileMessage();
90
+ const accountKeys = msg.accountKeys.map((k) => k.toBase58());
91
+ rawInstructions = msg.instructions.map((ix) => ({
92
+ programId: accountKeys[ix.programIdIndex] ?? '',
93
+ accounts: ix.accounts.map((i) => accountKeys[i] ?? ''),
94
+ data: Buffer.from(ix.data, 'base64'),
95
+ }));
96
+ }
97
+ return { feePayer, instructions: rawInstructions };
98
+ }
99
+ // ─── Summary generation ───────────────────────────────────────────────────────
100
+ function buildSummary(feePayer, instructions, flags) {
101
+ const parts = [];
102
+ for (const ix of instructions) {
103
+ if (!ix.known) {
104
+ parts.push(`calls unknown program ${ix.programId}`);
105
+ continue;
106
+ }
107
+ const p = ix.params;
108
+ switch (ix.type) {
109
+ case 'create_transfer':
110
+ parts.push(`creates Handshake transfer of ${p['amountHuman']} from ${shorten(p['sender'])} to ${shorten(p['recipient'])}`);
111
+ break;
112
+ case 'claim_transfer':
113
+ parts.push(`claims Handshake transfer (PDA: ${shorten(p['transferPda'])})`);
114
+ break;
115
+ case 'cancel_transfer':
116
+ parts.push(`cancels Handshake transfer (PDA: ${shorten(p['transferPda'])})`);
117
+ break;
118
+ case 'transfer_from_account':
119
+ parts.push(`transfers ${p['amountHuman']} from Silkysig account to ${shorten(p['recipient'])}`);
120
+ break;
121
+ case 'deposit':
122
+ parts.push(`deposits ${p['amountHuman']} into Silkysig account`);
123
+ break;
124
+ case 'transfer':
125
+ if (ix.programId === '11111111111111111111111111111111') {
126
+ parts.push(`transfers ${p['sol']} SOL from ${shorten(p['from'])} to ${shorten(p['to'])}`);
127
+ }
128
+ else {
129
+ parts.push(`SPL token transfer of ${p['amount']} to ${shorten(p['destination'])}`);
130
+ }
131
+ break;
132
+ case 'transfer_checked':
133
+ parts.push(`SPL token transfer of ${p['amountHuman']} to ${shorten(p['destination'])}`);
134
+ break;
135
+ case 'create':
136
+ case 'create_idempotent':
137
+ parts.push(`creates associated token account for ${shorten(p['wallet'])}`);
138
+ break;
139
+ case 'create_account':
140
+ if (ix.programId === '11111111111111111111111111111111') {
141
+ parts.push(`creates account ${shorten(p['newAccount'])}`);
142
+ }
143
+ else {
144
+ parts.push(`creates Silkysig account for ${shorten(p['owner'])}`);
145
+ }
146
+ break;
147
+ case 'set_compute_unit_price':
148
+ parts.push(`sets priority fee (${p['microLamports']} microLamports/CU)`);
149
+ break;
150
+ case 'set_compute_unit_limit':
151
+ parts.push(`sets compute unit limit (${p['units']})`);
152
+ break;
153
+ case 'memo':
154
+ parts.push(`memo: "${p['text']}"`);
155
+ break;
156
+ default:
157
+ if (ix.programName) {
158
+ parts.push(`${ix.programName}: ${ix.type}`);
159
+ }
160
+ }
161
+ }
162
+ let summary = parts.length > 0
163
+ ? `Transaction ${parts.join('; ')}.`
164
+ : 'Transaction has no recognized instructions.';
165
+ const errors = flags.filter((f) => f.severity === 'error');
166
+ const warnings = flags.filter((f) => f.severity === 'warning');
167
+ if (errors.length > 0) {
168
+ summary += ` ERROR: ${errors.map((f) => f.message).join(' ')}`;
169
+ }
170
+ else if (warnings.length > 0) {
171
+ summary += ` WARNING: ${warnings.map((f) => f.message).join(' ')}`;
172
+ }
173
+ return summary;
174
+ }
175
+ function shorten(addr) {
176
+ if (!addr)
177
+ return '(unknown)';
178
+ return `${addr.slice(0, 4)}..${addr.slice(-4)}`;
179
+ }
180
+ // ─── analyzeTransaction ───────────────────────────────────────────────────────
181
+ async function analyzeTransaction(txBase64, opts = {}) {
182
+ const registry = loadRegistry(opts.config);
183
+ const tokenCache = (0, rpc_js_1.createTokenCache)(registry.tokens, opts.connection);
184
+ const { feePayer, instructions: rawInstructions } = deserializeTx(txBase64);
185
+ // Collect all mints for RPC prefetch
186
+ const mints = rawInstructions.flatMap((ix) => {
187
+ const entry = registry.programs[ix.programId];
188
+ if (!entry)
189
+ return [];
190
+ // heuristic: mint is often 3rd account in token-program instructions
191
+ return ix.accounts.slice(0, 5);
192
+ });
193
+ await tokenCache.prefetch([...new Set(mints)].filter((a) => a.length === 44));
194
+ // Decode each instruction
195
+ const knownAddresses = new Set();
196
+ const instructions = rawInstructions.map((raw, i) => {
197
+ const entry = registry.programs[raw.programId];
198
+ const known = !!entry;
199
+ raw.accounts.forEach((a) => knownAddresses.add(a));
200
+ const { type, params } = known
201
+ ? decodeInstruction(raw.programId, entry.decoder, raw.data, raw.accounts, tokenCache)
202
+ : { type: null, params: {} };
203
+ return {
204
+ index: i,
205
+ programId: raw.programId,
206
+ programName: entry?.name ?? null,
207
+ type,
208
+ known,
209
+ params,
210
+ flags: [],
211
+ };
212
+ });
213
+ // Apply global flags
214
+ const globalFlags = (0, flags_js_1.applyGlobalFlags)(instructions, feePayer, knownAddresses);
215
+ // Attach per-instruction flags
216
+ for (const flag of globalFlags) {
217
+ if (flag.instructionIndex !== undefined) {
218
+ instructions[flag.instructionIndex]?.flags.push(flag);
219
+ }
220
+ }
221
+ const summary = buildSummary(feePayer, instructions, globalFlags);
222
+ return { feePayer, instructions, flags: globalFlags, summary };
223
+ }
224
+ // ─── verifyIntent ─────────────────────────────────────────────────────────────
225
+ const AMOUNT_TOLERANCE = (0, amount_utils_js_1.parseDecimal)('0.0001'); // 0.01%
226
+ async function verifyIntent(txBase64, intent, opts = {}) {
227
+ const analysis = await analyzeTransaction(txBase64, opts);
228
+ const discrepancies = [];
229
+ validateIntentShape(intent, discrepancies);
230
+ // Any error-severity flag is an automatic failure
231
+ const errorFlags = analysis.flags.filter((f) => f.severity === 'error');
232
+ if (errorFlags.length > 0) {
233
+ for (const f of errorFlags) {
234
+ discrepancies.push(f.message);
235
+ }
236
+ }
237
+ // Find the instruction matching the intent type
238
+ const targetType = intent.type;
239
+ const match = analysis.instructions.find((ix) => ix.type === targetType);
240
+ if (!match) {
241
+ discrepancies.push(`Expected a ${targetType} instruction but none was found in the transaction.`);
242
+ return { verified: false, discrepancies, analysis };
243
+ }
244
+ const p = match.params;
245
+ switch (intent.type) {
246
+ case 'create_transfer': {
247
+ if (p['sender'] && normalize(p['sender']) !== normalize(intent.sender)) {
248
+ discrepancies.push(`Sender mismatch: expected ${intent.sender}, got ${p['sender']}`);
249
+ }
250
+ if (p['recipient'] && normalize(p['recipient']) !== normalize(intent.recipient)) {
251
+ discrepancies.push(`Recipient mismatch: expected ${intent.recipient}, got ${p['recipient']}`);
252
+ }
253
+ const txAmount = rawAmount(p['amount'], p);
254
+ if (txAmount !== null && !amountsMatch(txAmount, intent.amount, p)) {
255
+ discrepancies.push(`Amount mismatch: expected ${intent.amount}, got ${humanAmount(p)}`);
256
+ }
257
+ compareTokenSelector(intent, p, discrepancies);
258
+ if (intent.memo && p['memo'] && p['memo'] !== intent.memo) {
259
+ discrepancies.push(`Memo mismatch: expected "${intent.memo}", got "${p['memo']}"`);
260
+ }
261
+ break;
262
+ }
263
+ case 'claim_transfer': {
264
+ if (p['claimer'] && normalize(p['claimer']) !== normalize(intent.claimer)) {
265
+ discrepancies.push(`Claimer mismatch: expected ${intent.claimer}, got ${p['claimer']}`);
266
+ }
267
+ if (p['transferPda'] && normalize(p['transferPda']) !== normalize(intent.transferPda)) {
268
+ discrepancies.push(`Transfer PDA mismatch: expected ${intent.transferPda}, got ${p['transferPda']}`);
269
+ }
270
+ break;
271
+ }
272
+ case 'cancel_transfer': {
273
+ if (p['sender'] && normalize(p['sender']) !== normalize(intent.canceller)) {
274
+ discrepancies.push(`Canceller mismatch: expected ${intent.canceller}, got ${p['sender']}`);
275
+ }
276
+ if (p['transferPda'] && normalize(p['transferPda']) !== normalize(intent.transferPda)) {
277
+ discrepancies.push(`Transfer PDA mismatch: expected ${intent.transferPda}, got ${p['transferPda']}`);
278
+ }
279
+ break;
280
+ }
281
+ case 'transfer_from_account': {
282
+ if (p['signer'] && normalize(p['signer']) !== normalize(intent.owner)) {
283
+ discrepancies.push(`Owner mismatch: expected ${intent.owner}, got ${p['signer']}`);
284
+ }
285
+ if (p['recipient'] && normalize(p['recipient']) !== normalize(intent.recipient)) {
286
+ discrepancies.push(`Recipient mismatch: expected ${intent.recipient}, got ${p['recipient']}`);
287
+ }
288
+ const txAmount = rawAmount(p['amount'], p);
289
+ if (txAmount !== null && !amountsMatch(txAmount, intent.amount, p)) {
290
+ discrepancies.push(`Amount mismatch: expected ${intent.amount}, got ${humanAmount(p)}`);
291
+ }
292
+ compareTokenSelector(intent, p, discrepancies);
293
+ break;
294
+ }
295
+ case 'deposit': {
296
+ if (p['depositor'] && normalize(p['depositor']) !== normalize(intent.owner)) {
297
+ discrepancies.push(`Owner mismatch: expected ${intent.owner}, got ${p['depositor']}`);
298
+ }
299
+ const txAmount = rawAmount(p['amount'], p);
300
+ if (txAmount !== null && !amountsMatch(txAmount, intent.amount, p)) {
301
+ discrepancies.push(`Amount mismatch: expected ${intent.amount}, got ${humanAmount(p)}`);
302
+ }
303
+ compareTokenSelector(intent, p, discrepancies);
304
+ break;
305
+ }
306
+ }
307
+ return {
308
+ verified: discrepancies.length === 0,
309
+ discrepancies,
310
+ analysis,
311
+ };
312
+ }
313
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
314
+ function normalize(addr) {
315
+ try {
316
+ return new web3_js_1.PublicKey(addr).toBase58();
317
+ }
318
+ catch {
319
+ return addr;
320
+ }
321
+ }
322
+ function rawAmount(rawStr, params) {
323
+ if (!rawStr)
324
+ return null;
325
+ const human = params['amountHuman'];
326
+ return (0, amount_utils_js_1.extractAmountFromHuman)(human);
327
+ }
328
+ function humanAmount(params) {
329
+ return params['amountHuman'] ?? params['amount'] ?? 'unknown';
330
+ }
331
+ function amountsMatch(txAmount, intentAmount, _params) {
332
+ const parsedTxAmount = (0, amount_utils_js_1.parseDecimal)(txAmount);
333
+ const parsedIntentAmount = (0, amount_utils_js_1.parseDecimal)(intentAmount);
334
+ if (parsedTxAmount === null || parsedIntentAmount === null) {
335
+ return false;
336
+ }
337
+ return (0, amount_utils_js_1.withinRelativeTolerance)(parsedIntentAmount, parsedTxAmount, AMOUNT_TOLERANCE);
338
+ }
339
+ function parseAmountString(value) {
340
+ const parsed = (0, amount_utils_js_1.parseDecimal)(value);
341
+ return parsed ? value : null;
342
+ }
343
+ function validateIntentShape(intent, discrepancies) {
344
+ switch (intent.type) {
345
+ case 'create_transfer':
346
+ case 'transfer_from_account':
347
+ case 'deposit': {
348
+ const hasToken = typeof intent.token === 'string' && intent.token.length > 0;
349
+ const hasTokenAddress = typeof intent.tokenAddress === 'string' && intent.tokenAddress.length > 0;
350
+ if ((hasToken && hasTokenAddress) || (!hasToken && !hasTokenAddress)) {
351
+ discrepancies.push(`Intent ${intent.type} must provide exactly one of 'token' or 'tokenAddress'.`);
352
+ }
353
+ if (parseAmountString(intent.amount) === null) {
354
+ discrepancies.push(`Invalid amount for ${intent.type}: expected numeric string, got "${intent.amount}".`);
355
+ }
356
+ break;
357
+ }
358
+ default:
359
+ break;
360
+ }
361
+ }
362
+ function compareTokenSelector(intent, params, discrepancies) {
363
+ const mint = params['mint'];
364
+ if (!mint)
365
+ return;
366
+ if (intent.tokenAddress && normalize(mint) !== normalize(intent.tokenAddress)) {
367
+ discrepancies.push(`Token address mismatch: expected ${intent.tokenAddress}, got ${mint}`);
368
+ }
369
+ if (intent.token) {
370
+ const txSymbol = extractSymbolFromAmountHuman(params['amountHuman']);
371
+ if (txSymbol && txSymbol.toUpperCase() !== intent.token.toUpperCase()) {
372
+ discrepancies.push(`Token symbol mismatch: expected ${intent.token}, got ${txSymbol}`);
373
+ }
374
+ }
375
+ }
376
+ function extractSymbolFromAmountHuman(amountHuman) {
377
+ if (!amountHuman)
378
+ return null;
379
+ const parts = amountHuman.trim().split(/\s+/);
380
+ if (parts.length < 2)
381
+ return null;
382
+ return parts[1] ?? null;
383
+ }
384
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verify/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REGISTRY = void 0;
4
+ exports.REGISTRY = {
5
+ programs: {
6
+ '11111111111111111111111111111111': { name: 'System Program', decoder: 'system' },
7
+ 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA': { name: 'SPL Token', decoder: 'spl-token' },
8
+ 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJe1bC5': { name: 'Associated Token Account', decoder: 'ata' },
9
+ 'ComputeBudget111111111111111111111111111111': { name: 'Compute Budget', decoder: 'compute-budget' },
10
+ 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr': { name: 'Memo', decoder: 'memo' },
11
+ 'HANDu9uNdnraNbcueGfXhd3UPu6BXfQroKAsSxFhPXEQ': { name: 'Handshake', decoder: 'handshake' },
12
+ 'SiLKos3MCFggwLsjSeuRiCdcs2MLoJNwq59XwTvEwcS': { name: 'Silkysig', decoder: 'silkysig' },
13
+ 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4': { name: 'Jupiter v6', decoder: 'jupiter' },
14
+ },
15
+ tokens: {
16
+ 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v': { symbol: 'USDC', decimals: 6 },
17
+ 'So11111111111111111111111111111111111111112': { symbol: 'SOL', decimals: 9 },
18
+ 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB': { symbol: 'USDT', decimals: 6 },
19
+ '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs': { symbol: 'ETH (Wormhole)', decimals: 8 },
20
+ 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So': { symbol: 'mSOL', decimals: 9 },
21
+ 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn': { symbol: 'JitoSOL', decimals: 9 },
22
+ },
23
+ };
24
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/verify/registry.ts"],"names":[],"mappings":";;;AAea,QAAA,QAAQ,GAAa;IAChC,QAAQ,EAAE;QACR,kCAAkC,EAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAY,OAAO,EAAE,QAAQ,EAAE;QAC1G,6CAA6C,EAAI,EAAE,IAAI,EAAE,WAAW,EAAiB,OAAO,EAAE,WAAW,EAAE;QAC3G,8CAA8C,EAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,KAAK,EAAE;QACrG,6CAA6C,EAAM,EAAE,IAAI,EAAE,gBAAgB,EAAa,OAAO,EAAE,gBAAgB,EAAE;QACnH,6CAA6C,EAAG,EAAE,IAAI,EAAE,MAAM,EAAsB,OAAO,EAAE,MAAM,EAAE;QACrG,8CAA8C,EAAE,EAAE,IAAI,EAAE,WAAW,EAAiB,OAAO,EAAE,WAAW,EAAE;QAC1G,6CAA6C,EAAI,EAAE,IAAI,EAAE,UAAU,EAAkB,OAAO,EAAE,UAAU,EAAE;QAC1G,6CAA6C,EAAG,EAAE,IAAI,EAAE,YAAY,EAAgB,OAAO,EAAE,SAAS,EAAE;KACzG;IACD,MAAM,EAAE;QACN,8CAA8C,EAAE,EAAE,MAAM,EAAE,MAAM,EAAc,QAAQ,EAAE,CAAC,EAAE;QAC3F,6CAA6C,EAAK,EAAE,MAAM,EAAE,KAAK,EAAe,QAAQ,EAAE,CAAC,EAAE;QAC7F,8CAA8C,EAAE,EAAE,MAAM,EAAE,MAAM,EAAc,QAAQ,EAAE,CAAC,EAAE;QAC3F,8CAA8C,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAI,QAAQ,EAAE,CAAC,EAAE;QAC3F,6CAA6C,EAAG,EAAE,MAAM,EAAE,MAAM,EAAc,QAAQ,EAAE,CAAC,EAAE;QAC3F,8CAA8C,EAAE,EAAE,MAAM,EAAE,SAAS,EAAW,QAAQ,EAAE,CAAC,EAAE;KAC5F;CACF,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchTokenMeta = fetchTokenMeta;
4
+ exports.createTokenCache = createTokenCache;
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ // Fetches basic token metadata from a mint account.
7
+ // Returns symbol as the mint address (truncated) when metadata program is unavailable.
8
+ async function fetchTokenMeta(connection, mint) {
9
+ try {
10
+ const mintPubkey = new web3_js_1.PublicKey(mint);
11
+ const accountInfo = await connection.getAccountInfo(mintPubkey);
12
+ if (!accountInfo)
13
+ return null;
14
+ // SPL Mint layout: [44 bytes header] where decimals is at byte 44
15
+ // Layout: mintAuthorityOption(4) + mintAuthority(32) + supply(8) + decimals(1) + ...
16
+ if (accountInfo.data.length < 45)
17
+ return null;
18
+ const decimals = accountInfo.data[44];
19
+ // Use shortened mint as symbol fallback — agents can understand this
20
+ const shortMint = `${mint.slice(0, 4)}..${mint.slice(-4)}`;
21
+ return { symbol: shortMint, decimals };
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ // Cache to avoid redundant RPC calls within a single analyzeTransaction call
28
+ function createTokenCache(registry, connection) {
29
+ const cache = new Map();
30
+ // Pre-populate from registry
31
+ for (const [mint, meta] of Object.entries(registry)) {
32
+ cache.set(mint, meta);
33
+ }
34
+ return {
35
+ getSymbol(mint) {
36
+ return cache.get(mint)?.symbol ?? `${mint.slice(0, 4)}..${mint.slice(-4)}`;
37
+ },
38
+ getDecimals(mint) {
39
+ return cache.get(mint)?.decimals ?? 6;
40
+ },
41
+ async prefetch(mints) {
42
+ if (!connection)
43
+ return;
44
+ const unknown = mints.filter((m) => !cache.has(m));
45
+ await Promise.all(unknown.map(async (mint) => {
46
+ const meta = await fetchTokenMeta(connection, mint);
47
+ cache.set(mint, meta);
48
+ }));
49
+ },
50
+ };
51
+ }
52
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/verify/rpc.ts"],"names":[],"mappings":";;AASA,wCAqBC;AAGD,4CA6BC;AA9DD,6CAAwD;AAOxD,oDAAoD;AACpD,uFAAuF;AAChF,KAAK,UAAU,cAAc,CAClC,UAAsB,EACtB,IAAY;IAEZ,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,kEAAkE;QAClE,qFAAqF;QACrF,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtC,qEAAqE;QACrE,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAgB,gBAAgB,CAC9B,QAA8D,EAC9D,UAAuB;IAEvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAElD,6BAA6B;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;QACL,SAAS,CAAC,IAAY;YACpB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,CAAC;QACD,WAAW,CAAC,IAAY;YACtB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAe;YAC5B,IAAI,CAAC,UAAU;gBAAE,OAAO;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACpD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};