@usesigil/kit 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.
Files changed (631) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +190 -0
  3. package/dist/advanced-analytics.d.ts +118 -0
  4. package/dist/advanced-analytics.d.ts.map +1 -0
  5. package/dist/advanced-analytics.js +341 -0
  6. package/dist/advanced-analytics.js.map +1 -0
  7. package/dist/agent-analytics.d.ts +76 -0
  8. package/dist/agent-analytics.d.ts.map +1 -0
  9. package/dist/agent-analytics.js +179 -0
  10. package/dist/agent-analytics.js.map +1 -0
  11. package/dist/agent-errors.d.ts +151 -0
  12. package/dist/agent-errors.d.ts.map +1 -0
  13. package/dist/agent-errors.js +2001 -0
  14. package/dist/agent-errors.js.map +1 -0
  15. package/dist/alt-config.d.ts +43 -0
  16. package/dist/alt-config.d.ts.map +1 -0
  17. package/dist/alt-config.js +78 -0
  18. package/dist/alt-config.js.map +1 -0
  19. package/dist/alt-loader.d.ts +47 -0
  20. package/dist/alt-loader.d.ts.map +1 -0
  21. package/dist/alt-loader.js +143 -0
  22. package/dist/alt-loader.js.map +1 -0
  23. package/dist/balance-tracker.d.ts +87 -0
  24. package/dist/balance-tracker.d.ts.map +1 -0
  25. package/dist/balance-tracker.js +181 -0
  26. package/dist/balance-tracker.js.map +1 -0
  27. package/dist/composer.d.ts +56 -0
  28. package/dist/composer.d.ts.map +1 -0
  29. package/dist/composer.js +77 -0
  30. package/dist/composer.js.map +1 -0
  31. package/dist/core/engine.d.ts +17 -0
  32. package/dist/core/engine.d.ts.map +1 -0
  33. package/dist/core/engine.js +177 -0
  34. package/dist/core/engine.js.map +1 -0
  35. package/dist/core/errors.d.ts +24 -0
  36. package/dist/core/errors.d.ts.map +1 -0
  37. package/dist/core/errors.js +16 -0
  38. package/dist/core/errors.js.map +1 -0
  39. package/dist/core/index.d.ts +9 -0
  40. package/dist/core/index.d.ts.map +1 -0
  41. package/dist/core/index.js +10 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/core/policies.d.ts +75 -0
  44. package/dist/core/policies.d.ts.map +1 -0
  45. package/dist/core/policies.js +126 -0
  46. package/dist/core/policies.js.map +1 -0
  47. package/dist/core/registry.d.ts +29 -0
  48. package/dist/core/registry.d.ts.map +1 -0
  49. package/dist/core/registry.js +125 -0
  50. package/dist/core/registry.js.map +1 -0
  51. package/dist/core/state.d.ts +71 -0
  52. package/dist/core/state.d.ts.map +1 -0
  53. package/dist/core/state.js +169 -0
  54. package/dist/core/state.js.map +1 -0
  55. package/dist/create-vault.d.ts +58 -0
  56. package/dist/create-vault.d.ts.map +1 -0
  57. package/dist/create-vault.js +90 -0
  58. package/dist/create-vault.js.map +1 -0
  59. package/dist/custody-adapter.d.ts +54 -0
  60. package/dist/custody-adapter.d.ts.map +1 -0
  61. package/dist/custody-adapter.js +45 -0
  62. package/dist/custody-adapter.js.map +1 -0
  63. package/dist/event-analytics.d.ts +45 -0
  64. package/dist/event-analytics.d.ts.map +1 -0
  65. package/dist/event-analytics.js +277 -0
  66. package/dist/event-analytics.js.map +1 -0
  67. package/dist/events.d.ts +56 -0
  68. package/dist/events.d.ts.map +1 -0
  69. package/dist/events.js +151 -0
  70. package/dist/events.js.map +1 -0
  71. package/dist/formatting.d.ts +103 -0
  72. package/dist/formatting.d.ts.map +1 -0
  73. package/dist/formatting.js +244 -0
  74. package/dist/formatting.js.map +1 -0
  75. package/dist/generated/accounts/agentSpendOverlay.d.ts +54 -0
  76. package/dist/generated/accounts/agentSpendOverlay.d.ts.map +1 -0
  77. package/dist/generated/accounts/agentSpendOverlay.js +74 -0
  78. package/dist/generated/accounts/agentSpendOverlay.js.map +1 -0
  79. package/dist/generated/accounts/agentVault.d.ts +95 -0
  80. package/dist/generated/accounts/agentVault.d.ts.map +1 -0
  81. package/dist/generated/accounts/agentVault.js +83 -0
  82. package/dist/generated/accounts/agentVault.js.map +1 -0
  83. package/dist/generated/accounts/escrowDeposit.d.ts +50 -0
  84. package/dist/generated/accounts/escrowDeposit.d.ts.map +1 -0
  85. package/dist/generated/accounts/escrowDeposit.js +76 -0
  86. package/dist/generated/accounts/escrowDeposit.js.map +1 -0
  87. package/dist/generated/accounts/index.d.ts +17 -0
  88. package/dist/generated/accounts/index.d.ts.map +1 -0
  89. package/dist/generated/accounts/index.js +17 -0
  90. package/dist/generated/accounts/index.js.map +1 -0
  91. package/dist/generated/accounts/instructionConstraints.d.ts +37 -0
  92. package/dist/generated/accounts/instructionConstraints.d.ts.map +1 -0
  93. package/dist/generated/accounts/instructionConstraints.js +64 -0
  94. package/dist/generated/accounts/instructionConstraints.js.map +1 -0
  95. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +53 -0
  96. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +1 -0
  97. package/dist/generated/accounts/pendingConstraintsUpdate.js +68 -0
  98. package/dist/generated/accounts/pendingConstraintsUpdate.js.map +1 -0
  99. package/dist/generated/accounts/pendingPolicyUpdate.d.ts +72 -0
  100. package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -0
  101. package/dist/generated/accounts/pendingPolicyUpdate.js +97 -0
  102. package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -0
  103. package/dist/generated/accounts/policyConfig.d.ts +180 -0
  104. package/dist/generated/accounts/policyConfig.d.ts.map +1 -0
  105. package/dist/generated/accounts/policyConfig.js +88 -0
  106. package/dist/generated/accounts/policyConfig.js.map +1 -0
  107. package/dist/generated/accounts/sessionAuthority.d.ts +104 -0
  108. package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -0
  109. package/dist/generated/accounts/sessionAuthority.js +86 -0
  110. package/dist/generated/accounts/sessionAuthority.js.map +1 -0
  111. package/dist/generated/accounts/spendTracker.d.ts +60 -0
  112. package/dist/generated/accounts/spendTracker.d.ts.map +1 -0
  113. package/dist/generated/accounts/spendTracker.js +74 -0
  114. package/dist/generated/accounts/spendTracker.js.map +1 -0
  115. package/dist/generated/errors/index.d.ts +9 -0
  116. package/dist/generated/errors/index.d.ts.map +1 -0
  117. package/dist/generated/errors/index.js +9 -0
  118. package/dist/generated/errors/index.js.map +1 -0
  119. package/dist/generated/errors/sigil.d.ts +162 -0
  120. package/dist/generated/errors/sigil.d.ts.map +1 -0
  121. package/dist/generated/errors/sigil.js +237 -0
  122. package/dist/generated/errors/sigil.js.map +1 -0
  123. package/dist/generated/event-discriminators.d.ts +2 -0
  124. package/dist/generated/event-discriminators.d.ts.map +1 -0
  125. package/dist/generated/event-discriminators.js +39 -0
  126. package/dist/generated/event-discriminators.js.map +1 -0
  127. package/dist/generated/index.d.ts +13 -0
  128. package/dist/generated/index.d.ts.map +1 -0
  129. package/dist/generated/index.js +13 -0
  130. package/dist/generated/index.js.map +1 -0
  131. package/dist/generated/instructions/agentTransfer.d.ts +109 -0
  132. package/dist/generated/instructions/agentTransfer.d.ts.map +1 -0
  133. package/dist/generated/instructions/agentTransfer.js +211 -0
  134. package/dist/generated/instructions/agentTransfer.js.map +1 -0
  135. package/dist/generated/instructions/applyConstraintsUpdate.d.ts +55 -0
  136. package/dist/generated/instructions/applyConstraintsUpdate.d.ts.map +1 -0
  137. package/dist/generated/instructions/applyConstraintsUpdate.js +129 -0
  138. package/dist/generated/instructions/applyConstraintsUpdate.js.map +1 -0
  139. package/dist/generated/instructions/applyPendingPolicy.d.ts +55 -0
  140. package/dist/generated/instructions/applyPendingPolicy.d.ts.map +1 -0
  141. package/dist/generated/instructions/applyPendingPolicy.js +122 -0
  142. package/dist/generated/instructions/applyPendingPolicy.js.map +1 -0
  143. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts +51 -0
  144. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts.map +1 -0
  145. package/dist/generated/instructions/cancelConstraintsUpdate.js +115 -0
  146. package/dist/generated/instructions/cancelConstraintsUpdate.js.map +1 -0
  147. package/dist/generated/instructions/cancelPendingPolicy.d.ts +55 -0
  148. package/dist/generated/instructions/cancelPendingPolicy.d.ts.map +1 -0
  149. package/dist/generated/instructions/cancelPendingPolicy.js +122 -0
  150. package/dist/generated/instructions/cancelPendingPolicy.js.map +1 -0
  151. package/dist/generated/instructions/closeInstructionConstraints.d.ts +55 -0
  152. package/dist/generated/instructions/closeInstructionConstraints.d.ts.map +1 -0
  153. package/dist/generated/instructions/closeInstructionConstraints.js +120 -0
  154. package/dist/generated/instructions/closeInstructionConstraints.js.map +1 -0
  155. package/dist/generated/instructions/closeSettledEscrow.d.ts +72 -0
  156. package/dist/generated/instructions/closeSettledEscrow.d.ts.map +1 -0
  157. package/dist/generated/instructions/closeSettledEscrow.js +127 -0
  158. package/dist/generated/instructions/closeSettledEscrow.js.map +1 -0
  159. package/dist/generated/instructions/closeVault.d.ts +69 -0
  160. package/dist/generated/instructions/closeVault.d.ts.map +1 -0
  161. package/dist/generated/instructions/closeVault.js +142 -0
  162. package/dist/generated/instructions/closeVault.js.map +1 -0
  163. package/dist/generated/instructions/createEscrow.d.ts +131 -0
  164. package/dist/generated/instructions/createEscrow.d.ts.map +1 -0
  165. package/dist/generated/instructions/createEscrow.js +272 -0
  166. package/dist/generated/instructions/createEscrow.js.map +1 -0
  167. package/dist/generated/instructions/createInstructionConstraints.d.ts +69 -0
  168. package/dist/generated/instructions/createInstructionConstraints.d.ts.map +1 -0
  169. package/dist/generated/instructions/createInstructionConstraints.js +145 -0
  170. package/dist/generated/instructions/createInstructionConstraints.js.map +1 -0
  171. package/dist/generated/instructions/depositFunds.d.ts +82 -0
  172. package/dist/generated/instructions/depositFunds.d.ts.map +1 -0
  173. package/dist/generated/instructions/depositFunds.js +198 -0
  174. package/dist/generated/instructions/depositFunds.js.map +1 -0
  175. package/dist/generated/instructions/finalizeSession.d.ts +126 -0
  176. package/dist/generated/instructions/finalizeSession.d.ts.map +1 -0
  177. package/dist/generated/instructions/finalizeSession.js +218 -0
  178. package/dist/generated/instructions/finalizeSession.js.map +1 -0
  179. package/dist/generated/instructions/freezeVault.d.ts +40 -0
  180. package/dist/generated/instructions/freezeVault.d.ts.map +1 -0
  181. package/dist/generated/instructions/freezeVault.js +66 -0
  182. package/dist/generated/instructions/freezeVault.js.map +1 -0
  183. package/dist/generated/instructions/index.d.ts +37 -0
  184. package/dist/generated/instructions/index.d.ts.map +1 -0
  185. package/dist/generated/instructions/index.js +37 -0
  186. package/dist/generated/instructions/index.js.map +1 -0
  187. package/dist/generated/instructions/initializeVault.d.ts +122 -0
  188. package/dist/generated/instructions/initializeVault.d.ts.map +1 -0
  189. package/dist/generated/instructions/initializeVault.js +187 -0
  190. package/dist/generated/instructions/initializeVault.js.map +1 -0
  191. package/dist/generated/instructions/pauseAgent.d.ts +44 -0
  192. package/dist/generated/instructions/pauseAgent.d.ts.map +1 -0
  193. package/dist/generated/instructions/pauseAgent.js +72 -0
  194. package/dist/generated/instructions/pauseAgent.js.map +1 -0
  195. package/dist/generated/instructions/queueConstraintsUpdate.d.ts +73 -0
  196. package/dist/generated/instructions/queueConstraintsUpdate.d.ts.map +1 -0
  197. package/dist/generated/instructions/queueConstraintsUpdate.js +168 -0
  198. package/dist/generated/instructions/queueConstraintsUpdate.js.map +1 -0
  199. package/dist/generated/instructions/queuePolicyUpdate.d.ts +116 -0
  200. package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -0
  201. package/dist/generated/instructions/queuePolicyUpdate.js +173 -0
  202. package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -0
  203. package/dist/generated/instructions/reactivateVault.d.ts +47 -0
  204. package/dist/generated/instructions/reactivateVault.d.ts.map +1 -0
  205. package/dist/generated/instructions/reactivateVault.js +74 -0
  206. package/dist/generated/instructions/reactivateVault.js.map +1 -0
  207. package/dist/generated/instructions/refundEscrow.d.ts +74 -0
  208. package/dist/generated/instructions/refundEscrow.d.ts.map +1 -0
  209. package/dist/generated/instructions/refundEscrow.js +142 -0
  210. package/dist/generated/instructions/refundEscrow.js.map +1 -0
  211. package/dist/generated/instructions/registerAgent.d.ts +55 -0
  212. package/dist/generated/instructions/registerAgent.d.ts.map +1 -0
  213. package/dist/generated/instructions/registerAgent.js +85 -0
  214. package/dist/generated/instructions/registerAgent.js.map +1 -0
  215. package/dist/generated/instructions/revokeAgent.d.ts +49 -0
  216. package/dist/generated/instructions/revokeAgent.d.ts.map +1 -0
  217. package/dist/generated/instructions/revokeAgent.js +81 -0
  218. package/dist/generated/instructions/revokeAgent.js.map +1 -0
  219. package/dist/generated/instructions/settleEscrow.d.ts +80 -0
  220. package/dist/generated/instructions/settleEscrow.d.ts.map +1 -0
  221. package/dist/generated/instructions/settleEscrow.js +173 -0
  222. package/dist/generated/instructions/settleEscrow.js.map +1 -0
  223. package/dist/generated/instructions/syncPositions.d.ts +44 -0
  224. package/dist/generated/instructions/syncPositions.d.ts.map +1 -0
  225. package/dist/generated/instructions/syncPositions.js +72 -0
  226. package/dist/generated/instructions/syncPositions.js.map +1 -0
  227. package/dist/generated/instructions/unpauseAgent.d.ts +44 -0
  228. package/dist/generated/instructions/unpauseAgent.d.ts.map +1 -0
  229. package/dist/generated/instructions/unpauseAgent.js +72 -0
  230. package/dist/generated/instructions/unpauseAgent.js.map +1 -0
  231. package/dist/generated/instructions/updateAgentPermissions.d.ts +68 -0
  232. package/dist/generated/instructions/updateAgentPermissions.d.ts.map +1 -0
  233. package/dist/generated/instructions/updateAgentPermissions.js +139 -0
  234. package/dist/generated/instructions/updateAgentPermissions.js.map +1 -0
  235. package/dist/generated/instructions/updateInstructionConstraints.d.ts +65 -0
  236. package/dist/generated/instructions/updateInstructionConstraints.d.ts.map +1 -0
  237. package/dist/generated/instructions/updateInstructionConstraints.js +131 -0
  238. package/dist/generated/instructions/updateInstructionConstraints.js.map +1 -0
  239. package/dist/generated/instructions/updatePolicy.d.ts +108 -0
  240. package/dist/generated/instructions/updatePolicy.d.ts.map +1 -0
  241. package/dist/generated/instructions/updatePolicy.js +143 -0
  242. package/dist/generated/instructions/updatePolicy.js.map +1 -0
  243. package/dist/generated/instructions/validateAndAuthorize.d.ts +171 -0
  244. package/dist/generated/instructions/validateAndAuthorize.d.ts.map +1 -0
  245. package/dist/generated/instructions/validateAndAuthorize.js +271 -0
  246. package/dist/generated/instructions/validateAndAuthorize.js.map +1 -0
  247. package/dist/generated/instructions/withdrawFunds.d.ts +74 -0
  248. package/dist/generated/instructions/withdrawFunds.d.ts.map +1 -0
  249. package/dist/generated/instructions/withdrawFunds.js +166 -0
  250. package/dist/generated/instructions/withdrawFunds.js.map +1 -0
  251. package/dist/generated/programs/index.d.ts +9 -0
  252. package/dist/generated/programs/index.d.ts.map +1 -0
  253. package/dist/generated/programs/index.js +9 -0
  254. package/dist/generated/programs/index.js.map +1 -0
  255. package/dist/generated/programs/sigil.d.ts +173 -0
  256. package/dist/generated/programs/sigil.d.ts.map +1 -0
  257. package/dist/generated/programs/sigil.js +443 -0
  258. package/dist/generated/programs/sigil.js.map +1 -0
  259. package/dist/generated/types/accountConstraint.d.ts +18 -0
  260. package/dist/generated/types/accountConstraint.d.ts.map +1 -0
  261. package/dist/generated/types/accountConstraint.js +24 -0
  262. package/dist/generated/types/accountConstraint.js.map +1 -0
  263. package/dist/generated/types/actionAuthorized.d.ts +39 -0
  264. package/dist/generated/types/actionAuthorized.d.ts.map +1 -0
  265. package/dist/generated/types/actionAuthorized.js +43 -0
  266. package/dist/generated/types/actionAuthorized.js.map +1 -0
  267. package/dist/generated/types/actionType.d.ts +37 -0
  268. package/dist/generated/types/actionType.d.ts.map +1 -0
  269. package/dist/generated/types/actionType.js +43 -0
  270. package/dist/generated/types/actionType.js.map +1 -0
  271. package/dist/generated/types/agentContributionEntry.d.ts +49 -0
  272. package/dist/generated/types/agentContributionEntry.d.ts.map +1 -0
  273. package/dist/generated/types/agentContributionEntry.js +26 -0
  274. package/dist/generated/types/agentContributionEntry.js.map +1 -0
  275. package/dist/generated/types/agentEntry.d.ts +24 -0
  276. package/dist/generated/types/agentEntry.d.ts.map +1 -0
  277. package/dist/generated/types/agentEntry.js +28 -0
  278. package/dist/generated/types/agentEntry.js.map +1 -0
  279. package/dist/generated/types/agentPausedEvent.d.ts +22 -0
  280. package/dist/generated/types/agentPausedEvent.d.ts.map +1 -0
  281. package/dist/generated/types/agentPausedEvent.js +26 -0
  282. package/dist/generated/types/agentPausedEvent.js.map +1 -0
  283. package/dist/generated/types/agentPermissionsUpdated.d.ts +24 -0
  284. package/dist/generated/types/agentPermissionsUpdated.d.ts.map +1 -0
  285. package/dist/generated/types/agentPermissionsUpdated.js +28 -0
  286. package/dist/generated/types/agentPermissionsUpdated.js.map +1 -0
  287. package/dist/generated/types/agentRegistered.d.ts +26 -0
  288. package/dist/generated/types/agentRegistered.d.ts.map +1 -0
  289. package/dist/generated/types/agentRegistered.js +30 -0
  290. package/dist/generated/types/agentRegistered.js.map +1 -0
  291. package/dist/generated/types/agentRevoked.d.ts +24 -0
  292. package/dist/generated/types/agentRevoked.d.ts.map +1 -0
  293. package/dist/generated/types/agentRevoked.js +28 -0
  294. package/dist/generated/types/agentRevoked.js.map +1 -0
  295. package/dist/generated/types/agentSpendLimitChecked.d.ts +28 -0
  296. package/dist/generated/types/agentSpendLimitChecked.d.ts.map +1 -0
  297. package/dist/generated/types/agentSpendLimitChecked.js +32 -0
  298. package/dist/generated/types/agentSpendLimitChecked.js.map +1 -0
  299. package/dist/generated/types/agentTransferExecuted.d.ts +24 -0
  300. package/dist/generated/types/agentTransferExecuted.d.ts.map +1 -0
  301. package/dist/generated/types/agentTransferExecuted.js +28 -0
  302. package/dist/generated/types/agentTransferExecuted.js.map +1 -0
  303. package/dist/generated/types/agentUnpausedEvent.d.ts +22 -0
  304. package/dist/generated/types/agentUnpausedEvent.d.ts.map +1 -0
  305. package/dist/generated/types/agentUnpausedEvent.js +26 -0
  306. package/dist/generated/types/agentUnpausedEvent.js.map +1 -0
  307. package/dist/generated/types/constraintEntry.d.ts +23 -0
  308. package/dist/generated/types/constraintEntry.d.ts.map +1 -0
  309. package/dist/generated/types/constraintEntry.js +27 -0
  310. package/dist/generated/types/constraintEntry.js.map +1 -0
  311. package/dist/generated/types/constraintOperator.d.ts +22 -0
  312. package/dist/generated/types/constraintOperator.d.ts.map +1 -0
  313. package/dist/generated/types/constraintOperator.js +28 -0
  314. package/dist/generated/types/constraintOperator.js.map +1 -0
  315. package/dist/generated/types/constraintsChangeApplied.d.ts +20 -0
  316. package/dist/generated/types/constraintsChangeApplied.d.ts.map +1 -0
  317. package/dist/generated/types/constraintsChangeApplied.js +24 -0
  318. package/dist/generated/types/constraintsChangeApplied.js.map +1 -0
  319. package/dist/generated/types/constraintsChangeCancelled.d.ts +16 -0
  320. package/dist/generated/types/constraintsChangeCancelled.d.ts.map +1 -0
  321. package/dist/generated/types/constraintsChangeCancelled.js +18 -0
  322. package/dist/generated/types/constraintsChangeCancelled.js.map +1 -0
  323. package/dist/generated/types/constraintsChangeQueued.d.ts +20 -0
  324. package/dist/generated/types/constraintsChangeQueued.d.ts.map +1 -0
  325. package/dist/generated/types/constraintsChangeQueued.js +24 -0
  326. package/dist/generated/types/constraintsChangeQueued.js.map +1 -0
  327. package/dist/generated/types/dataConstraint.d.ts +23 -0
  328. package/dist/generated/types/dataConstraint.d.ts.map +1 -0
  329. package/dist/generated/types/dataConstraint.js +27 -0
  330. package/dist/generated/types/dataConstraint.js.map +1 -0
  331. package/dist/generated/types/delegationRevoked.d.ts +22 -0
  332. package/dist/generated/types/delegationRevoked.d.ts.map +1 -0
  333. package/dist/generated/types/delegationRevoked.js +26 -0
  334. package/dist/generated/types/delegationRevoked.js.map +1 -0
  335. package/dist/generated/types/epochBucket.d.ts +28 -0
  336. package/dist/generated/types/epochBucket.d.ts.map +1 -0
  337. package/dist/generated/types/epochBucket.js +24 -0
  338. package/dist/generated/types/epochBucket.js.map +1 -0
  339. package/dist/generated/types/escrowCreated.d.ts +30 -0
  340. package/dist/generated/types/escrowCreated.d.ts.map +1 -0
  341. package/dist/generated/types/escrowCreated.js +34 -0
  342. package/dist/generated/types/escrowCreated.js.map +1 -0
  343. package/dist/generated/types/escrowRefunded.d.ts +26 -0
  344. package/dist/generated/types/escrowRefunded.d.ts.map +1 -0
  345. package/dist/generated/types/escrowRefunded.js +30 -0
  346. package/dist/generated/types/escrowRefunded.js.map +1 -0
  347. package/dist/generated/types/escrowSettled.d.ts +26 -0
  348. package/dist/generated/types/escrowSettled.d.ts.map +1 -0
  349. package/dist/generated/types/escrowSettled.js +30 -0
  350. package/dist/generated/types/escrowSettled.js.map +1 -0
  351. package/dist/generated/types/escrowStatus.d.ts +18 -0
  352. package/dist/generated/types/escrowStatus.d.ts.map +1 -0
  353. package/dist/generated/types/escrowStatus.js +24 -0
  354. package/dist/generated/types/escrowStatus.js.map +1 -0
  355. package/dist/generated/types/feesCollected.d.ts +38 -0
  356. package/dist/generated/types/feesCollected.d.ts.map +1 -0
  357. package/dist/generated/types/feesCollected.js +42 -0
  358. package/dist/generated/types/feesCollected.js.map +1 -0
  359. package/dist/generated/types/fundsDeposited.d.ts +24 -0
  360. package/dist/generated/types/fundsDeposited.d.ts.map +1 -0
  361. package/dist/generated/types/fundsDeposited.js +28 -0
  362. package/dist/generated/types/fundsDeposited.js.map +1 -0
  363. package/dist/generated/types/fundsWithdrawn.d.ts +26 -0
  364. package/dist/generated/types/fundsWithdrawn.d.ts.map +1 -0
  365. package/dist/generated/types/fundsWithdrawn.js +30 -0
  366. package/dist/generated/types/fundsWithdrawn.js.map +1 -0
  367. package/dist/generated/types/index.d.ts +50 -0
  368. package/dist/generated/types/index.d.ts.map +1 -0
  369. package/dist/generated/types/index.js +50 -0
  370. package/dist/generated/types/index.js.map +1 -0
  371. package/dist/generated/types/instructionConstraintsClosed.d.ts +20 -0
  372. package/dist/generated/types/instructionConstraintsClosed.d.ts.map +1 -0
  373. package/dist/generated/types/instructionConstraintsClosed.js +24 -0
  374. package/dist/generated/types/instructionConstraintsClosed.js.map +1 -0
  375. package/dist/generated/types/instructionConstraintsCreated.d.ts +24 -0
  376. package/dist/generated/types/instructionConstraintsCreated.d.ts.map +1 -0
  377. package/dist/generated/types/instructionConstraintsCreated.js +28 -0
  378. package/dist/generated/types/instructionConstraintsCreated.js.map +1 -0
  379. package/dist/generated/types/instructionConstraintsUpdated.d.ts +24 -0
  380. package/dist/generated/types/instructionConstraintsUpdated.d.ts.map +1 -0
  381. package/dist/generated/types/instructionConstraintsUpdated.js +28 -0
  382. package/dist/generated/types/instructionConstraintsUpdated.js.map +1 -0
  383. package/dist/generated/types/policyChangeApplied.d.ts +20 -0
  384. package/dist/generated/types/policyChangeApplied.d.ts.map +1 -0
  385. package/dist/generated/types/policyChangeApplied.js +24 -0
  386. package/dist/generated/types/policyChangeApplied.js.map +1 -0
  387. package/dist/generated/types/policyChangeCancelled.d.ts +16 -0
  388. package/dist/generated/types/policyChangeCancelled.d.ts.map +1 -0
  389. package/dist/generated/types/policyChangeCancelled.js +18 -0
  390. package/dist/generated/types/policyChangeCancelled.js.map +1 -0
  391. package/dist/generated/types/policyChangeQueued.d.ts +20 -0
  392. package/dist/generated/types/policyChangeQueued.d.ts.map +1 -0
  393. package/dist/generated/types/policyChangeQueued.js +24 -0
  394. package/dist/generated/types/policyChangeQueued.js.map +1 -0
  395. package/dist/generated/types/policyUpdated.d.ts +34 -0
  396. package/dist/generated/types/policyUpdated.d.ts.map +1 -0
  397. package/dist/generated/types/policyUpdated.js +38 -0
  398. package/dist/generated/types/policyUpdated.js.map +1 -0
  399. package/dist/generated/types/positionsSynced.d.ts +24 -0
  400. package/dist/generated/types/positionsSynced.d.ts.map +1 -0
  401. package/dist/generated/types/positionsSynced.js +28 -0
  402. package/dist/generated/types/positionsSynced.js.map +1 -0
  403. package/dist/generated/types/protocolSpendCounter.d.ts +33 -0
  404. package/dist/generated/types/protocolSpendCounter.d.ts.map +1 -0
  405. package/dist/generated/types/protocolSpendCounter.js +26 -0
  406. package/dist/generated/types/protocolSpendCounter.js.map +1 -0
  407. package/dist/generated/types/sessionFinalized.d.ts +32 -0
  408. package/dist/generated/types/sessionFinalized.d.ts.map +1 -0
  409. package/dist/generated/types/sessionFinalized.js +36 -0
  410. package/dist/generated/types/sessionFinalized.js.map +1 -0
  411. package/dist/generated/types/vaultClosed.d.ts +22 -0
  412. package/dist/generated/types/vaultClosed.d.ts.map +1 -0
  413. package/dist/generated/types/vaultClosed.js +26 -0
  414. package/dist/generated/types/vaultClosed.js.map +1 -0
  415. package/dist/generated/types/vaultCreated.d.ts +24 -0
  416. package/dist/generated/types/vaultCreated.d.ts.map +1 -0
  417. package/dist/generated/types/vaultCreated.js +28 -0
  418. package/dist/generated/types/vaultCreated.js.map +1 -0
  419. package/dist/generated/types/vaultFrozen.d.ts +24 -0
  420. package/dist/generated/types/vaultFrozen.d.ts.map +1 -0
  421. package/dist/generated/types/vaultFrozen.js +28 -0
  422. package/dist/generated/types/vaultFrozen.js.map +1 -0
  423. package/dist/generated/types/vaultReactivated.d.ts +24 -0
  424. package/dist/generated/types/vaultReactivated.d.ts.map +1 -0
  425. package/dist/generated/types/vaultReactivated.js +28 -0
  426. package/dist/generated/types/vaultReactivated.js.map +1 -0
  427. package/dist/generated/types/vaultStatus.d.ts +19 -0
  428. package/dist/generated/types/vaultStatus.d.ts.map +1 -0
  429. package/dist/generated/types/vaultStatus.js +25 -0
  430. package/dist/generated/types/vaultStatus.js.map +1 -0
  431. package/dist/index.d.ts +74 -0
  432. package/dist/index.d.ts.map +1 -0
  433. package/dist/index.js +113 -0
  434. package/dist/index.js.map +1 -0
  435. package/dist/inscribe.d.ts +134 -0
  436. package/dist/inscribe.d.ts.map +1 -0
  437. package/dist/inscribe.js +149 -0
  438. package/dist/inscribe.js.map +1 -0
  439. package/dist/inspector.d.ts +85 -0
  440. package/dist/inspector.d.ts.map +1 -0
  441. package/dist/inspector.js +188 -0
  442. package/dist/inspector.js.map +1 -0
  443. package/dist/math-utils.d.ts +15 -0
  444. package/dist/math-utils.d.ts.map +1 -0
  445. package/dist/math-utils.js +29 -0
  446. package/dist/math-utils.js.map +1 -0
  447. package/dist/owner-transaction.d.ts +42 -0
  448. package/dist/owner-transaction.d.ts.map +1 -0
  449. package/dist/owner-transaction.js +71 -0
  450. package/dist/owner-transaction.js.map +1 -0
  451. package/dist/policies.d.ts +70 -0
  452. package/dist/policies.d.ts.map +1 -0
  453. package/dist/policies.js +87 -0
  454. package/dist/policies.js.map +1 -0
  455. package/dist/portfolio-analytics.d.ts +82 -0
  456. package/dist/portfolio-analytics.d.ts.map +1 -0
  457. package/dist/portfolio-analytics.js +232 -0
  458. package/dist/portfolio-analytics.js.map +1 -0
  459. package/dist/presets.d.ts +108 -0
  460. package/dist/presets.d.ts.map +1 -0
  461. package/dist/presets.js +110 -0
  462. package/dist/presets.js.map +1 -0
  463. package/dist/priority-fees.d.ts +49 -0
  464. package/dist/priority-fees.d.ts.map +1 -0
  465. package/dist/priority-fees.js +175 -0
  466. package/dist/priority-fees.js.map +1 -0
  467. package/dist/protocol-analytics.d.ts +35 -0
  468. package/dist/protocol-analytics.d.ts.map +1 -0
  469. package/dist/protocol-analytics.js +64 -0
  470. package/dist/protocol-analytics.js.map +1 -0
  471. package/dist/protocol-names.d.ts +9 -0
  472. package/dist/protocol-names.d.ts.map +1 -0
  473. package/dist/protocol-names.js +18 -0
  474. package/dist/protocol-names.js.map +1 -0
  475. package/dist/protocol-resolver.d.ts +54 -0
  476. package/dist/protocol-resolver.d.ts.map +1 -0
  477. package/dist/protocol-resolver.js +123 -0
  478. package/dist/protocol-resolver.js.map +1 -0
  479. package/dist/resolve-accounts.d.ts +38 -0
  480. package/dist/resolve-accounts.d.ts.map +1 -0
  481. package/dist/resolve-accounts.js +120 -0
  482. package/dist/resolve-accounts.js.map +1 -0
  483. package/dist/rpc-helpers.d.ts +50 -0
  484. package/dist/rpc-helpers.d.ts.map +1 -0
  485. package/dist/rpc-helpers.js +119 -0
  486. package/dist/rpc-helpers.js.map +1 -0
  487. package/dist/seal.d.ts +211 -0
  488. package/dist/seal.d.ts.map +1 -0
  489. package/dist/seal.js +569 -0
  490. package/dist/seal.js.map +1 -0
  491. package/dist/security-analytics.d.ts +85 -0
  492. package/dist/security-analytics.d.ts.map +1 -0
  493. package/dist/security-analytics.js +510 -0
  494. package/dist/security-analytics.js.map +1 -0
  495. package/dist/shield.d.ts +235 -0
  496. package/dist/shield.d.ts.map +1 -0
  497. package/dist/shield.js +701 -0
  498. package/dist/shield.js.map +1 -0
  499. package/dist/simulation.d.ts +111 -0
  500. package/dist/simulation.d.ts.map +1 -0
  501. package/dist/simulation.js +514 -0
  502. package/dist/simulation.js.map +1 -0
  503. package/dist/spending-analytics.d.ts +91 -0
  504. package/dist/spending-analytics.d.ts.map +1 -0
  505. package/dist/spending-analytics.js +217 -0
  506. package/dist/spending-analytics.js.map +1 -0
  507. package/dist/state-resolver.d.ts +173 -0
  508. package/dist/state-resolver.d.ts.map +1 -0
  509. package/dist/state-resolver.js +660 -0
  510. package/dist/state-resolver.js.map +1 -0
  511. package/dist/tee/cache.d.ts +28 -0
  512. package/dist/tee/cache.d.ts.map +1 -0
  513. package/dist/tee/cache.js +75 -0
  514. package/dist/tee/cache.js.map +1 -0
  515. package/dist/tee/index.d.ts +9 -0
  516. package/dist/tee/index.d.ts.map +1 -0
  517. package/dist/tee/index.js +9 -0
  518. package/dist/tee/index.js.map +1 -0
  519. package/dist/tee/nitro-root.d.ts +11 -0
  520. package/dist/tee/nitro-root.d.ts.map +1 -0
  521. package/dist/tee/nitro-root.js +24 -0
  522. package/dist/tee/nitro-root.js.map +1 -0
  523. package/dist/tee/providers/crossmint.d.ts +12 -0
  524. package/dist/tee/providers/crossmint.d.ts.map +1 -0
  525. package/dist/tee/providers/crossmint.js +73 -0
  526. package/dist/tee/providers/crossmint.js.map +1 -0
  527. package/dist/tee/providers/privy.d.ts +12 -0
  528. package/dist/tee/providers/privy.d.ts.map +1 -0
  529. package/dist/tee/providers/privy.js +73 -0
  530. package/dist/tee/providers/privy.js.map +1 -0
  531. package/dist/tee/providers/turnkey.d.ts +34 -0
  532. package/dist/tee/providers/turnkey.d.ts.map +1 -0
  533. package/dist/tee/providers/turnkey.js +401 -0
  534. package/dist/tee/providers/turnkey.js.map +1 -0
  535. package/dist/tee/types.d.ts +124 -0
  536. package/dist/tee/types.d.ts.map +1 -0
  537. package/dist/tee/types.js +51 -0
  538. package/dist/tee/types.js.map +1 -0
  539. package/dist/tee/verify.d.ts +34 -0
  540. package/dist/tee/verify.d.ts.map +1 -0
  541. package/dist/tee/verify.js +177 -0
  542. package/dist/tee/verify.js.map +1 -0
  543. package/dist/tee/wallet-types.d.ts +61 -0
  544. package/dist/tee/wallet-types.d.ts.map +1 -0
  545. package/dist/tee/wallet-types.js +42 -0
  546. package/dist/tee/wallet-types.js.map +1 -0
  547. package/dist/testing/devnet.d.ts +64 -0
  548. package/dist/testing/devnet.d.ts.map +1 -0
  549. package/dist/testing/devnet.js +222 -0
  550. package/dist/testing/devnet.js.map +1 -0
  551. package/dist/testing/index.d.ts +3 -0
  552. package/dist/testing/index.d.ts.map +1 -0
  553. package/dist/testing/index.js +9 -0
  554. package/dist/testing/index.js.map +1 -0
  555. package/dist/testing/mock-rpc.d.ts +31 -0
  556. package/dist/testing/mock-rpc.d.ts.map +1 -0
  557. package/dist/testing/mock-rpc.js +50 -0
  558. package/dist/testing/mock-rpc.js.map +1 -0
  559. package/dist/testing/mock-state.d.ts +35 -0
  560. package/dist/testing/mock-state.d.ts.map +1 -0
  561. package/dist/testing/mock-state.js +86 -0
  562. package/dist/testing/mock-state.js.map +1 -0
  563. package/dist/tokens.d.ts +35 -0
  564. package/dist/tokens.d.ts.map +1 -0
  565. package/dist/tokens.js +157 -0
  566. package/dist/tokens.js.map +1 -0
  567. package/dist/transaction-executor.d.ts +116 -0
  568. package/dist/transaction-executor.d.ts.map +1 -0
  569. package/dist/transaction-executor.js +165 -0
  570. package/dist/transaction-executor.js.map +1 -0
  571. package/dist/types.d.ts +102 -0
  572. package/dist/types.d.ts.map +1 -0
  573. package/dist/types.js +216 -0
  574. package/dist/types.js.map +1 -0
  575. package/dist/vault-analytics.d.ts +83 -0
  576. package/dist/vault-analytics.d.ts.map +1 -0
  577. package/dist/vault-analytics.js +175 -0
  578. package/dist/vault-analytics.js.map +1 -0
  579. package/dist/velocity-tracker.d.ts +79 -0
  580. package/dist/velocity-tracker.d.ts.map +1 -0
  581. package/dist/velocity-tracker.js +183 -0
  582. package/dist/velocity-tracker.js.map +1 -0
  583. package/dist/x402/amount-guard.d.ts +26 -0
  584. package/dist/x402/amount-guard.d.ts.map +1 -0
  585. package/dist/x402/amount-guard.js +80 -0
  586. package/dist/x402/amount-guard.js.map +1 -0
  587. package/dist/x402/audit-trail.d.ts +26 -0
  588. package/dist/x402/audit-trail.d.ts.map +1 -0
  589. package/dist/x402/audit-trail.js +32 -0
  590. package/dist/x402/audit-trail.js.map +1 -0
  591. package/dist/x402/codec.d.ts +26 -0
  592. package/dist/x402/codec.d.ts.map +1 -0
  593. package/dist/x402/codec.js +95 -0
  594. package/dist/x402/codec.js.map +1 -0
  595. package/dist/x402/errors.d.ts +34 -0
  596. package/dist/x402/errors.d.ts.map +1 -0
  597. package/dist/x402/errors.js +53 -0
  598. package/dist/x402/errors.js.map +1 -0
  599. package/dist/x402/facilitator-verify.d.ts +24 -0
  600. package/dist/x402/facilitator-verify.d.ts.map +1 -0
  601. package/dist/x402/facilitator-verify.js +74 -0
  602. package/dist/x402/facilitator-verify.js.map +1 -0
  603. package/dist/x402/index.d.ts +14 -0
  604. package/dist/x402/index.d.ts.map +1 -0
  605. package/dist/x402/index.js +23 -0
  606. package/dist/x402/index.js.map +1 -0
  607. package/dist/x402/nonce-tracker.d.ts +65 -0
  608. package/dist/x402/nonce-tracker.d.ts.map +1 -0
  609. package/dist/x402/nonce-tracker.js +123 -0
  610. package/dist/x402/nonce-tracker.js.map +1 -0
  611. package/dist/x402/payment-selector.d.ts +20 -0
  612. package/dist/x402/payment-selector.d.ts.map +1 -0
  613. package/dist/x402/payment-selector.js +49 -0
  614. package/dist/x402/payment-selector.js.map +1 -0
  615. package/dist/x402/policy-bridge.d.ts +23 -0
  616. package/dist/x402/policy-bridge.d.ts.map +1 -0
  617. package/dist/x402/policy-bridge.js +67 -0
  618. package/dist/x402/policy-bridge.js.map +1 -0
  619. package/dist/x402/shielded-fetch.d.ts +46 -0
  620. package/dist/x402/shielded-fetch.d.ts.map +1 -0
  621. package/dist/x402/shielded-fetch.js +342 -0
  622. package/dist/x402/shielded-fetch.js.map +1 -0
  623. package/dist/x402/transfer-builder.d.ts +43 -0
  624. package/dist/x402/transfer-builder.d.ts.map +1 -0
  625. package/dist/x402/transfer-builder.js +126 -0
  626. package/dist/x402/transfer-builder.js.map +1 -0
  627. package/dist/x402/types.d.ts +109 -0
  628. package/dist/x402/types.d.ts.map +1 -0
  629. package/dist/x402/types.js +8 -0
  630. package/dist/x402/types.js.map +1 -0
  631. package/package.json +98 -0
@@ -0,0 +1,2001 @@
1
+ /**
2
+ * Kit-native Agent Error System
3
+ *
4
+ * Structured errors optimized for AI agent consumption.
5
+ * Every error includes a category, retryability flag, and
6
+ * recovery actions that tell the agent exactly what to do next.
7
+ *
8
+ * Maps all 71 on-chain error codes (6000-6070) plus 34 SDK
9
+ * error codes (7000-7033) to AgentError with machine-readable metadata.
10
+ *
11
+ * Zero dependency on @solana/web3.js or @coral-xyz/anchor.
12
+ * Uses bigint instead of BN for context values.
13
+ */
14
+ export const ON_CHAIN_ERROR_MAP = {
15
+ // --- Vault state errors ---
16
+ 6000: {
17
+ name: "VaultNotActive",
18
+ message: "Vault is not active",
19
+ category: "RESOURCE_NOT_FOUND",
20
+ retryable: false,
21
+ recovery_actions: [
22
+ {
23
+ action: "reactivate_vault",
24
+ description: "Reactivate the vault if it is frozen",
25
+ tool: "sigil_reactivate_vault",
26
+ },
27
+ {
28
+ action: "create_vault",
29
+ description: "Create a new vault if this one is closed",
30
+ tool: "sigil_create_vault",
31
+ },
32
+ ],
33
+ },
34
+ 6001: {
35
+ name: "UnauthorizedAgent",
36
+ message: "Signer is not a registered agent on this vault",
37
+ category: "PERMISSION",
38
+ retryable: false,
39
+ recovery_actions: [
40
+ {
41
+ action: "check_agent_registration",
42
+ description: "Verify the agent keypair is registered on the target vault",
43
+ tool: "sigil_check_vault",
44
+ },
45
+ {
46
+ action: "register_agent",
47
+ description: "Ask the vault owner to register this agent",
48
+ tool: "sigil_register_agent",
49
+ },
50
+ ],
51
+ },
52
+ 6002: {
53
+ name: "UnauthorizedOwner",
54
+ message: "Signer is not the vault owner",
55
+ category: "PERMISSION",
56
+ retryable: false,
57
+ recovery_actions: [
58
+ {
59
+ action: "verify_owner",
60
+ description: "This operation requires the vault owner's signature",
61
+ },
62
+ ],
63
+ },
64
+ 6003: {
65
+ name: "UnsupportedToken",
66
+ message: "Token is not a supported stablecoin (only USDC and USDT)",
67
+ category: "INPUT_VALIDATION",
68
+ retryable: false,
69
+ recovery_actions: [
70
+ {
71
+ action: "use_stablecoin",
72
+ description: "Use USDC or USDT mint address instead",
73
+ },
74
+ ],
75
+ },
76
+ 6004: {
77
+ name: "ProtocolNotAllowed",
78
+ message: "Protocol not allowed by vault policy",
79
+ category: "POLICY_VIOLATION",
80
+ retryable: false,
81
+ recovery_actions: [
82
+ {
83
+ action: "check_policy",
84
+ description: "Check which protocols the vault allows",
85
+ tool: "sigil_check_vault",
86
+ },
87
+ {
88
+ action: "change_protocol",
89
+ description: "Use a protocol that is on the vault's allowlist",
90
+ },
91
+ ],
92
+ },
93
+ 6005: {
94
+ name: "TransactionTooLarge",
95
+ message: "Transaction exceeds maximum single transaction size (USD)",
96
+ category: "SPENDING_CAP",
97
+ retryable: false,
98
+ recovery_actions: [
99
+ {
100
+ action: "reduce_amount",
101
+ description: "Reduce the transaction amount below maxTransactionSizeUsd",
102
+ },
103
+ {
104
+ action: "check_limits",
105
+ description: "Check the vault's maxTransactionSizeUsd policy",
106
+ tool: "sigil_check_vault",
107
+ },
108
+ ],
109
+ },
110
+ 6006: {
111
+ name: "SpendingCapExceeded",
112
+ message: "Rolling 24h spending cap would be exceeded",
113
+ category: "SPENDING_CAP",
114
+ retryable: true,
115
+ retry_after_ms: 3_600_000,
116
+ recovery_actions: [
117
+ {
118
+ action: "reduce_amount",
119
+ description: "Reduce the amount to fit within remaining daily cap",
120
+ },
121
+ {
122
+ action: "check_spending",
123
+ description: "Check remaining spending capacity",
124
+ tool: "sigil_check_spending",
125
+ },
126
+ {
127
+ action: "wait",
128
+ description: "Wait for the 24h rolling window to release spent capacity",
129
+ },
130
+ ],
131
+ },
132
+ 6007: {
133
+ name: "LeverageTooHigh",
134
+ message: "Leverage exceeds maximum allowed by policy",
135
+ category: "POLICY_VIOLATION",
136
+ retryable: false,
137
+ recovery_actions: [
138
+ {
139
+ action: "reduce_leverage",
140
+ description: "Reduce leverage to within maxLeverageBps",
141
+ },
142
+ {
143
+ action: "check_limits",
144
+ description: "Check the vault's maxLeverageBps policy",
145
+ tool: "sigil_check_vault",
146
+ },
147
+ ],
148
+ },
149
+ 6008: {
150
+ name: "TooManyPositions",
151
+ message: "Maximum concurrent open positions reached",
152
+ category: "RESOURCE_NOT_FOUND",
153
+ retryable: false,
154
+ recovery_actions: [
155
+ {
156
+ action: "close_position",
157
+ description: "Close an existing position before opening a new one",
158
+ tool: "sigil_close_position",
159
+ },
160
+ ],
161
+ },
162
+ 6009: {
163
+ name: "PositionOpeningDisallowed",
164
+ message: "Vault policy does not allow opening new positions",
165
+ category: "POLICY_VIOLATION",
166
+ retryable: false,
167
+ recovery_actions: [
168
+ {
169
+ action: "check_policy",
170
+ description: "Verify canOpenPositions is enabled in vault policy",
171
+ tool: "sigil_check_vault",
172
+ },
173
+ ],
174
+ },
175
+ 6010: {
176
+ name: "SessionNotAuthorized",
177
+ message: "Session authority not authorized for this action",
178
+ category: "PERMISSION",
179
+ retryable: false,
180
+ recovery_actions: [
181
+ {
182
+ action: "new_session",
183
+ description: "Create a new validate_and_authorize session",
184
+ },
185
+ ],
186
+ },
187
+ 6011: {
188
+ name: "InvalidSession",
189
+ message: "Session does not belong to this vault or is invalid",
190
+ category: "PERMISSION",
191
+ retryable: false,
192
+ recovery_actions: [
193
+ {
194
+ action: "verify_vault",
195
+ description: "Ensure the session PDA matches the target vault",
196
+ },
197
+ ],
198
+ },
199
+ 6012: {
200
+ name: "OpenPositionsExist",
201
+ message: "Vault has open positions and cannot be closed",
202
+ category: "RESOURCE_NOT_FOUND",
203
+ retryable: false,
204
+ recovery_actions: [
205
+ {
206
+ action: "close_positions",
207
+ description: "Close all open positions before closing the vault",
208
+ tool: "sigil_close_position",
209
+ },
210
+ ],
211
+ },
212
+ 6013: {
213
+ name: "TooManyAllowedProtocols",
214
+ message: "Policy configuration has too many allowed protocols (max 10)",
215
+ category: "INPUT_VALIDATION",
216
+ retryable: false,
217
+ recovery_actions: [
218
+ {
219
+ action: "reduce_protocols",
220
+ description: "Reduce the protocol allowlist to 10 or fewer entries",
221
+ },
222
+ ],
223
+ },
224
+ 6014: {
225
+ name: "AgentAlreadyRegistered",
226
+ message: "Agent is already registered on this vault",
227
+ category: "INPUT_VALIDATION",
228
+ retryable: false,
229
+ recovery_actions: [
230
+ {
231
+ action: "check_agents",
232
+ description: "Check existing agents on the vault",
233
+ tool: "sigil_check_vault",
234
+ },
235
+ ],
236
+ },
237
+ 6015: {
238
+ name: "NoAgentRegistered",
239
+ message: "No agent registered on this vault",
240
+ category: "RESOURCE_NOT_FOUND",
241
+ retryable: false,
242
+ recovery_actions: [
243
+ {
244
+ action: "register_agent",
245
+ description: "Register an agent on the vault first",
246
+ tool: "sigil_register_agent",
247
+ },
248
+ ],
249
+ },
250
+ 6016: {
251
+ name: "VaultNotFrozen",
252
+ message: "Vault is not frozen (expected frozen for reactivation)",
253
+ category: "INPUT_VALIDATION",
254
+ retryable: false,
255
+ recovery_actions: [
256
+ {
257
+ action: "check_status",
258
+ description: "Check the vault's current status",
259
+ tool: "sigil_check_vault",
260
+ },
261
+ ],
262
+ },
263
+ 6017: {
264
+ name: "VaultAlreadyClosed",
265
+ message: "Vault is permanently closed",
266
+ category: "INPUT_VALIDATION",
267
+ retryable: false,
268
+ recovery_actions: [
269
+ {
270
+ action: "create_vault",
271
+ description: "Create a new vault — closed vaults cannot be reopened",
272
+ tool: "sigil_create_vault",
273
+ },
274
+ ],
275
+ },
276
+ 6018: {
277
+ name: "InsufficientBalance",
278
+ message: "Insufficient vault balance for this operation",
279
+ category: "SPENDING_CAP",
280
+ retryable: false,
281
+ recovery_actions: [
282
+ {
283
+ action: "reduce_amount",
284
+ description: "Reduce the amount to match available balance",
285
+ },
286
+ {
287
+ action: "deposit",
288
+ description: "Deposit more funds into the vault",
289
+ },
290
+ {
291
+ action: "check_balance",
292
+ description: "Check vault token balances",
293
+ tool: "sigil_check_vault",
294
+ },
295
+ ],
296
+ },
297
+ 6019: {
298
+ name: "DeveloperFeeTooHigh",
299
+ message: "Developer fee rate exceeds maximum (500 / 1,000,000 = 5 BPS)",
300
+ category: "INPUT_VALIDATION",
301
+ retryable: false,
302
+ recovery_actions: [
303
+ {
304
+ action: "reduce_fee",
305
+ description: "Set developer_fee_rate to 500 or below",
306
+ },
307
+ ],
308
+ },
309
+ 6020: {
310
+ name: "InvalidFeeDestination",
311
+ message: "Fee destination account is invalid",
312
+ category: "INPUT_VALIDATION",
313
+ retryable: false,
314
+ recovery_actions: [
315
+ {
316
+ action: "verify_fee_destination",
317
+ description: "Provide a valid fee destination token account",
318
+ },
319
+ ],
320
+ },
321
+ 6021: {
322
+ name: "InvalidProtocolTreasury",
323
+ message: "Protocol treasury account does not match expected address",
324
+ category: "INPUT_VALIDATION",
325
+ retryable: false,
326
+ recovery_actions: [
327
+ {
328
+ action: "verify_treasury",
329
+ description: "Use the correct protocol treasury address",
330
+ },
331
+ ],
332
+ },
333
+ 6022: {
334
+ name: "InvalidAgentKey",
335
+ message: "Agent cannot be the zero address",
336
+ category: "INPUT_VALIDATION",
337
+ retryable: false,
338
+ recovery_actions: [
339
+ {
340
+ action: "provide_valid_agent",
341
+ description: "Use a valid non-zero Solana public key for the agent",
342
+ },
343
+ ],
344
+ },
345
+ 6023: {
346
+ name: "AgentIsOwner",
347
+ message: "Agent cannot be the vault owner",
348
+ category: "INPUT_VALIDATION",
349
+ retryable: false,
350
+ recovery_actions: [
351
+ {
352
+ action: "use_different_key",
353
+ description: "Use a different keypair for the agent (cannot be the same as owner)",
354
+ },
355
+ ],
356
+ },
357
+ 6024: {
358
+ name: "Overflow",
359
+ message: "Arithmetic overflow in on-chain computation",
360
+ category: "FATAL",
361
+ retryable: false,
362
+ recovery_actions: [
363
+ {
364
+ action: "reduce_amount",
365
+ description: "The amount may be too large — try a smaller value",
366
+ },
367
+ ],
368
+ },
369
+ 6025: {
370
+ name: "InvalidTokenAccount",
371
+ message: "Token account does not belong to vault or has wrong mint",
372
+ category: "INPUT_VALIDATION",
373
+ retryable: false,
374
+ recovery_actions: [
375
+ {
376
+ action: "verify_token_account",
377
+ description: "Ensure the token account is owned by the vault PDA and has the correct mint",
378
+ },
379
+ ],
380
+ },
381
+ // --- Timelock + Destination errors ---
382
+ 6026: {
383
+ name: "TimelockNotExpired",
384
+ message: "Timelock period has not expired yet",
385
+ category: "POLICY_VIOLATION",
386
+ retryable: true,
387
+ retry_after_ms: 60_000,
388
+ recovery_actions: [
389
+ {
390
+ action: "wait",
391
+ description: "Wait for the timelock period to expire before applying the update",
392
+ },
393
+ ],
394
+ },
395
+ 6027: {
396
+ name: "TimelockActive",
397
+ message: "Vault has timelock active — use queue_policy_update instead of direct update",
398
+ category: "POLICY_VIOLATION",
399
+ retryable: false,
400
+ recovery_actions: [
401
+ {
402
+ action: "queue_update",
403
+ description: "Queue the policy update through the timelock mechanism",
404
+ tool: "sigil_update_policy",
405
+ parameters: { use_timelock: true },
406
+ },
407
+ ],
408
+ },
409
+ 6028: {
410
+ name: "NoTimelockConfigured",
411
+ message: "No timelock configured on this vault",
412
+ category: "INPUT_VALIDATION",
413
+ retryable: false,
414
+ recovery_actions: [
415
+ {
416
+ action: "use_direct_update",
417
+ description: "Use direct policy update (no timelock required)",
418
+ },
419
+ ],
420
+ },
421
+ 6029: {
422
+ name: "DestinationNotAllowed",
423
+ message: "Destination address not in vault's allowed destinations list",
424
+ category: "POLICY_VIOLATION",
425
+ retryable: false,
426
+ recovery_actions: [
427
+ {
428
+ action: "check_destinations",
429
+ description: "Check the vault's allowedDestinations list",
430
+ tool: "sigil_check_vault",
431
+ },
432
+ {
433
+ action: "use_allowed_destination",
434
+ description: "Use a destination that is in the vault's allowlist",
435
+ },
436
+ ],
437
+ },
438
+ 6030: {
439
+ name: "TooManyDestinations",
440
+ message: "Too many destinations in allowlist (max 10)",
441
+ category: "INPUT_VALIDATION",
442
+ retryable: false,
443
+ recovery_actions: [
444
+ {
445
+ action: "reduce_destinations",
446
+ description: "Reduce the destination allowlist to 10 or fewer entries",
447
+ },
448
+ ],
449
+ },
450
+ 6031: {
451
+ name: "InvalidProtocolMode",
452
+ message: "Invalid protocol mode (must be 0=all, 1=allowlist, or 2=denylist)",
453
+ category: "INPUT_VALIDATION",
454
+ retryable: false,
455
+ recovery_actions: [
456
+ {
457
+ action: "fix_mode",
458
+ description: "Set protocolMode to 0 (all), 1 (allowlist), or 2 (denylist)",
459
+ },
460
+ ],
461
+ },
462
+ // --- Flash Trade expansion errors ---
463
+ 6032: {
464
+ name: "InvalidNonSpendingAmount",
465
+ message: "Non-spending action must have amount = 0",
466
+ category: "INPUT_VALIDATION",
467
+ retryable: false,
468
+ recovery_actions: [
469
+ {
470
+ action: "set_zero_amount",
471
+ description: "Set amount to 0 for non-spending actions (close, cancel, etc.)",
472
+ },
473
+ ],
474
+ },
475
+ 6033: {
476
+ name: "NoPositionsToClose",
477
+ message: "No open positions to close or cancel",
478
+ category: "RESOURCE_NOT_FOUND",
479
+ retryable: false,
480
+ recovery_actions: [
481
+ {
482
+ action: "check_positions",
483
+ description: "Verify you have open positions before closing",
484
+ tool: "sigil_check_vault",
485
+ },
486
+ ],
487
+ },
488
+ 6034: {
489
+ name: "CpiCallNotAllowed",
490
+ message: "Instruction must be top-level (CPI calls not allowed for validate/finalize)",
491
+ category: "FATAL",
492
+ retryable: false,
493
+ recovery_actions: [
494
+ {
495
+ action: "fix_transaction",
496
+ description: "Ensure validate_and_authorize is called at the top level, not via CPI",
497
+ },
498
+ ],
499
+ },
500
+ 6035: {
501
+ name: "MissingFinalizeInstruction",
502
+ message: "Transaction must include finalize_session after validate_and_authorize",
503
+ category: "INPUT_VALIDATION",
504
+ retryable: false,
505
+ recovery_actions: [
506
+ {
507
+ action: "use_sdk",
508
+ description: "Use the SDK's compose functions which automatically include finalize_session",
509
+ },
510
+ ],
511
+ },
512
+ // --- Stablecoin-only enforcement errors ---
513
+ 6036: {
514
+ name: "NonTrackedSwapMustReturnStablecoin",
515
+ message: "Non-stablecoin swap must return stablecoin (vault stablecoin balance did not increase)",
516
+ category: "INPUT_VALIDATION",
517
+ retryable: false,
518
+ recovery_actions: [
519
+ {
520
+ action: "ensure_stablecoin_output",
521
+ description: "Ensure the swap produces stablecoin output (USDC or USDT)",
522
+ },
523
+ ],
524
+ },
525
+ 6037: {
526
+ name: "SwapSlippageExceeded",
527
+ message: "Swap slippage exceeds policy max_slippage_bps or quoted output is zero",
528
+ category: "POLICY_VIOLATION",
529
+ retryable: false,
530
+ recovery_actions: [
531
+ {
532
+ action: "reduce_slippage",
533
+ description: "Use a lower slippageBps value within the vault's maxSlippageBps",
534
+ },
535
+ {
536
+ action: "check_policy",
537
+ description: "Check the vault's maxSlippageBps setting",
538
+ tool: "sigil_check_vault",
539
+ },
540
+ ],
541
+ },
542
+ 6038: {
543
+ name: "InvalidJupiterInstruction",
544
+ message: "Cannot parse Jupiter swap instruction data",
545
+ category: "INPUT_VALIDATION",
546
+ retryable: false,
547
+ recovery_actions: [
548
+ {
549
+ action: "use_sdk",
550
+ description: "Use the SDK's composeJupiterSwap — manual instruction building is error-prone",
551
+ },
552
+ ],
553
+ },
554
+ 6039: {
555
+ name: "UnauthorizedTokenTransfer",
556
+ message: "Top-level SPL Token transfer not allowed between validate and finalize",
557
+ category: "POLICY_VIOLATION",
558
+ retryable: false,
559
+ recovery_actions: [
560
+ {
561
+ action: "use_sdk",
562
+ description: "Use the SDK's compose functions — do not insert raw SPL transfers in the sandwich",
563
+ },
564
+ ],
565
+ },
566
+ 6040: {
567
+ name: "SlippageBpsTooHigh",
568
+ message: "Slippage BPS exceeds maximum allowed (5000 = 50%)",
569
+ category: "INPUT_VALIDATION",
570
+ retryable: false,
571
+ recovery_actions: [
572
+ {
573
+ action: "reduce_slippage",
574
+ description: "Set slippageBps to 5000 or below",
575
+ },
576
+ ],
577
+ },
578
+ 6041: {
579
+ name: "ProtocolMismatch",
580
+ message: "DeFi instruction program does not match the declared target_protocol",
581
+ category: "INPUT_VALIDATION",
582
+ retryable: false,
583
+ recovery_actions: [
584
+ {
585
+ action: "fix_protocol",
586
+ description: "Ensure target_protocol matches the actual DeFi instruction's program ID",
587
+ },
588
+ ],
589
+ },
590
+ 6042: {
591
+ name: "TooManyDeFiInstructions",
592
+ message: "Non-stablecoin swap allows exactly one DeFi instruction",
593
+ category: "INPUT_VALIDATION",
594
+ retryable: false,
595
+ recovery_actions: [
596
+ {
597
+ action: "simplify_transaction",
598
+ description: "Use a single DeFi instruction for non-stablecoin swaps",
599
+ },
600
+ ],
601
+ },
602
+ // --- Multi-Agent errors ---
603
+ 6043: {
604
+ name: "MaxAgentsReached",
605
+ message: "Maximum agents per vault reached (limit: 10)",
606
+ category: "INPUT_VALIDATION",
607
+ retryable: false,
608
+ recovery_actions: [
609
+ {
610
+ action: "revoke_agent",
611
+ description: "Revoke an existing agent before registering a new one",
612
+ tool: "sigil_revoke_agent",
613
+ },
614
+ ],
615
+ },
616
+ 6044: {
617
+ name: "InsufficientPermissions",
618
+ message: "Agent lacks permission for this action type",
619
+ category: "PERMISSION",
620
+ retryable: false,
621
+ recovery_actions: [
622
+ {
623
+ action: "check_permissions",
624
+ description: "Check the agent's permission bitmask",
625
+ tool: "sigil_check_vault",
626
+ },
627
+ {
628
+ action: "request_permissions",
629
+ description: "Ask the vault owner to update the agent's permissions",
630
+ },
631
+ ],
632
+ },
633
+ 6045: {
634
+ name: "InvalidPermissions",
635
+ message: "Permission bitmask contains invalid bits (only 21 bits valid)",
636
+ category: "INPUT_VALIDATION",
637
+ retryable: false,
638
+ recovery_actions: [
639
+ {
640
+ action: "fix_permissions",
641
+ description: "Use valid permission constants (FULL_PERMISSIONS, SWAP_ONLY, etc.)",
642
+ },
643
+ ],
644
+ },
645
+ // --- Escrow errors ---
646
+ 6046: {
647
+ name: "EscrowNotActive",
648
+ message: "Escrow is not in Active status",
649
+ category: "RESOURCE_NOT_FOUND",
650
+ retryable: false,
651
+ recovery_actions: [
652
+ {
653
+ action: "check_escrow",
654
+ description: "Verify the escrow exists and is in Active status",
655
+ },
656
+ ],
657
+ },
658
+ 6047: {
659
+ name: "EscrowExpired",
660
+ message: "Escrow has expired — can only be refunded now",
661
+ category: "RESOURCE_NOT_FOUND",
662
+ retryable: false,
663
+ recovery_actions: [
664
+ {
665
+ action: "refund_escrow",
666
+ description: "Refund the expired escrow back to the source vault",
667
+ tool: "sigil_refund_escrow",
668
+ },
669
+ ],
670
+ },
671
+ 6048: {
672
+ name: "EscrowNotExpired",
673
+ message: "Escrow has not expired yet — cannot refund before expiry",
674
+ category: "INPUT_VALIDATION",
675
+ retryable: false,
676
+ recovery_actions: [
677
+ {
678
+ action: "wait",
679
+ description: "Wait for the escrow to expire before requesting a refund",
680
+ },
681
+ {
682
+ action: "settle",
683
+ description: "Settle the escrow if you are the destination agent",
684
+ tool: "sigil_settle_escrow",
685
+ },
686
+ ],
687
+ },
688
+ 6049: {
689
+ name: "InvalidEscrowVault",
690
+ message: "Invalid escrow vault — source or destination vault mismatch",
691
+ category: "INPUT_VALIDATION",
692
+ retryable: false,
693
+ recovery_actions: [
694
+ {
695
+ action: "verify_vaults",
696
+ description: "Ensure source and destination vault addresses match the escrow",
697
+ },
698
+ ],
699
+ },
700
+ 6050: {
701
+ name: "EscrowConditionsNotMet",
702
+ message: "Escrow settlement conditions not met (SHA-256 proof invalid)",
703
+ category: "INPUT_VALIDATION",
704
+ retryable: false,
705
+ recovery_actions: [
706
+ {
707
+ action: "provide_proof",
708
+ description: "Provide the correct pre-image for the escrow's condition_hash",
709
+ },
710
+ ],
711
+ },
712
+ 6051: {
713
+ name: "EscrowDurationExceeded",
714
+ message: "Escrow duration exceeds maximum (30 days)",
715
+ category: "INPUT_VALIDATION",
716
+ retryable: false,
717
+ recovery_actions: [
718
+ {
719
+ action: "reduce_duration",
720
+ description: "Set escrow duration to 2,592,000 seconds (30 days) or less",
721
+ },
722
+ ],
723
+ },
724
+ // --- Instruction constraints errors ---
725
+ 6052: {
726
+ name: "InvalidConstraintConfig",
727
+ message: "Invalid constraint configuration: bounds exceeded",
728
+ category: "INPUT_VALIDATION",
729
+ retryable: false,
730
+ recovery_actions: [
731
+ {
732
+ action: "fix_constraints",
733
+ description: "Ensure constraint entries are within bounds (max 16 entries, 8 data constraints each)",
734
+ },
735
+ ],
736
+ },
737
+ 6053: {
738
+ name: "ConstraintViolated",
739
+ message: "Instruction violated a configured constraint",
740
+ category: "POLICY_VIOLATION",
741
+ retryable: false,
742
+ recovery_actions: [
743
+ {
744
+ action: "check_constraints",
745
+ description: "Review the vault's instruction constraints to understand what is allowed",
746
+ tool: "sigil_check_vault",
747
+ },
748
+ {
749
+ action: "modify_instruction",
750
+ description: "Modify the instruction parameters to satisfy the constraints",
751
+ },
752
+ ],
753
+ },
754
+ 6054: {
755
+ name: "InvalidConstraintsPda",
756
+ message: "Invalid constraints PDA: wrong owner or vault",
757
+ category: "INPUT_VALIDATION",
758
+ retryable: false,
759
+ recovery_actions: [
760
+ {
761
+ action: "verify_pda",
762
+ description: "Use the correct constraints PDA derived from the vault",
763
+ },
764
+ ],
765
+ },
766
+ 6055: {
767
+ name: "InvalidPendingConstraintsPda",
768
+ message: "Invalid pending constraints PDA: wrong owner or vault",
769
+ category: "INPUT_VALIDATION",
770
+ retryable: false,
771
+ recovery_actions: [
772
+ {
773
+ action: "verify_pda",
774
+ description: "Use the correct pending constraints PDA derived from the vault",
775
+ },
776
+ ],
777
+ },
778
+ // --- Per-agent spend limit errors ---
779
+ 6056: {
780
+ name: "AgentSpendLimitExceeded",
781
+ message: "Agent's rolling 24h spend exceeds their individual spending limit",
782
+ category: "SPENDING_CAP",
783
+ retryable: true,
784
+ retry_after_ms: 3_600_000,
785
+ recovery_actions: [
786
+ {
787
+ action: "reduce_amount",
788
+ description: "Reduce the amount to fit within the agent's remaining limit",
789
+ },
790
+ {
791
+ action: "check_spending",
792
+ description: "Check the agent's current spend against their limit",
793
+ tool: "sigil_check_spending",
794
+ },
795
+ {
796
+ action: "wait",
797
+ description: "Wait for the 24h rolling window to release spent capacity",
798
+ },
799
+ ],
800
+ },
801
+ 6057: {
802
+ name: "OverlaySlotExhausted",
803
+ message: "Per-agent overlay is full — cannot register agent with spending limit",
804
+ category: "INPUT_VALIDATION",
805
+ retryable: false,
806
+ recovery_actions: [
807
+ {
808
+ action: "revoke_agent",
809
+ description: "Revoke an unused agent to free an overlay slot",
810
+ tool: "sigil_revoke_agent",
811
+ },
812
+ ],
813
+ },
814
+ 6058: {
815
+ name: "AgentSlotNotFound",
816
+ message: "Agent has per-agent spending limit but no overlay tracking slot",
817
+ category: "RESOURCE_NOT_FOUND",
818
+ retryable: false,
819
+ recovery_actions: [
820
+ {
821
+ action: "contact_support",
822
+ description: "This is an internal consistency error — the overlay may need reinitialization",
823
+ },
824
+ ],
825
+ },
826
+ 6059: {
827
+ name: "UnauthorizedTokenApproval",
828
+ message: "Unauthorized SPL Token Approve detected between validate and finalize",
829
+ category: "POLICY_VIOLATION",
830
+ retryable: false,
831
+ recovery_actions: [
832
+ {
833
+ action: "use_sdk",
834
+ description: "Use the SDK's compose functions — do not insert raw SPL Approve in the sandwich",
835
+ },
836
+ ],
837
+ },
838
+ 6060: {
839
+ name: "InvalidSessionExpiry",
840
+ message: "Session expiry slots out of range (10-450)",
841
+ category: "INPUT_VALIDATION",
842
+ retryable: false,
843
+ recovery_actions: [
844
+ {
845
+ action: "fix_expiry",
846
+ description: "Set session expiry between 10 and 450 slots",
847
+ },
848
+ ],
849
+ },
850
+ 6061: {
851
+ name: "UnconstrainedProgramBlocked",
852
+ message: "Program has no constraint entry and strict mode is enabled",
853
+ category: "POLICY_VIOLATION",
854
+ retryable: false,
855
+ recovery_actions: [
856
+ {
857
+ action: "add_constraint",
858
+ description: "Add a constraint entry for this program, or disable strict mode",
859
+ },
860
+ {
861
+ action: "check_constraints",
862
+ description: "Review the vault's instruction constraints",
863
+ tool: "sigil_check_vault",
864
+ },
865
+ ],
866
+ },
867
+ // --- Per-protocol spend cap errors ---
868
+ 6062: {
869
+ name: "ProtocolCapExceeded",
870
+ message: "Per-protocol rolling 24h spending cap would be exceeded",
871
+ category: "SPENDING_CAP",
872
+ retryable: true,
873
+ retry_after_ms: 3_600_000,
874
+ recovery_actions: [
875
+ {
876
+ action: "reduce_amount",
877
+ description: "Reduce the amount to fit within the protocol's remaining cap",
878
+ },
879
+ {
880
+ action: "use_different_protocol",
881
+ description: "Use a different protocol that has remaining capacity",
882
+ },
883
+ {
884
+ action: "wait",
885
+ description: "Wait for the 24h rolling window to release spent capacity",
886
+ },
887
+ ],
888
+ },
889
+ 6063: {
890
+ name: "ProtocolCapsMismatch",
891
+ message: "protocol_caps length must match protocols length when has_protocol_caps is true",
892
+ category: "INPUT_VALIDATION",
893
+ retryable: false,
894
+ recovery_actions: [
895
+ {
896
+ action: "fix_config",
897
+ description: "Ensure protocol_caps array length matches the protocols array length",
898
+ },
899
+ ],
900
+ },
901
+ // --- Vault closure guard errors ---
902
+ 6064: {
903
+ name: "ActiveEscrowsExist",
904
+ message: "Active escrow deposits exist — close them before closing vault",
905
+ category: "RESOURCE_NOT_FOUND",
906
+ retryable: false,
907
+ recovery_actions: [
908
+ {
909
+ action: "close_escrows",
910
+ description: "Settle or refund all active escrows before closing the vault",
911
+ },
912
+ ],
913
+ },
914
+ 6065: {
915
+ name: "ConstraintsNotClosed",
916
+ message: "Instruction constraints PDA still exists — close it before closing vault",
917
+ category: "RESOURCE_NOT_FOUND",
918
+ retryable: false,
919
+ recovery_actions: [
920
+ {
921
+ action: "close_constraints",
922
+ description: "Close the instruction constraints account before closing the vault",
923
+ },
924
+ ],
925
+ },
926
+ 6066: {
927
+ name: "PendingPolicyExists",
928
+ message: "A pending policy update exists — apply or cancel it before closing vault",
929
+ category: "RESOURCE_NOT_FOUND",
930
+ retryable: false,
931
+ recovery_actions: [
932
+ {
933
+ action: "resolve_pending_policy",
934
+ description: "Apply or cancel the pending policy update before closing the vault",
935
+ },
936
+ ],
937
+ },
938
+ // --- Agent pause errors ---
939
+ 6067: {
940
+ name: "AgentPaused",
941
+ message: "Agent is paused — unpause before executing actions",
942
+ category: "PERMISSION",
943
+ retryable: false,
944
+ recovery_actions: [
945
+ {
946
+ action: "unpause_agent",
947
+ description: "Ask the vault owner to unpause this agent",
948
+ },
949
+ ],
950
+ },
951
+ 6068: {
952
+ name: "AgentAlreadyPaused",
953
+ message: "Agent is already paused",
954
+ category: "INPUT_VALIDATION",
955
+ retryable: false,
956
+ recovery_actions: [
957
+ {
958
+ action: "check_agent_status",
959
+ description: "Agent is already paused — no action needed",
960
+ },
961
+ ],
962
+ },
963
+ 6069: {
964
+ name: "AgentNotPaused",
965
+ message: "Agent is not paused — cannot unpause",
966
+ category: "INPUT_VALIDATION",
967
+ retryable: false,
968
+ recovery_actions: [
969
+ {
970
+ action: "check_agent_status",
971
+ description: "Agent is not paused — no action needed",
972
+ },
973
+ ],
974
+ },
975
+ 6070: {
976
+ name: "UnauthorizedPostFinalizeInstruction",
977
+ message: "Instructions after finalize_session must be ComputeBudget or SystemProgram only",
978
+ category: "POLICY_VIOLATION",
979
+ retryable: false,
980
+ recovery_actions: [
981
+ {
982
+ action: "remove_post_finalize_instructions",
983
+ description: "Remove any instructions placed after finalize_session in the transaction. Only ComputeBudget and SystemProgram instructions are allowed after finalize.",
984
+ },
985
+ ],
986
+ },
987
+ };
988
+ // ---------------------------------------------------------------------------
989
+ // SDK error codes (7000-7033) — numeric to match agent error code pattern
990
+ // ---------------------------------------------------------------------------
991
+ const SDK_ERROR_CODES = {
992
+ 7000: "NETWORK_ERROR",
993
+ 7001: "RPC_ERROR",
994
+ 7002: "SIMULATION_FAILED",
995
+ 7003: "DRAIN_DETECTED",
996
+ 7004: "INTENT_VALIDATION_FAILED",
997
+ 7005: "INTENT_EXPIRED",
998
+ 7006: "PROTOCOL_NOT_SUPPORTED",
999
+ 7007: "ADAPTER_VERIFICATION_FAILED",
1000
+ 7008: "PRECHECK_FAILED",
1001
+ 7009: "EXECUTION_FAILED",
1002
+ 7010: "TRANSACTION_TIMEOUT",
1003
+ 7011: "CONFIRMATION_TIMEOUT",
1004
+ 7012: "INSUFFICIENT_FUNDS",
1005
+ 7013: "SLIPPAGE_EXCEEDED",
1006
+ 7014: "TEE_VERIFICATION_FAILED",
1007
+ 7015: "SHIELD_DENIED",
1008
+ 7016: "SIMULATION_TIMEOUT",
1009
+ 7017: "BLOCKHASH_EXPIRED",
1010
+ 7018: "CODAMA_DECODE_FAILED",
1011
+ 7019: "CODAMA_VERSION_MISMATCH",
1012
+ 7020: "COMPAT_BRIDGE_FAILED",
1013
+ 7021: "INTENT_DRIFT_DETECTED",
1014
+ 7022: "VELOCITY_EXCEEDED",
1015
+ 7023: "AGENT_DEFENSE_TRIGGERED",
1016
+ 7024: "X402_PARSE_ERROR",
1017
+ 7025: "X402_PAYMENT_DENIED",
1018
+ 7026: "X402_UNSUPPORTED",
1019
+ 7027: "X402_DESTINATION_BLOCKED",
1020
+ 7028: "X402_REPLAY_DETECTED",
1021
+ 7029: "X402_AMOUNT_SUSPICIOUS",
1022
+ 7030: "X402_FACILITATOR_UNTRUSTED",
1023
+ 7031: "X402_CONNECTION_REQUIRED",
1024
+ 7032: "X402_SETTLEMENT_FAILED",
1025
+ 7033: "TX_SIZE_OVERFLOW",
1026
+ };
1027
+ const SDK_ERRORS = {
1028
+ NETWORK_ERROR: {
1029
+ name: "NetworkError",
1030
+ message: "Network request failed",
1031
+ category: "TRANSIENT",
1032
+ retryable: true,
1033
+ retry_after_ms: 2_000,
1034
+ recovery_actions: [
1035
+ {
1036
+ action: "retry",
1037
+ description: "Retry the request — the RPC node may be temporarily unavailable",
1038
+ },
1039
+ ],
1040
+ },
1041
+ RPC_ERROR: {
1042
+ name: "RpcError",
1043
+ message: "Solana RPC error",
1044
+ category: "TRANSIENT",
1045
+ retryable: true,
1046
+ retry_after_ms: 3_000,
1047
+ recovery_actions: [
1048
+ {
1049
+ action: "retry",
1050
+ description: "Retry with a different RPC endpoint if available",
1051
+ },
1052
+ ],
1053
+ },
1054
+ SIMULATION_FAILED: {
1055
+ name: "SimulationFailed",
1056
+ message: "Transaction simulation failed",
1057
+ category: "TRANSIENT",
1058
+ retryable: true,
1059
+ retry_after_ms: 2_000,
1060
+ recovery_actions: [
1061
+ {
1062
+ action: "retry",
1063
+ description: "Retry — blockhash may have expired or state changed",
1064
+ },
1065
+ {
1066
+ action: "check_balance",
1067
+ description: "Verify the agent has enough SOL for transaction fees",
1068
+ },
1069
+ ],
1070
+ },
1071
+ DRAIN_DETECTED: {
1072
+ name: "DrainDetected",
1073
+ message: "Potential drain attack detected in transaction simulation",
1074
+ category: "FATAL",
1075
+ retryable: false,
1076
+ recovery_actions: [
1077
+ {
1078
+ action: "reject_transaction",
1079
+ description: "Transaction appears to drain vault funds — do not sign or submit",
1080
+ },
1081
+ ],
1082
+ },
1083
+ INTENT_VALIDATION_FAILED: {
1084
+ name: "IntentValidationFailed",
1085
+ message: "Intent input validation failed",
1086
+ category: "INPUT_VALIDATION",
1087
+ retryable: false,
1088
+ recovery_actions: [
1089
+ {
1090
+ action: "fix_inputs",
1091
+ description: "Fix the invalid parameters identified in the error context",
1092
+ },
1093
+ ],
1094
+ },
1095
+ INTENT_EXPIRED: {
1096
+ name: "IntentExpired",
1097
+ message: "Intent has expired and is no longer valid",
1098
+ category: "TRANSIENT",
1099
+ retryable: true,
1100
+ retry_after_ms: 1_000,
1101
+ recovery_actions: [
1102
+ {
1103
+ action: "retry",
1104
+ description: "Create a fresh intent with updated parameters",
1105
+ },
1106
+ ],
1107
+ },
1108
+ PROTOCOL_NOT_SUPPORTED: {
1109
+ name: "ProtocolNotSupported",
1110
+ message: "Protocol is not supported by the SDK",
1111
+ category: "PROTOCOL_NOT_SUPPORTED",
1112
+ retryable: false,
1113
+ recovery_actions: [
1114
+ {
1115
+ action: "check_supported_protocols",
1116
+ description: "Check which protocols are supported by the SDK",
1117
+ },
1118
+ ],
1119
+ },
1120
+ ADAPTER_VERIFICATION_FAILED: {
1121
+ name: "AdapterVerificationFailed",
1122
+ message: "Protocol adapter output failed safety verification",
1123
+ category: "FATAL",
1124
+ retryable: false,
1125
+ recovery_actions: [
1126
+ {
1127
+ action: "report_adapter",
1128
+ description: "The protocol adapter may be compromised — do not retry",
1129
+ },
1130
+ ],
1131
+ },
1132
+ PRECHECK_FAILED: {
1133
+ name: "PrecheckFailed",
1134
+ message: "SDK precheck failed before submitting transaction",
1135
+ category: "INPUT_VALIDATION",
1136
+ retryable: false,
1137
+ recovery_actions: [
1138
+ {
1139
+ action: "check_inputs",
1140
+ description: "Review the intent parameters — a precondition is not met",
1141
+ },
1142
+ ],
1143
+ },
1144
+ EXECUTION_FAILED: {
1145
+ name: "ExecutionFailed",
1146
+ message: "Transaction execution failed on-chain",
1147
+ category: "TRANSIENT",
1148
+ retryable: true,
1149
+ retry_after_ms: 2_000,
1150
+ recovery_actions: [
1151
+ {
1152
+ action: "retry",
1153
+ description: "Retry — on-chain state may have changed during execution",
1154
+ },
1155
+ ],
1156
+ },
1157
+ TRANSACTION_TIMEOUT: {
1158
+ name: "TransactionTimeout",
1159
+ message: "Transaction submission timed out",
1160
+ category: "TRANSIENT",
1161
+ retryable: true,
1162
+ retry_after_ms: 5_000,
1163
+ recovery_actions: [
1164
+ {
1165
+ action: "retry",
1166
+ description: "Retry with a fresh blockhash and higher priority fee",
1167
+ },
1168
+ ],
1169
+ },
1170
+ CONFIRMATION_TIMEOUT: {
1171
+ name: "ConfirmationTimeout",
1172
+ message: "Transaction confirmation timed out",
1173
+ category: "TRANSIENT",
1174
+ retryable: true,
1175
+ retry_after_ms: 5_000,
1176
+ recovery_actions: [
1177
+ {
1178
+ action: "check_status",
1179
+ description: "Check if the transaction landed — it may have confirmed after timeout",
1180
+ },
1181
+ {
1182
+ action: "retry",
1183
+ description: "Retry if transaction did not land",
1184
+ },
1185
+ ],
1186
+ },
1187
+ INSUFFICIENT_FUNDS: {
1188
+ name: "InsufficientFunds",
1189
+ message: "Insufficient SOL or token balance for transaction",
1190
+ category: "SPENDING_CAP",
1191
+ retryable: false,
1192
+ recovery_actions: [
1193
+ {
1194
+ action: "check_balance",
1195
+ description: "Check SOL and token balances",
1196
+ },
1197
+ {
1198
+ action: "deposit",
1199
+ description: "Deposit more funds before retrying",
1200
+ },
1201
+ ],
1202
+ },
1203
+ SLIPPAGE_EXCEEDED: {
1204
+ name: "SlippageExceeded",
1205
+ message: "Swap slippage exceeded the maximum tolerance",
1206
+ category: "TRANSIENT",
1207
+ retryable: true,
1208
+ retry_after_ms: 3_000,
1209
+ recovery_actions: [
1210
+ {
1211
+ action: "retry",
1212
+ description: "Retry — market may have moved, producing a better quote",
1213
+ },
1214
+ {
1215
+ action: "increase_slippage",
1216
+ description: "Increase slippage tolerance if market is volatile",
1217
+ },
1218
+ ],
1219
+ },
1220
+ TEE_VERIFICATION_FAILED: {
1221
+ name: "TeeVerificationFailed",
1222
+ message: "TEE attestation verification failed",
1223
+ category: "FATAL",
1224
+ retryable: false,
1225
+ recovery_actions: [
1226
+ {
1227
+ action: "verify_tee",
1228
+ description: "Verify the TEE wallet's attestation — the enclave may be compromised",
1229
+ },
1230
+ ],
1231
+ },
1232
+ SHIELD_DENIED: {
1233
+ name: "ShieldDenied",
1234
+ message: "Shield denied the transaction based on policy evaluation",
1235
+ category: "POLICY_VIOLATION",
1236
+ retryable: false,
1237
+ recovery_actions: [
1238
+ {
1239
+ action: "check_policy",
1240
+ description: "Review shield policies to understand why the transaction was denied",
1241
+ },
1242
+ ],
1243
+ },
1244
+ SIMULATION_TIMEOUT: {
1245
+ name: "SimulationTimeout",
1246
+ message: "Transaction simulation RPC call timed out",
1247
+ category: "TRANSIENT",
1248
+ retryable: true,
1249
+ retry_after_ms: 5_000,
1250
+ recovery_actions: [
1251
+ {
1252
+ action: "retry",
1253
+ description: "Retry with a different RPC endpoint or increased timeout",
1254
+ },
1255
+ ],
1256
+ },
1257
+ BLOCKHASH_EXPIRED: {
1258
+ name: "BlockhashExpired",
1259
+ message: "Blockhash expired before transaction could be sent",
1260
+ category: "TRANSIENT",
1261
+ retryable: true,
1262
+ retry_after_ms: 1_000,
1263
+ recovery_actions: [
1264
+ {
1265
+ action: "retry",
1266
+ description: "Fetch a fresh blockhash and rebuild the transaction",
1267
+ },
1268
+ ],
1269
+ },
1270
+ CODAMA_DECODE_FAILED: {
1271
+ name: "CodamaDecodeFailed",
1272
+ message: "Codama-generated codec failed to decode instruction data",
1273
+ category: "FATAL",
1274
+ retryable: false,
1275
+ recovery_actions: [
1276
+ {
1277
+ action: "check_idl",
1278
+ description: "Verify the IDL matches the deployed program version",
1279
+ },
1280
+ ],
1281
+ },
1282
+ CODAMA_VERSION_MISMATCH: {
1283
+ name: "CodamaVersionMismatch",
1284
+ message: "IDL hash mismatch — generated code may be stale",
1285
+ category: "FATAL",
1286
+ retryable: false,
1287
+ recovery_actions: [
1288
+ {
1289
+ action: "regenerate",
1290
+ description: "Regenerate Codama clients from the latest IDL",
1291
+ },
1292
+ ],
1293
+ },
1294
+ COMPAT_BRIDGE_FAILED: {
1295
+ name: "CompatBridgeFailed",
1296
+ message: "web3.js compatibility bridge encountered an error",
1297
+ category: "FATAL",
1298
+ retryable: false,
1299
+ recovery_actions: [
1300
+ {
1301
+ action: "check_compat",
1302
+ description: "Check that the compat bridge input types are correct",
1303
+ },
1304
+ ],
1305
+ },
1306
+ INTENT_DRIFT_DETECTED: {
1307
+ name: "IntentDriftDetected",
1308
+ message: "Transaction diverges from the declared intent",
1309
+ category: "POLICY_VIOLATION",
1310
+ retryable: false,
1311
+ recovery_actions: [
1312
+ {
1313
+ action: "review_transaction",
1314
+ description: "The composed transaction does not match the stated intent — review instructions",
1315
+ },
1316
+ {
1317
+ action: "rebuild",
1318
+ description: "Rebuild the transaction from a fresh intent",
1319
+ },
1320
+ ],
1321
+ },
1322
+ VELOCITY_EXCEEDED: {
1323
+ name: "VelocityExceeded",
1324
+ message: "Transaction velocity threshold breached",
1325
+ category: "RATE_LIMIT",
1326
+ retryable: true,
1327
+ retry_after_ms: 30_000,
1328
+ recovery_actions: [
1329
+ {
1330
+ action: "wait",
1331
+ description: "Wait for the cooldown period before submitting more transactions",
1332
+ },
1333
+ ],
1334
+ },
1335
+ AGENT_DEFENSE_TRIGGERED: {
1336
+ name: "AgentDefenseTriggered",
1337
+ message: "Pre-sign gate blocked a suspicious transaction",
1338
+ category: "POLICY_VIOLATION",
1339
+ retryable: false,
1340
+ recovery_actions: [
1341
+ {
1342
+ action: "review_transaction",
1343
+ description: "The transaction triggered agent defense — review for manipulation",
1344
+ },
1345
+ {
1346
+ action: "escalate_to_human",
1347
+ description: "Escalate to vault owner for manual review",
1348
+ },
1349
+ ],
1350
+ },
1351
+ X402_PARSE_ERROR: {
1352
+ name: "X402ParseError",
1353
+ message: "Malformed x402 PAYMENT-REQUIRED header",
1354
+ category: "INPUT_VALIDATION",
1355
+ retryable: false,
1356
+ recovery_actions: [
1357
+ {
1358
+ action: "check_server",
1359
+ description: "The API server returned an invalid x402 header — contact the provider",
1360
+ },
1361
+ ],
1362
+ },
1363
+ X402_PAYMENT_DENIED: {
1364
+ name: "X402PaymentDenied",
1365
+ message: "x402 payment blocked by shield policy",
1366
+ category: "POLICY_VIOLATION",
1367
+ retryable: false,
1368
+ recovery_actions: [
1369
+ {
1370
+ action: "check_policy",
1371
+ description: "Review shield spending limits and x402 configuration",
1372
+ },
1373
+ ],
1374
+ },
1375
+ X402_UNSUPPORTED: {
1376
+ name: "X402Unsupported",
1377
+ message: "No compatible Solana payment option in x402 response",
1378
+ category: "INPUT_VALIDATION",
1379
+ retryable: false,
1380
+ recovery_actions: [
1381
+ {
1382
+ action: "check_accepts",
1383
+ description: "The API does not accept any Solana-compatible payment — try a different endpoint",
1384
+ },
1385
+ ],
1386
+ },
1387
+ X402_DESTINATION_BLOCKED: {
1388
+ name: "X402DestinationBlocked",
1389
+ message: "x402 payTo address not in destination allowlist",
1390
+ category: "POLICY_VIOLATION",
1391
+ retryable: false,
1392
+ recovery_actions: [
1393
+ {
1394
+ action: "check_allowlist",
1395
+ description: "Add the payTo address to X402Config.allowedDestinations if trusted",
1396
+ },
1397
+ ],
1398
+ },
1399
+ X402_REPLAY_DETECTED: {
1400
+ name: "X402ReplayDetected",
1401
+ message: "Duplicate x402 payment detected within replay window",
1402
+ category: "POLICY_VIOLATION",
1403
+ retryable: false,
1404
+ recovery_actions: [
1405
+ {
1406
+ action: "wait",
1407
+ description: "A payment for this resource was already made — wait for the nonce window to expire",
1408
+ },
1409
+ ],
1410
+ },
1411
+ X402_AMOUNT_SUSPICIOUS: {
1412
+ name: "X402AmountSuspicious",
1413
+ message: "x402 payment amount exceeds sanity threshold",
1414
+ category: "POLICY_VIOLATION",
1415
+ retryable: false,
1416
+ recovery_actions: [
1417
+ {
1418
+ action: "review_amount",
1419
+ description: "The requested amount is suspiciously high — verify with the API provider",
1420
+ },
1421
+ ],
1422
+ },
1423
+ X402_FACILITATOR_UNTRUSTED: {
1424
+ name: "X402FacilitatorUntrusted",
1425
+ message: "x402 settlement response validation failed",
1426
+ category: "POLICY_VIOLATION",
1427
+ retryable: false,
1428
+ recovery_actions: [
1429
+ {
1430
+ action: "check_settlement",
1431
+ description: "Verify the settlement transaction on-chain",
1432
+ },
1433
+ ],
1434
+ },
1435
+ X402_CONNECTION_REQUIRED: {
1436
+ name: "X402ConnectionRequired",
1437
+ message: "RPC connection required for x402 payment but not provided",
1438
+ category: "INPUT_VALIDATION",
1439
+ retryable: false,
1440
+ recovery_actions: [
1441
+ {
1442
+ action: "provide_rpc",
1443
+ description: "Pass an RPC connection in ShieldedFetchOptions or X402Config",
1444
+ },
1445
+ ],
1446
+ },
1447
+ X402_SETTLEMENT_FAILED: {
1448
+ name: "X402SettlementFailed",
1449
+ message: "x402 settlement retries exhausted",
1450
+ category: "TRANSIENT",
1451
+ retryable: true,
1452
+ retry_after_ms: 5_000,
1453
+ recovery_actions: [
1454
+ {
1455
+ action: "retry",
1456
+ description: "Retry the x402 payment — the facilitator may be temporarily unavailable",
1457
+ },
1458
+ ],
1459
+ },
1460
+ TX_SIZE_OVERFLOW: {
1461
+ name: "TxSizeOverflow",
1462
+ message: "Transaction exceeds Solana's 1,232-byte wire size limit",
1463
+ category: "INPUT_VALIDATION",
1464
+ retryable: false,
1465
+ recovery_actions: [
1466
+ {
1467
+ action: "use_alt",
1468
+ description: "Enable address lookup tables to compress the transaction",
1469
+ },
1470
+ {
1471
+ action: "simplify_route",
1472
+ description: "Use a simpler swap route with fewer hops or accounts",
1473
+ },
1474
+ ],
1475
+ },
1476
+ };
1477
+ // ---------------------------------------------------------------------------
1478
+ // Conversion functions
1479
+ // ---------------------------------------------------------------------------
1480
+ /**
1481
+ * Convert any error into a structured AgentError.
1482
+ *
1483
+ * Handles:
1484
+ * - On-chain Anchor errors (code 6000-6069)
1485
+ * - SDK errors (code 7000-7033)
1486
+ * - Network/RPC errors (from message patterns)
1487
+ * - Unknown errors (wrapped as FATAL)
1488
+ *
1489
+ * Uses bigint for context values instead of BN.
1490
+ */
1491
+ export function toAgentError(error, extraContext) {
1492
+ const context = { ...extraContext };
1493
+ // 1. Already an AgentError
1494
+ if (isAgentError(error))
1495
+ return error;
1496
+ // 2. On-chain Anchor error code
1497
+ const onChainCode = extractErrorCode(error);
1498
+ if (onChainCode !== null) {
1499
+ const mapping = ON_CHAIN_ERROR_MAP[onChainCode];
1500
+ if (mapping) {
1501
+ return {
1502
+ code: String(onChainCode),
1503
+ message: mapping.message,
1504
+ category: mapping.category,
1505
+ retryable: mapping.retryable,
1506
+ retry_after_ms: mapping.retry_after_ms,
1507
+ recovery_actions: mapping.recovery_actions,
1508
+ context: {
1509
+ ...context,
1510
+ error_name: mapping.name,
1511
+ on_chain_code: onChainCode,
1512
+ },
1513
+ };
1514
+ }
1515
+ // Unknown on-chain code
1516
+ return {
1517
+ code: String(onChainCode),
1518
+ message: `Unknown on-chain error code ${onChainCode}`,
1519
+ category: "FATAL",
1520
+ retryable: false,
1521
+ recovery_actions: [],
1522
+ context: { ...context, on_chain_code: onChainCode },
1523
+ };
1524
+ }
1525
+ // 3. SDK numeric error code (7000-7032) from Error with code property
1526
+ const sdkNumericCode = extractSdkCode(error);
1527
+ if (sdkNumericCode !== null) {
1528
+ const sdkName = SDK_ERROR_CODES[sdkNumericCode];
1529
+ if (sdkName) {
1530
+ const mapping = SDK_ERRORS[sdkName];
1531
+ return {
1532
+ code: sdkName,
1533
+ message: mapping.message,
1534
+ category: mapping.category,
1535
+ retryable: mapping.retryable,
1536
+ retry_after_ms: mapping.retry_after_ms,
1537
+ recovery_actions: mapping.recovery_actions,
1538
+ context: {
1539
+ ...context,
1540
+ error_name: mapping.name,
1541
+ sdk_code: sdkNumericCode,
1542
+ },
1543
+ };
1544
+ }
1545
+ }
1546
+ // 4. Network / RPC error patterns
1547
+ const message = extractMessage(error);
1548
+ if (message.includes("429") || message.includes("rate limit")) {
1549
+ return fromSdkMapping("RPC_ERROR", context, message);
1550
+ }
1551
+ if (message.includes("fetch") ||
1552
+ message.includes("ECONNREFUSED") ||
1553
+ message.includes("ETIMEDOUT") ||
1554
+ message.includes("network")) {
1555
+ return fromSdkMapping("NETWORK_ERROR", context, message);
1556
+ }
1557
+ if (message.includes("blockhash") && message.includes("not found")) {
1558
+ return fromSdkMapping("EXECUTION_FAILED", context, message);
1559
+ }
1560
+ if (message.includes("simulation") ||
1561
+ message.includes("SimulateTransaction")) {
1562
+ return fromSdkMapping("SIMULATION_FAILED", context, message);
1563
+ }
1564
+ if (message.includes("Precheck failed")) {
1565
+ return fromSdkMapping("PRECHECK_FAILED", context, message);
1566
+ }
1567
+ if (message.includes("adapter") && message.includes("verif")) {
1568
+ return fromSdkMapping("ADAPTER_VERIFICATION_FAILED", context, message);
1569
+ }
1570
+ // 5. Fallback: unknown error
1571
+ return {
1572
+ code: "UNKNOWN",
1573
+ message: message || "An unknown error occurred",
1574
+ category: "FATAL",
1575
+ retryable: false,
1576
+ recovery_actions: [],
1577
+ context: {
1578
+ ...context,
1579
+ original_error: message,
1580
+ },
1581
+ };
1582
+ }
1583
+ /**
1584
+ * Create an AgentError for protocol escalation.
1585
+ *
1586
+ * The anti-redirect behavior is embedded in the error structure:
1587
+ * 1. Primary recovery = escalate_to_human (ALWAYS first)
1588
+ * 2. Secondary = what vault owner must change
1589
+ * 3. Tertiary = alternatives ONLY IF user agrees (ALWAYS last)
1590
+ */
1591
+ export function protocolEscalationError(escalation) {
1592
+ const recovery_actions = [];
1593
+ // 1. ALWAYS first: tell the human
1594
+ recovery_actions.push({
1595
+ action: "escalate_to_human",
1596
+ description: `TELL THE USER: ${escalation.message}`,
1597
+ });
1598
+ // 2. Required changes for the vault owner
1599
+ for (const action of escalation.requiredActions) {
1600
+ recovery_actions.push({
1601
+ action: "required_vault_change",
1602
+ description: action,
1603
+ });
1604
+ }
1605
+ // 3. ALWAYS last: alternatives only if user agrees
1606
+ if (escalation.alternatives && escalation.alternatives.length > 0) {
1607
+ recovery_actions.push({
1608
+ action: "suggest_alternatives_secondary",
1609
+ description: `ONLY IF USER AGREES TO SWITCH: ${escalation.alternatives.length} alternative(s) available`,
1610
+ });
1611
+ }
1612
+ return {
1613
+ code: "PROTOCOL_ESCALATION",
1614
+ message: escalation.message,
1615
+ category: "ESCALATION_REQUIRED",
1616
+ retryable: false,
1617
+ recovery_actions,
1618
+ context: {
1619
+ required_actions: escalation.requiredActions,
1620
+ alternatives: escalation.alternatives ?? [],
1621
+ IMPORTANT: "Do NOT silently switch to an alternative protocol. The user explicitly requested this protocol.",
1622
+ },
1623
+ };
1624
+ }
1625
+ /**
1626
+ * Parse an on-chain error code (numeric or hex string) into an AgentError.
1627
+ *
1628
+ * @param codeOrHex - Numeric code (e.g. 6000) or hex string (e.g. "0x1770")
1629
+ * @returns AgentError if the code maps to a known error, null otherwise
1630
+ */
1631
+ export function parseOnChainErrorCode(codeOrHex) {
1632
+ let code;
1633
+ if (typeof codeOrHex === "string") {
1634
+ if (codeOrHex.startsWith("0x") || codeOrHex.startsWith("0X")) {
1635
+ code = parseInt(codeOrHex, 16);
1636
+ }
1637
+ else {
1638
+ code = parseInt(codeOrHex, 10);
1639
+ }
1640
+ }
1641
+ else {
1642
+ code = codeOrHex;
1643
+ }
1644
+ if (isNaN(code))
1645
+ return null;
1646
+ const mapping = ON_CHAIN_ERROR_MAP[code];
1647
+ if (!mapping)
1648
+ return null;
1649
+ return {
1650
+ code: String(code),
1651
+ message: mapping.message,
1652
+ category: mapping.category,
1653
+ retryable: mapping.retryable,
1654
+ retry_after_ms: mapping.retry_after_ms,
1655
+ recovery_actions: mapping.recovery_actions,
1656
+ context: {
1657
+ error_name: mapping.name,
1658
+ on_chain_code: code,
1659
+ },
1660
+ };
1661
+ }
1662
+ /**
1663
+ * Type guard for AgentError.
1664
+ */
1665
+ export function isAgentError(value) {
1666
+ if (!value || typeof value !== "object")
1667
+ return false;
1668
+ const obj = value;
1669
+ return (typeof obj.code === "string" &&
1670
+ typeof obj.message === "string" &&
1671
+ typeof obj.category === "string" &&
1672
+ typeof obj.retryable === "boolean" &&
1673
+ Array.isArray(obj.recovery_actions) &&
1674
+ typeof obj.context === "object" &&
1675
+ obj.context !== null);
1676
+ }
1677
+ /**
1678
+ * Get all mapped on-chain error codes (for testing/documentation).
1679
+ */
1680
+ export function getAllOnChainErrorCodes() {
1681
+ return Object.keys(ON_CHAIN_ERROR_MAP)
1682
+ .map(Number)
1683
+ .sort((a, b) => a - b);
1684
+ }
1685
+ /** Map from ErrorCategory string → SigilErrorCategory.type */
1686
+ const CATEGORY_TYPE_MAP = {
1687
+ SPENDING_CAP: "spending",
1688
+ PERMISSION: "permission",
1689
+ PROTOCOL_NOT_SUPPORTED: "protocol",
1690
+ RESOURCE_NOT_FOUND: "vault",
1691
+ INPUT_VALIDATION: "vault",
1692
+ POLICY_VIOLATION: "permission",
1693
+ ESCALATION_REQUIRED: "permission",
1694
+ TRANSIENT: "network",
1695
+ RATE_LIMIT: "network",
1696
+ FATAL: "network",
1697
+ };
1698
+ /**
1699
+ * Convert an AgentError into a typed SigilErrorCategory for switch exhaustiveness.
1700
+ *
1701
+ * Extracts typed context from the AgentError.context bag into the appropriate
1702
+ * discriminated union variant. Returns the variant matching the error's category.
1703
+ *
1704
+ * @example
1705
+ * ```typescript
1706
+ * const err = toAgentError(error);
1707
+ * const cat = categorizeError(err);
1708
+ * switch (cat.type) {
1709
+ * case "spending": console.log(`${cat.remaining} remaining of ${cat.cap}`); break;
1710
+ * case "permission": console.log(`Need: ${cat.required}`); break;
1711
+ * case "protocol": console.log(`Unknown: ${cat.protocol}`); break;
1712
+ * case "vault": console.log(`Vault ${cat.status}`); break;
1713
+ * case "network": console.log(`Retryable: ${cat.retryable}`); break;
1714
+ * }
1715
+ * ```
1716
+ */
1717
+ /** Safely convert unknown context values to bigint without throwing. */
1718
+ function safeBigInt(value) {
1719
+ if (typeof value === "bigint")
1720
+ return value;
1721
+ if (typeof value === "number" && Number.isFinite(value))
1722
+ return BigInt(Math.trunc(value));
1723
+ if (typeof value === "string") {
1724
+ try {
1725
+ return BigInt(value);
1726
+ }
1727
+ catch {
1728
+ return 0n;
1729
+ }
1730
+ }
1731
+ return 0n;
1732
+ }
1733
+ export function categorizeError(err) {
1734
+ const code = parseInt(err.code, 10) || 0;
1735
+ const categoryType = CATEGORY_TYPE_MAP[err.category] ?? "network";
1736
+ switch (categoryType) {
1737
+ case "spending":
1738
+ return {
1739
+ type: "spending",
1740
+ code,
1741
+ remaining: safeBigInt(err.context.remaining),
1742
+ cap: safeBigInt(err.context.cap),
1743
+ };
1744
+ case "permission":
1745
+ return {
1746
+ type: "permission",
1747
+ code,
1748
+ required: err.context.required_permission ?? err.message,
1749
+ };
1750
+ case "protocol":
1751
+ return {
1752
+ type: "protocol",
1753
+ code,
1754
+ protocol: err.context.protocol ?? "unknown",
1755
+ };
1756
+ case "vault":
1757
+ return {
1758
+ type: "vault",
1759
+ code,
1760
+ status: err.context.vault_status ?? err.message,
1761
+ };
1762
+ case "network":
1763
+ return {
1764
+ type: "network",
1765
+ code,
1766
+ retryable: err.retryable,
1767
+ };
1768
+ }
1769
+ }
1770
+ /**
1771
+ * Get all SDK error codes (for testing/documentation).
1772
+ */
1773
+ export function getAllSdkErrorCodes() {
1774
+ return Object.entries(SDK_ERROR_CODES)
1775
+ .map(([code, name]) => ({ code: Number(code), name }))
1776
+ .sort((a, b) => a.code - b.code);
1777
+ }
1778
+ // ---------------------------------------------------------------------------
1779
+ // Internal helpers
1780
+ // ---------------------------------------------------------------------------
1781
+ function extractErrorCode(error) {
1782
+ if (!error || typeof error !== "object")
1783
+ return null;
1784
+ const e = error;
1785
+ // Direct code property
1786
+ if (typeof e.code === "number" && e.code >= 6000 && e.code <= 6069)
1787
+ return e.code;
1788
+ // Anchor error structure
1789
+ if (e.error && typeof e.error === "object") {
1790
+ const inner = e.error;
1791
+ if (inner.errorCode && typeof inner.errorCode === "object") {
1792
+ const ec = inner.errorCode;
1793
+ if (typeof ec.number === "number")
1794
+ return ec.number;
1795
+ }
1796
+ }
1797
+ // Parse from SendTransactionError logs
1798
+ if (e.message && typeof e.message === "string") {
1799
+ const match = e.message.match(/custom program error: 0x([0-9a-fA-F]+)/);
1800
+ if (match) {
1801
+ const code = parseInt(match[1], 16);
1802
+ if (code >= 6000 && code <= 6069)
1803
+ return code;
1804
+ }
1805
+ }
1806
+ return null;
1807
+ }
1808
+ function extractSdkCode(error) {
1809
+ if (!error || typeof error !== "object")
1810
+ return null;
1811
+ const e = error;
1812
+ if (typeof e.code === "number" && e.code >= 7000 && e.code <= 7033)
1813
+ return e.code;
1814
+ return null;
1815
+ }
1816
+ function extractMessage(error) {
1817
+ if (!error)
1818
+ return "";
1819
+ if (typeof error === "string")
1820
+ return error;
1821
+ if (error instanceof Error)
1822
+ return error.message;
1823
+ if (typeof error === "object") {
1824
+ const e = error;
1825
+ if (typeof e.message === "string")
1826
+ return e.message;
1827
+ }
1828
+ return String(error);
1829
+ }
1830
+ function fromSdkMapping(code, context, originalMessage) {
1831
+ const mapping = SDK_ERRORS[code];
1832
+ return {
1833
+ code,
1834
+ message: mapping.message,
1835
+ category: mapping.category,
1836
+ retryable: mapping.retryable,
1837
+ retry_after_ms: mapping.retry_after_ms,
1838
+ recovery_actions: mapping.recovery_actions,
1839
+ context: {
1840
+ ...context,
1841
+ error_name: mapping.name,
1842
+ original_message: originalMessage,
1843
+ },
1844
+ };
1845
+ }
1846
+ const SDK_ERROR_PATTERNS = [
1847
+ {
1848
+ pattern: /Vault is not active/,
1849
+ category: "RESOURCE_NOT_FOUND",
1850
+ retryable: false,
1851
+ recovery_actions: [
1852
+ { action: "check_vault_status", description: "Verify vault status. It may be frozen or closed." },
1853
+ { action: "reactivate_vault", description: "If frozen, ask the vault owner to reactivate.", tool: "reactivateVault" },
1854
+ ],
1855
+ },
1856
+ {
1857
+ pattern: /Agent .+ is not registered/,
1858
+ category: "PERMISSION",
1859
+ retryable: false,
1860
+ recovery_actions: [
1861
+ { action: "register_agent", description: "Register this agent in the vault.", tool: "registerAgent" },
1862
+ ],
1863
+ },
1864
+ {
1865
+ pattern: /Agent .+ is paused/,
1866
+ category: "PERMISSION",
1867
+ retryable: false,
1868
+ recovery_actions: [
1869
+ { action: "unpause_agent", description: "Ask the vault owner to unpause this agent.", tool: "unpauseAgent" },
1870
+ ],
1871
+ },
1872
+ {
1873
+ pattern: /lacks permission for action/,
1874
+ category: "PERMISSION",
1875
+ retryable: false,
1876
+ recovery_actions: [
1877
+ { action: "update_permissions", description: "Request permission for this action type from the vault owner." },
1878
+ ],
1879
+ },
1880
+ {
1881
+ pattern: /Protocol .+ is not allowed/,
1882
+ category: "PROTOCOL_NOT_SUPPORTED",
1883
+ retryable: false,
1884
+ recovery_actions: [
1885
+ { action: "add_protocol", description: "Add this protocol to the vault's allowlist." },
1886
+ ],
1887
+ },
1888
+ {
1889
+ pattern: /Transaction size .+ exceeds/,
1890
+ category: "INPUT_VALIDATION",
1891
+ retryable: false,
1892
+ recovery_actions: [
1893
+ { action: "add_alts", description: "Pass protocolAltAddresses from your DeFi API response." },
1894
+ { action: "reduce_instructions", description: "Reduce instruction count or split across multiple transactions." },
1895
+ ],
1896
+ },
1897
+ {
1898
+ pattern: /Position limit reached/,
1899
+ category: "POLICY_VIOLATION",
1900
+ retryable: true,
1901
+ recovery_actions: [
1902
+ { action: "close_position", description: "Close an existing position before opening a new one." },
1903
+ ],
1904
+ },
1905
+ {
1906
+ pattern: /Spending action .+ requires amount > 0/,
1907
+ category: "INPUT_VALIDATION",
1908
+ retryable: false,
1909
+ recovery_actions: [
1910
+ { action: "fix_amount", description: "Set amount to the transaction value in token base units." },
1911
+ ],
1912
+ },
1913
+ {
1914
+ pattern: /Non-spending action .+ requires amount === 0/,
1915
+ category: "INPUT_VALIDATION",
1916
+ retryable: false,
1917
+ recovery_actions: [
1918
+ { action: "set_zero_amount", description: "Non-spending actions (close, withdraw, etc.) require amount = 0n." },
1919
+ ],
1920
+ },
1921
+ {
1922
+ pattern: /No target protocol/,
1923
+ category: "INPUT_VALIDATION",
1924
+ retryable: false,
1925
+ recovery_actions: [
1926
+ { action: "add_instructions", description: "Include DeFi instructions in the wrap call, or set targetProtocol explicitly." },
1927
+ ],
1928
+ },
1929
+ {
1930
+ pattern: /Escrow action/,
1931
+ category: "INPUT_VALIDATION",
1932
+ retryable: false,
1933
+ recovery_actions: [
1934
+ { action: "use_escrow_api", description: "Use createEscrow/settleEscrow/refundEscrow instead of wrap()." },
1935
+ ],
1936
+ },
1937
+ ];
1938
+ // ─── SigilSdkError ──────────────────────────────────────────────────────────
1939
+ /**
1940
+ * Error class that is BOTH an Error instance AND an AgentError.
1941
+ * Critical: extends Error so `instanceof Error` checks work in consumer code.
1942
+ */
1943
+ export class SigilSdkError extends Error {
1944
+ code;
1945
+ category;
1946
+ retryable;
1947
+ recovery_actions;
1948
+ context;
1949
+ retry_after_ms;
1950
+ constructor(agentError) {
1951
+ super(agentError.message);
1952
+ this.name = "SigilSdkError";
1953
+ this.code = agentError.code;
1954
+ this.category = agentError.category;
1955
+ this.retryable = agentError.retryable;
1956
+ this.recovery_actions = agentError.recovery_actions;
1957
+ this.context = agentError.context ?? {};
1958
+ if (agentError.retry_after_ms)
1959
+ this.retry_after_ms = agentError.retry_after_ms;
1960
+ }
1961
+ }
1962
+ // ─── toSigilAgentError ────────────────────────────────────────────────────────
1963
+ /**
1964
+ * Convert any error thrown by seal() or SigilClient methods into a structured AgentError.
1965
+ * Returns a SigilSdkError (extends Error) so instanceof Error checks still work.
1966
+ *
1967
+ * Processing order:
1968
+ * 1. Try on-chain error extraction via toAgentError() (numeric codes 6000-6070)
1969
+ * 2. Pattern-match SDK error messages (11 patterns from seal.ts throw sites)
1970
+ * 3. Fallback to UNKNOWN/FATAL
1971
+ */
1972
+ export function toSigilAgentError(err) {
1973
+ // Try on-chain error extraction first
1974
+ const onChain = toAgentError(err);
1975
+ if (onChain.code !== "UNKNOWN")
1976
+ return new SigilSdkError(onChain);
1977
+ // Pattern-match SDK errors
1978
+ const message = err instanceof Error ? err.message : String(err);
1979
+ for (const p of SDK_ERROR_PATTERNS) {
1980
+ if (p.pattern.test(message)) {
1981
+ return new SigilSdkError({
1982
+ code: `SDK_${p.category}`,
1983
+ message,
1984
+ category: p.category,
1985
+ retryable: p.retryable,
1986
+ recovery_actions: p.recovery_actions,
1987
+ context: {},
1988
+ });
1989
+ }
1990
+ }
1991
+ // Fallback
1992
+ return new SigilSdkError({
1993
+ code: "UNKNOWN",
1994
+ message,
1995
+ category: "FATAL",
1996
+ retryable: false,
1997
+ recovery_actions: [],
1998
+ context: {},
1999
+ });
2000
+ }
2001
+ //# sourceMappingURL=agent-errors.js.map