@usesigil/kit 0.16.0 → 0.17.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 (629) hide show
  1. package/README.md +56 -0
  2. package/dist/advanced-analytics.d.ts +3 -2
  3. package/dist/advanced-analytics.d.ts.map +1 -1
  4. package/dist/advanced-analytics.js +9 -42
  5. package/dist/advanced-analytics.js.map +1 -1
  6. package/dist/agent-bootstrap.d.ts +1 -2
  7. package/dist/agent-bootstrap.d.ts.map +1 -1
  8. package/dist/agent-bootstrap.js.map +1 -1
  9. package/dist/agent-errors.d.ts +20 -4
  10. package/dist/agent-errors.d.ts.map +1 -1
  11. package/dist/agent-errors.js +854 -369
  12. package/dist/agent-errors.js.map +1 -1
  13. package/dist/audit-log.d.ts +101 -0
  14. package/dist/audit-log.d.ts.map +1 -0
  15. package/dist/audit-log.js +145 -0
  16. package/dist/audit-log.js.map +1 -0
  17. package/dist/caip2-network.d.ts +171 -0
  18. package/dist/caip2-network.d.ts.map +1 -0
  19. package/dist/caip2-network.js +202 -0
  20. package/dist/caip2-network.js.map +1 -0
  21. package/dist/canonical-encode.d.ts +59 -0
  22. package/dist/canonical-encode.d.ts.map +1 -0
  23. package/dist/canonical-encode.js +141 -0
  24. package/dist/canonical-encode.js.map +1 -0
  25. package/dist/cosign-helper.d.ts +264 -0
  26. package/dist/cosign-helper.d.ts.map +1 -0
  27. package/dist/cosign-helper.js +147 -0
  28. package/dist/cosign-helper.js.map +1 -0
  29. package/dist/create-vault.d.ts +92 -0
  30. package/dist/create-vault.d.ts.map +1 -1
  31. package/dist/create-vault.js +98 -7
  32. package/dist/create-vault.js.map +1 -1
  33. package/dist/dashboard/close-vault.d.ts +110 -0
  34. package/dist/dashboard/close-vault.d.ts.map +1 -0
  35. package/dist/dashboard/close-vault.js +165 -0
  36. package/dist/dashboard/close-vault.js.map +1 -0
  37. package/dist/dashboard/errors.d.ts +2 -2
  38. package/dist/dashboard/errors.d.ts.map +1 -1
  39. package/dist/dashboard/errors.js +11 -7
  40. package/dist/dashboard/errors.js.map +1 -1
  41. package/dist/dashboard/index.d.ts +181 -34
  42. package/dist/dashboard/index.d.ts.map +1 -1
  43. package/dist/dashboard/index.js +258 -52
  44. package/dist/dashboard/index.js.map +1 -1
  45. package/dist/dashboard/mutations.d.ts +117 -26
  46. package/dist/dashboard/mutations.d.ts.map +1 -1
  47. package/dist/dashboard/mutations.js +521 -110
  48. package/dist/dashboard/mutations.js.map +1 -1
  49. package/dist/dashboard/post-assertion-validation.d.ts +1 -1
  50. package/dist/dashboard/post-assertion-validation.d.ts.map +1 -1
  51. package/dist/dashboard/post-assertion-validation.js +169 -48
  52. package/dist/dashboard/post-assertion-validation.js.map +1 -1
  53. package/dist/dashboard/reads.d.ts +3 -4
  54. package/dist/dashboard/reads.d.ts.map +1 -1
  55. package/dist/dashboard/reads.js +11 -22
  56. package/dist/dashboard/reads.js.map +1 -1
  57. package/dist/dashboard/types.d.ts +32 -17
  58. package/dist/dashboard/types.d.ts.map +1 -1
  59. package/dist/errors/agent-errors.generated.d.ts +21 -0
  60. package/dist/errors/agent-errors.generated.d.ts.map +1 -0
  61. package/dist/errors/agent-errors.generated.js +133 -0
  62. package/dist/errors/agent-errors.generated.js.map +1 -0
  63. package/dist/errors/codes.d.ts +21 -2
  64. package/dist/errors/codes.d.ts.map +1 -1
  65. package/dist/errors/codes.js +19 -0
  66. package/dist/errors/codes.js.map +1 -1
  67. package/dist/errors/context.d.ts +9 -1
  68. package/dist/errors/context.d.ts.map +1 -1
  69. package/dist/event-analytics.d.ts +1 -3
  70. package/dist/event-analytics.d.ts.map +1 -1
  71. package/dist/event-analytics.js +28 -81
  72. package/dist/event-analytics.js.map +1 -1
  73. package/dist/events.d.ts.map +1 -1
  74. package/dist/events.js +23 -14
  75. package/dist/events.js.map +1 -1
  76. package/dist/generated/accounts/agentSpendOverlay.d.ts +60 -0
  77. package/dist/generated/accounts/agentSpendOverlay.d.ts.map +1 -1
  78. package/dist/generated/accounts/agentSpendOverlay.js +6 -2
  79. package/dist/generated/accounts/agentSpendOverlay.js.map +1 -1
  80. package/dist/generated/accounts/agentVault.d.ts +168 -4
  81. package/dist/generated/accounts/agentVault.d.ts.map +1 -1
  82. package/dist/generated/accounts/agentVault.js +11 -3
  83. package/dist/generated/accounts/agentVault.js.map +1 -1
  84. package/dist/generated/accounts/auditLogRejected.d.ts +66 -0
  85. package/dist/generated/accounts/auditLogRejected.d.ts.map +1 -0
  86. package/dist/generated/accounts/auditLogRejected.js +68 -0
  87. package/dist/generated/accounts/auditLogRejected.js.map +1 -0
  88. package/dist/generated/accounts/auditLogSuccess.d.ts +78 -0
  89. package/dist/generated/accounts/auditLogSuccess.d.ts.map +1 -0
  90. package/dist/generated/accounts/auditLogSuccess.js +68 -0
  91. package/dist/generated/accounts/auditLogSuccess.js.map +1 -0
  92. package/dist/generated/accounts/index.d.ts +4 -4
  93. package/dist/generated/accounts/index.d.ts.map +1 -1
  94. package/dist/generated/accounts/index.js +4 -4
  95. package/dist/generated/accounts/index.js.map +1 -1
  96. package/dist/generated/accounts/pendingAgentGrant.d.ts +199 -0
  97. package/dist/generated/accounts/pendingAgentGrant.d.ts.map +1 -0
  98. package/dist/generated/accounts/pendingAgentGrant.js +75 -0
  99. package/dist/generated/accounts/pendingAgentGrant.js.map +1 -0
  100. package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts +64 -0
  101. package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts.map +1 -1
  102. package/dist/generated/accounts/pendingAgentPermissionsUpdate.js +7 -1
  103. package/dist/generated/accounts/pendingAgentPermissionsUpdate.js.map +1 -1
  104. package/dist/generated/accounts/pendingOwnershipTransfer.d.ts +131 -0
  105. package/dist/generated/accounts/pendingOwnershipTransfer.d.ts.map +1 -0
  106. package/dist/generated/accounts/pendingOwnershipTransfer.js +76 -0
  107. package/dist/generated/accounts/pendingOwnershipTransfer.js.map +1 -0
  108. package/dist/generated/accounts/pendingPolicyUpdate.d.ts +200 -4
  109. package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -1
  110. package/dist/generated/accounts/pendingPolicyUpdate.js +19 -1
  111. package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -1
  112. package/dist/generated/accounts/policyConfig.d.ts +479 -36
  113. package/dist/generated/accounts/policyConfig.d.ts.map +1 -1
  114. package/dist/generated/accounts/policyConfig.js +30 -3
  115. package/dist/generated/accounts/policyConfig.js.map +1 -1
  116. package/dist/generated/accounts/postExecutionAssertions.d.ts +2 -2
  117. package/dist/generated/accounts/postExecutionAssertions.d.ts.map +1 -1
  118. package/dist/generated/accounts/postExecutionAssertions.js +3 -3
  119. package/dist/generated/accounts/sessionAuthority.d.ts +140 -12
  120. package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -1
  121. package/dist/generated/accounts/sessionAuthority.js +9 -7
  122. package/dist/generated/accounts/sessionAuthority.js.map +1 -1
  123. package/dist/generated/accounts/spendTracker.d.ts +83 -3
  124. package/dist/generated/accounts/spendTracker.d.ts.map +1 -1
  125. package/dist/generated/accounts/spendTracker.js +14 -2
  126. package/dist/generated/accounts/spendTracker.js.map +1 -1
  127. package/dist/generated/errors/sigil.d.ts +129 -83
  128. package/dist/generated/errors/sigil.d.ts.map +1 -1
  129. package/dist/generated/errors/sigil.js +175 -106
  130. package/dist/generated/errors/sigil.js.map +1 -1
  131. package/dist/generated/event-discriminators.d.ts.map +1 -1
  132. package/dist/generated/event-discriminators.js +11 -14
  133. package/dist/generated/event-discriminators.js.map +1 -1
  134. package/dist/generated/instructions/acceptOwnershipTransfer.d.ts +142 -0
  135. package/dist/generated/instructions/acceptOwnershipTransfer.d.ts.map +1 -0
  136. package/dist/generated/instructions/acceptOwnershipTransfer.js +171 -0
  137. package/dist/generated/instructions/acceptOwnershipTransfer.js.map +1 -0
  138. package/dist/generated/instructions/acceptOwnershipTransferMultisig.d.ts +142 -0
  139. package/dist/generated/instructions/acceptOwnershipTransferMultisig.d.ts.map +1 -0
  140. package/dist/generated/instructions/acceptOwnershipTransferMultisig.js +171 -0
  141. package/dist/generated/instructions/acceptOwnershipTransferMultisig.js.map +1 -0
  142. package/dist/generated/instructions/applyAgentGrant.d.ts +100 -0
  143. package/dist/generated/instructions/applyAgentGrant.d.ts.map +1 -0
  144. package/dist/generated/instructions/{applyConstraintsUpdate.js → applyAgentGrant.js} +66 -42
  145. package/dist/generated/instructions/applyAgentGrant.js.map +1 -0
  146. package/dist/generated/instructions/applyAgentPermissionsUpdate.d.ts +31 -8
  147. package/dist/generated/instructions/applyAgentPermissionsUpdate.d.ts.map +1 -1
  148. package/dist/generated/instructions/applyAgentPermissionsUpdate.js +38 -2
  149. package/dist/generated/instructions/applyAgentPermissionsUpdate.js.map +1 -1
  150. package/dist/generated/instructions/applyPendingPolicy.d.ts +18 -7
  151. package/dist/generated/instructions/applyPendingPolicy.d.ts.map +1 -1
  152. package/dist/generated/instructions/applyPendingPolicy.js +38 -2
  153. package/dist/generated/instructions/applyPendingPolicy.js.map +1 -1
  154. package/dist/generated/instructions/cancelAgentGrant.d.ts +106 -0
  155. package/dist/generated/instructions/cancelAgentGrant.d.ts.map +1 -0
  156. package/dist/generated/instructions/{allocatePendingConstraintsPda.js → cancelAgentGrant.js} +54 -42
  157. package/dist/generated/instructions/cancelAgentGrant.js.map +1 -0
  158. package/dist/generated/instructions/cancelOwnershipTransfer.d.ts +121 -0
  159. package/dist/generated/instructions/cancelOwnershipTransfer.d.ts.map +1 -0
  160. package/dist/generated/instructions/{queueCloseConstraints.js → cancelOwnershipTransfer.js} +58 -44
  161. package/dist/generated/instructions/cancelOwnershipTransfer.js.map +1 -0
  162. package/dist/generated/instructions/closePostAssertions.d.ts +6 -1
  163. package/dist/generated/instructions/closePostAssertions.d.ts.map +1 -1
  164. package/dist/generated/instructions/closePostAssertions.js +11 -3
  165. package/dist/generated/instructions/closePostAssertions.js.map +1 -1
  166. package/dist/generated/instructions/closeVault.d.ts +40 -8
  167. package/dist/generated/instructions/closeVault.d.ts.map +1 -1
  168. package/dist/generated/instructions/closeVault.js +40 -2
  169. package/dist/generated/instructions/closeVault.js.map +1 -1
  170. package/dist/generated/instructions/createPostAssertions.d.ts +4 -0
  171. package/dist/generated/instructions/createPostAssertions.d.ts.map +1 -1
  172. package/dist/generated/instructions/createPostAssertions.js +2 -0
  173. package/dist/generated/instructions/createPostAssertions.js.map +1 -1
  174. package/dist/generated/instructions/depositFunds.d.ts +21 -10
  175. package/dist/generated/instructions/depositFunds.d.ts.map +1 -1
  176. package/dist/generated/instructions/depositFunds.js +37 -2
  177. package/dist/generated/instructions/depositFunds.js.map +1 -1
  178. package/dist/generated/instructions/finalizeSession.d.ts +49 -7
  179. package/dist/generated/instructions/finalizeSession.d.ts.map +1 -1
  180. package/dist/generated/instructions/finalizeSession.js +59 -2
  181. package/dist/generated/instructions/finalizeSession.js.map +1 -1
  182. package/dist/generated/instructions/freezeVault.d.ts +36 -5
  183. package/dist/generated/instructions/freezeVault.d.ts.map +1 -1
  184. package/dist/generated/instructions/freezeVault.js +65 -4
  185. package/dist/generated/instructions/freezeVault.js.map +1 -1
  186. package/dist/generated/instructions/index.d.ts +10 -15
  187. package/dist/generated/instructions/index.d.ts.map +1 -1
  188. package/dist/generated/instructions/index.js +10 -15
  189. package/dist/generated/instructions/index.js.map +1 -1
  190. package/dist/generated/instructions/initializeVault.d.ts +79 -9
  191. package/dist/generated/instructions/initializeVault.d.ts.map +1 -1
  192. package/dist/generated/instructions/initializeVault.js +57 -3
  193. package/dist/generated/instructions/initializeVault.js.map +1 -1
  194. package/dist/generated/instructions/initiateOwnershipTransfer.d.ts +106 -0
  195. package/dist/generated/instructions/initiateOwnershipTransfer.d.ts.map +1 -0
  196. package/dist/generated/instructions/initiateOwnershipTransfer.js +181 -0
  197. package/dist/generated/instructions/initiateOwnershipTransfer.js.map +1 -0
  198. package/dist/generated/instructions/pauseAgent.d.ts +49 -5
  199. package/dist/generated/instructions/pauseAgent.d.ts.map +1 -1
  200. package/dist/generated/instructions/pauseAgent.js +80 -5
  201. package/dist/generated/instructions/pauseAgent.js.map +1 -1
  202. package/dist/generated/instructions/promoteGraylistDestination.d.ts +56 -0
  203. package/dist/generated/instructions/promoteGraylistDestination.d.ts.map +1 -0
  204. package/dist/generated/instructions/{createInstructionConstraints.js → promoteGraylistDestination.js} +23 -40
  205. package/dist/generated/instructions/promoteGraylistDestination.js.map +1 -0
  206. package/dist/generated/instructions/queueAgentGrant.d.ts +113 -0
  207. package/dist/generated/instructions/queueAgentGrant.d.ts.map +1 -0
  208. package/dist/generated/instructions/queueAgentGrant.js +181 -0
  209. package/dist/generated/instructions/queueAgentGrant.js.map +1 -0
  210. package/dist/generated/instructions/queueAgentPermissionsUpdate.d.ts +8 -0
  211. package/dist/generated/instructions/queueAgentPermissionsUpdate.d.ts.map +1 -1
  212. package/dist/generated/instructions/queueAgentPermissionsUpdate.js +4 -0
  213. package/dist/generated/instructions/queueAgentPermissionsUpdate.js.map +1 -1
  214. package/dist/generated/instructions/queuePolicyUpdate.d.ts +32 -0
  215. package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -1
  216. package/dist/generated/instructions/queuePolicyUpdate.js +17 -1
  217. package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -1
  218. package/dist/generated/instructions/reactivateVault.d.ts +71 -5
  219. package/dist/generated/instructions/reactivateVault.d.ts.map +1 -1
  220. package/dist/generated/instructions/reactivateVault.js +80 -5
  221. package/dist/generated/instructions/reactivateVault.js.map +1 -1
  222. package/dist/generated/instructions/recordAgentViolation.d.ts +89 -0
  223. package/dist/generated/instructions/recordAgentViolation.d.ts.map +1 -0
  224. package/dist/generated/instructions/recordAgentViolation.js +152 -0
  225. package/dist/generated/instructions/recordAgentViolation.js.map +1 -0
  226. package/dist/generated/instructions/registerAgent.d.ts +84 -6
  227. package/dist/generated/instructions/registerAgent.d.ts.map +1 -1
  228. package/dist/generated/instructions/registerAgent.js +81 -4
  229. package/dist/generated/instructions/registerAgent.js.map +1 -1
  230. package/dist/generated/instructions/revokeAgent.d.ts +49 -6
  231. package/dist/generated/instructions/revokeAgent.d.ts.map +1 -1
  232. package/dist/generated/instructions/revokeAgent.js +81 -4
  233. package/dist/generated/instructions/revokeAgent.js.map +1 -1
  234. package/dist/generated/instructions/setObserveOnly.d.ts +56 -0
  235. package/dist/generated/instructions/setObserveOnly.d.ts.map +1 -0
  236. package/dist/generated/instructions/setObserveOnly.js +111 -0
  237. package/dist/generated/instructions/setObserveOnly.js.map +1 -0
  238. package/dist/generated/instructions/unpauseAgent.d.ts +46 -5
  239. package/dist/generated/instructions/unpauseAgent.d.ts.map +1 -1
  240. package/dist/generated/instructions/unpauseAgent.js +80 -5
  241. package/dist/generated/instructions/unpauseAgent.js.map +1 -1
  242. package/dist/generated/instructions/validateAndAuthorize.d.ts +29 -0
  243. package/dist/generated/instructions/validateAndAuthorize.d.ts.map +1 -1
  244. package/dist/generated/instructions/validateAndAuthorize.js +4 -0
  245. package/dist/generated/instructions/validateAndAuthorize.js.map +1 -1
  246. package/dist/generated/instructions/withdrawFunds.d.ts +53 -11
  247. package/dist/generated/instructions/withdrawFunds.d.ts.map +1 -1
  248. package/dist/generated/instructions/withdrawFunds.js +51 -2
  249. package/dist/generated/instructions/withdrawFunds.js.map +1 -1
  250. package/dist/generated/programs/sigil.d.ts +79 -99
  251. package/dist/generated/programs/sigil.d.ts.map +1 -1
  252. package/dist/generated/programs/sigil.js +139 -199
  253. package/dist/generated/programs/sigil.js.map +1 -1
  254. package/dist/generated/types/actionAuthorized.d.ts +0 -2
  255. package/dist/generated/types/actionAuthorized.d.ts.map +1 -1
  256. package/dist/generated/types/actionAuthorized.js +0 -2
  257. package/dist/generated/types/actionAuthorized.js.map +1 -1
  258. package/dist/generated/types/agentAutoRevoked.d.ts +31 -0
  259. package/dist/generated/types/agentAutoRevoked.d.ts.map +1 -0
  260. package/dist/generated/types/{orphanConstraintsPdaCleaned.js → agentAutoRevoked.js} +12 -8
  261. package/dist/generated/types/agentAutoRevoked.js.map +1 -0
  262. package/dist/generated/types/agentEntry.d.ts +48 -0
  263. package/dist/generated/types/agentEntry.d.ts.map +1 -1
  264. package/dist/generated/types/agentEntry.js +4 -2
  265. package/dist/generated/types/agentEntry.js.map +1 -1
  266. package/dist/generated/types/agentGrantApplied.d.ts +38 -0
  267. package/dist/generated/types/agentGrantApplied.d.ts.map +1 -0
  268. package/dist/generated/types/agentGrantApplied.js +34 -0
  269. package/dist/generated/types/agentGrantApplied.js.map +1 -0
  270. package/dist/generated/types/agentGrantCancelled.d.ts +33 -0
  271. package/dist/generated/types/agentGrantCancelled.d.ts.map +1 -0
  272. package/dist/generated/types/agentGrantCancelled.js +28 -0
  273. package/dist/generated/types/agentGrantCancelled.js.map +1 -0
  274. package/dist/generated/types/agentGrantQueued.d.ts +38 -0
  275. package/dist/generated/types/agentGrantQueued.d.ts.map +1 -0
  276. package/dist/generated/types/agentGrantQueued.js +32 -0
  277. package/dist/generated/types/agentGrantQueued.js.map +1 -0
  278. package/dist/generated/types/auditEntry.d.ts +120 -0
  279. package/dist/generated/types/auditEntry.d.ts.map +1 -0
  280. package/dist/generated/types/auditEntry.js +34 -0
  281. package/dist/generated/types/auditEntry.js.map +1 -0
  282. package/dist/generated/types/destinationGraylistEntry.d.ts +32 -0
  283. package/dist/generated/types/destinationGraylistEntry.d.ts.map +1 -0
  284. package/dist/generated/types/destinationGraylistEntry.js +24 -0
  285. package/dist/generated/types/destinationGraylistEntry.js.map +1 -0
  286. package/dist/generated/types/graylistEntered.d.ts +31 -0
  287. package/dist/generated/types/graylistEntered.d.ts.map +1 -0
  288. package/dist/generated/types/graylistEntered.js +30 -0
  289. package/dist/generated/types/graylistEntered.js.map +1 -0
  290. package/dist/generated/types/graylistPromoted.d.ts +29 -0
  291. package/dist/generated/types/graylistPromoted.d.ts.map +1 -0
  292. package/dist/generated/types/graylistPromoted.js +28 -0
  293. package/dist/generated/types/graylistPromoted.js.map +1 -0
  294. package/dist/generated/types/index.d.ts +13 -22
  295. package/dist/generated/types/index.d.ts.map +1 -1
  296. package/dist/generated/types/index.js +13 -22
  297. package/dist/generated/types/index.js.map +1 -1
  298. package/dist/generated/types/observeOnlyChanged.d.ts +33 -0
  299. package/dist/generated/types/observeOnlyChanged.d.ts.map +1 -0
  300. package/dist/generated/types/observeOnlyChanged.js +32 -0
  301. package/dist/generated/types/observeOnlyChanged.js.map +1 -0
  302. package/dist/generated/types/ownershipTransferAccepted.d.ts +32 -0
  303. package/dist/generated/types/ownershipTransferAccepted.d.ts.map +1 -0
  304. package/dist/generated/types/ownershipTransferAccepted.js +30 -0
  305. package/dist/generated/types/ownershipTransferAccepted.js.map +1 -0
  306. package/dist/generated/types/ownershipTransferCancelled.d.ts +29 -0
  307. package/dist/generated/types/ownershipTransferCancelled.d.ts.map +1 -0
  308. package/dist/generated/types/ownershipTransferCancelled.js +28 -0
  309. package/dist/generated/types/ownershipTransferCancelled.js.map +1 -0
  310. package/dist/generated/types/ownershipTransferInitiated.d.ts +33 -0
  311. package/dist/generated/types/ownershipTransferInitiated.d.ts.map +1 -0
  312. package/dist/generated/types/ownershipTransferInitiated.js +30 -0
  313. package/dist/generated/types/ownershipTransferInitiated.js.map +1 -0
  314. package/dist/generated/types/perRecipientCounter.d.ts +61 -0
  315. package/dist/generated/types/perRecipientCounter.d.ts.map +1 -0
  316. package/dist/generated/types/perRecipientCounter.js +26 -0
  317. package/dist/generated/types/perRecipientCounter.js.map +1 -0
  318. package/dist/generated/types/postAssertionEntry.d.ts +14 -7
  319. package/dist/generated/types/postAssertionEntry.d.ts.map +1 -1
  320. package/dist/generated/types/postAssertionEntry.js +5 -7
  321. package/dist/generated/types/postAssertionEntry.js.map +1 -1
  322. package/dist/generated/types/postAssertionEntryZC.d.ts +53 -22
  323. package/dist/generated/types/postAssertionEntryZC.d.ts.map +1 -1
  324. package/dist/generated/types/postAssertionEntryZC.js +4 -6
  325. package/dist/generated/types/postAssertionEntryZC.js.map +1 -1
  326. package/dist/generated/types/sessionFinalized.d.ts +0 -4
  327. package/dist/generated/types/sessionFinalized.d.ts.map +1 -1
  328. package/dist/generated/types/sessionFinalized.js +0 -2
  329. package/dist/generated/types/sessionFinalized.js.map +1 -1
  330. package/dist/generated/types/vaultFrozen.d.ts +14 -0
  331. package/dist/generated/types/vaultFrozen.d.ts.map +1 -1
  332. package/dist/generated/types/vaultFrozen.js +2 -0
  333. package/dist/generated/types/vaultFrozen.js.map +1 -1
  334. package/dist/index.d.ts +28 -9
  335. package/dist/index.d.ts.map +1 -1
  336. package/dist/index.js +64 -11
  337. package/dist/index.js.map +1 -1
  338. package/dist/inspector.d.ts +0 -23
  339. package/dist/inspector.d.ts.map +1 -1
  340. package/dist/inspector.js +0 -52
  341. package/dist/inspector.js.map +1 -1
  342. package/dist/kit-adapter.d.ts +1 -1
  343. package/dist/kit-adapter.d.ts.map +1 -1
  344. package/dist/kit-adapter.js +1 -1
  345. package/dist/kit-adapter.js.map +1 -1
  346. package/dist/multisig-detection.d.ts +83 -0
  347. package/dist/multisig-detection.d.ts.map +1 -0
  348. package/dist/multisig-detection.js +128 -0
  349. package/dist/multisig-detection.js.map +1 -0
  350. package/dist/ownership-transfer.d.ts +79 -0
  351. package/dist/ownership-transfer.d.ts.map +1 -0
  352. package/dist/ownership-transfer.js +66 -0
  353. package/dist/ownership-transfer.js.map +1 -0
  354. package/dist/policy/compute-cosign-digest.d.ts +193 -0
  355. package/dist/policy/compute-cosign-digest.d.ts.map +1 -0
  356. package/dist/policy/compute-cosign-digest.js +318 -0
  357. package/dist/policy/compute-cosign-digest.js.map +1 -0
  358. package/dist/policy/compute-policy-preview-digest.d.ts +258 -0
  359. package/dist/policy/compute-policy-preview-digest.d.ts.map +1 -0
  360. package/dist/policy/compute-policy-preview-digest.js +351 -0
  361. package/dist/policy/compute-policy-preview-digest.js.map +1 -0
  362. package/dist/policy-attestation.d.ts +51 -0
  363. package/dist/policy-attestation.d.ts.map +1 -0
  364. package/dist/policy-attestation.js +43 -0
  365. package/dist/policy-attestation.js.map +1 -0
  366. package/dist/preview-create-vault.d.ts.map +1 -1
  367. package/dist/preview-create-vault.js +37 -16
  368. package/dist/preview-create-vault.js.map +1 -1
  369. package/dist/resolve-accounts.d.ts +75 -10
  370. package/dist/resolve-accounts.d.ts.map +1 -1
  371. package/dist/resolve-accounts.js +68 -32
  372. package/dist/resolve-accounts.js.map +1 -1
  373. package/dist/rpc-helpers.d.ts +29 -3
  374. package/dist/rpc-helpers.d.ts.map +1 -1
  375. package/dist/rpc-helpers.js +51 -12
  376. package/dist/rpc-helpers.js.map +1 -1
  377. package/dist/seal/intent-digest.d.ts +195 -0
  378. package/dist/seal/intent-digest.d.ts.map +1 -0
  379. package/dist/seal/intent-digest.js +372 -0
  380. package/dist/seal/intent-digest.js.map +1 -0
  381. package/dist/seal.d.ts +166 -3
  382. package/dist/seal.d.ts.map +1 -1
  383. package/dist/seal.js +428 -32
  384. package/dist/seal.js.map +1 -1
  385. package/dist/security-analytics.d.ts +3 -3
  386. package/dist/security-analytics.d.ts.map +1 -1
  387. package/dist/security-analytics.js +13 -128
  388. package/dist/security-analytics.js.map +1 -1
  389. package/dist/session-mint.d.ts +72 -0
  390. package/dist/session-mint.d.ts.map +1 -0
  391. package/dist/session-mint.js +59 -0
  392. package/dist/session-mint.js.map +1 -0
  393. package/dist/simulation.d.ts +19 -0
  394. package/dist/simulation.d.ts.map +1 -1
  395. package/dist/simulation.js +187 -95
  396. package/dist/simulation.js.map +1 -1
  397. package/dist/squads-detection.d.ts +135 -0
  398. package/dist/squads-detection.d.ts.map +1 -0
  399. package/dist/squads-detection.js +124 -0
  400. package/dist/squads-detection.js.map +1 -0
  401. package/dist/state-resolver.d.ts +0 -16
  402. package/dist/state-resolver.d.ts.map +1 -1
  403. package/dist/state-resolver.js +162 -97
  404. package/dist/state-resolver.js.map +1 -1
  405. package/dist/testing/devnet.d.ts +40 -1
  406. package/dist/testing/devnet.d.ts.map +1 -1
  407. package/dist/testing/devnet.js +333 -44
  408. package/dist/testing/devnet.js.map +1 -1
  409. package/dist/testing/errors/expect.d.ts +1 -1
  410. package/dist/testing/errors/expect.js +1 -1
  411. package/dist/testing/errors/names.generated.d.ts +81 -58
  412. package/dist/testing/errors/names.generated.d.ts.map +1 -1
  413. package/dist/testing/errors/names.generated.js +82 -59
  414. package/dist/testing/errors/names.generated.js.map +1 -1
  415. package/dist/testing/mock-rpc.d.ts +8 -0
  416. package/dist/testing/mock-rpc.d.ts.map +1 -1
  417. package/dist/testing/mock-rpc.js +13 -0
  418. package/dist/testing/mock-rpc.js.map +1 -1
  419. package/dist/testing/mock-state.d.ts +2 -0
  420. package/dist/testing/mock-state.d.ts.map +1 -1
  421. package/dist/testing/mock-state.js +43 -4
  422. package/dist/testing/mock-state.js.map +1 -1
  423. package/dist/types.d.ts +5 -15
  424. package/dist/types.d.ts.map +1 -1
  425. package/dist/types.js +11 -69
  426. package/dist/types.js.map +1 -1
  427. package/dist/vault-analytics.d.ts +0 -2
  428. package/dist/vault-analytics.d.ts.map +1 -1
  429. package/dist/vault-analytics.js +1 -9
  430. package/dist/vault-analytics.js.map +1 -1
  431. package/package.json +7 -12
  432. package/dist/constraints/index.d.ts +0 -23
  433. package/dist/constraints/index.d.ts.map +0 -1
  434. package/dist/constraints/index.js +0 -24
  435. package/dist/constraints/index.js.map +0 -1
  436. package/dist/dashboard/constraint-builders.d.ts +0 -82
  437. package/dist/dashboard/constraint-builders.d.ts.map +0 -1
  438. package/dist/dashboard/constraint-builders.js +0 -204
  439. package/dist/dashboard/constraint-builders.js.map +0 -1
  440. package/dist/dashboard/constraint-reads.d.ts +0 -50
  441. package/dist/dashboard/constraint-reads.d.ts.map +0 -1
  442. package/dist/dashboard/constraint-reads.js +0 -119
  443. package/dist/dashboard/constraint-reads.js.map +0 -1
  444. package/dist/generated/accounts/escrowDeposit.d.ts +0 -50
  445. package/dist/generated/accounts/escrowDeposit.d.ts.map +0 -1
  446. package/dist/generated/accounts/escrowDeposit.js +0 -76
  447. package/dist/generated/accounts/escrowDeposit.js.map +0 -1
  448. package/dist/generated/accounts/instructionConstraints.d.ts +0 -46
  449. package/dist/generated/accounts/instructionConstraints.d.ts.map +0 -1
  450. package/dist/generated/accounts/instructionConstraints.js +0 -73
  451. package/dist/generated/accounts/instructionConstraints.js.map +0 -1
  452. package/dist/generated/accounts/pendingCloseConstraints.d.ts +0 -49
  453. package/dist/generated/accounts/pendingCloseConstraints.d.ts.map +0 -1
  454. package/dist/generated/accounts/pendingCloseConstraints.js +0 -68
  455. package/dist/generated/accounts/pendingCloseConstraints.js.map +0 -1
  456. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +0 -76
  457. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +0 -1
  458. package/dist/generated/accounts/pendingConstraintsUpdate.js +0 -77
  459. package/dist/generated/accounts/pendingConstraintsUpdate.js.map +0 -1
  460. package/dist/generated/instructions/allocateConstraintsPda.d.ts +0 -62
  461. package/dist/generated/instructions/allocateConstraintsPda.d.ts.map +0 -1
  462. package/dist/generated/instructions/allocateConstraintsPda.js +0 -134
  463. package/dist/generated/instructions/allocateConstraintsPda.js.map +0 -1
  464. package/dist/generated/instructions/allocatePendingConstraintsPda.d.ts +0 -66
  465. package/dist/generated/instructions/allocatePendingConstraintsPda.d.ts.map +0 -1
  466. package/dist/generated/instructions/allocatePendingConstraintsPda.js.map +0 -1
  467. package/dist/generated/instructions/applyCloseConstraints.d.ts +0 -59
  468. package/dist/generated/instructions/applyCloseConstraints.d.ts.map +0 -1
  469. package/dist/generated/instructions/applyCloseConstraints.js +0 -143
  470. package/dist/generated/instructions/applyCloseConstraints.js.map +0 -1
  471. package/dist/generated/instructions/applyConstraintsUpdate.d.ts +0 -62
  472. package/dist/generated/instructions/applyConstraintsUpdate.d.ts.map +0 -1
  473. package/dist/generated/instructions/applyConstraintsUpdate.js.map +0 -1
  474. package/dist/generated/instructions/cancelCloseConstraints.d.ts +0 -51
  475. package/dist/generated/instructions/cancelCloseConstraints.d.ts.map +0 -1
  476. package/dist/generated/instructions/cancelCloseConstraints.js +0 -115
  477. package/dist/generated/instructions/cancelCloseConstraints.js.map +0 -1
  478. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts +0 -51
  479. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts.map +0 -1
  480. package/dist/generated/instructions/cancelConstraintsUpdate.js +0 -115
  481. package/dist/generated/instructions/cancelConstraintsUpdate.js.map +0 -1
  482. package/dist/generated/instructions/cleanupOrphanConstraintsPda.d.ts +0 -67
  483. package/dist/generated/instructions/cleanupOrphanConstraintsPda.d.ts.map +0 -1
  484. package/dist/generated/instructions/cleanupOrphanConstraintsPda.js +0 -120
  485. package/dist/generated/instructions/cleanupOrphanConstraintsPda.js.map +0 -1
  486. package/dist/generated/instructions/closeSettledEscrow.d.ts +0 -72
  487. package/dist/generated/instructions/closeSettledEscrow.d.ts.map +0 -1
  488. package/dist/generated/instructions/closeSettledEscrow.js +0 -127
  489. package/dist/generated/instructions/closeSettledEscrow.js.map +0 -1
  490. package/dist/generated/instructions/createEscrow.d.ts +0 -131
  491. package/dist/generated/instructions/createEscrow.d.ts.map +0 -1
  492. package/dist/generated/instructions/createEscrow.js +0 -272
  493. package/dist/generated/instructions/createEscrow.js.map +0 -1
  494. package/dist/generated/instructions/createInstructionConstraints.d.ts +0 -68
  495. package/dist/generated/instructions/createInstructionConstraints.d.ts.map +0 -1
  496. package/dist/generated/instructions/createInstructionConstraints.js.map +0 -1
  497. package/dist/generated/instructions/extendPda.d.ts +0 -52
  498. package/dist/generated/instructions/extendPda.d.ts.map +0 -1
  499. package/dist/generated/instructions/extendPda.js +0 -86
  500. package/dist/generated/instructions/extendPda.js.map +0 -1
  501. package/dist/generated/instructions/queueCloseConstraints.d.ts +0 -66
  502. package/dist/generated/instructions/queueCloseConstraints.d.ts.map +0 -1
  503. package/dist/generated/instructions/queueCloseConstraints.js.map +0 -1
  504. package/dist/generated/instructions/queueConstraintsUpdate.d.ts +0 -75
  505. package/dist/generated/instructions/queueConstraintsUpdate.d.ts.map +0 -1
  506. package/dist/generated/instructions/queueConstraintsUpdate.js +0 -154
  507. package/dist/generated/instructions/queueConstraintsUpdate.js.map +0 -1
  508. package/dist/generated/instructions/refundEscrow.d.ts +0 -74
  509. package/dist/generated/instructions/refundEscrow.d.ts.map +0 -1
  510. package/dist/generated/instructions/refundEscrow.js +0 -142
  511. package/dist/generated/instructions/refundEscrow.js.map +0 -1
  512. package/dist/generated/instructions/settleEscrow.d.ts +0 -80
  513. package/dist/generated/instructions/settleEscrow.d.ts.map +0 -1
  514. package/dist/generated/instructions/settleEscrow.js +0 -173
  515. package/dist/generated/instructions/settleEscrow.js.map +0 -1
  516. package/dist/generated/types/accountConstraint.d.ts +0 -33
  517. package/dist/generated/types/accountConstraint.d.ts.map +0 -1
  518. package/dist/generated/types/accountConstraint.js +0 -26
  519. package/dist/generated/types/accountConstraint.js.map +0 -1
  520. package/dist/generated/types/accountConstraintZC.d.ts +0 -25
  521. package/dist/generated/types/accountConstraintZC.d.ts.map +0 -1
  522. package/dist/generated/types/accountConstraintZC.js +0 -28
  523. package/dist/generated/types/accountConstraintZC.js.map +0 -1
  524. package/dist/generated/types/closeConstraintsApplied.d.ts +0 -20
  525. package/dist/generated/types/closeConstraintsApplied.d.ts.map +0 -1
  526. package/dist/generated/types/closeConstraintsApplied.js +0 -24
  527. package/dist/generated/types/closeConstraintsApplied.js.map +0 -1
  528. package/dist/generated/types/closeConstraintsCancelled.d.ts +0 -16
  529. package/dist/generated/types/closeConstraintsCancelled.d.ts.map +0 -1
  530. package/dist/generated/types/closeConstraintsCancelled.js +0 -18
  531. package/dist/generated/types/closeConstraintsCancelled.js.map +0 -1
  532. package/dist/generated/types/closeConstraintsQueued.d.ts +0 -20
  533. package/dist/generated/types/closeConstraintsQueued.d.ts.map +0 -1
  534. package/dist/generated/types/closeConstraintsQueued.js +0 -24
  535. package/dist/generated/types/closeConstraintsQueued.js.map +0 -1
  536. package/dist/generated/types/constraintEntry.d.ts +0 -35
  537. package/dist/generated/types/constraintEntry.d.ts.map +0 -1
  538. package/dist/generated/types/constraintEntry.js +0 -29
  539. package/dist/generated/types/constraintEntry.js.map +0 -1
  540. package/dist/generated/types/constraintEntryZC.d.ts +0 -73
  541. package/dist/generated/types/constraintEntryZC.d.ts.map +0 -1
  542. package/dist/generated/types/constraintEntryZC.js +0 -49
  543. package/dist/generated/types/constraintEntryZC.js.map +0 -1
  544. package/dist/generated/types/constraintOperator.d.ts +0 -22
  545. package/dist/generated/types/constraintOperator.d.ts.map +0 -1
  546. package/dist/generated/types/constraintOperator.js +0 -28
  547. package/dist/generated/types/constraintOperator.js.map +0 -1
  548. package/dist/generated/types/constraintsChangeApplied.d.ts +0 -30
  549. package/dist/generated/types/constraintsChangeApplied.d.ts.map +0 -1
  550. package/dist/generated/types/constraintsChangeApplied.js +0 -32
  551. package/dist/generated/types/constraintsChangeApplied.js.map +0 -1
  552. package/dist/generated/types/constraintsChangeCancelled.d.ts +0 -16
  553. package/dist/generated/types/constraintsChangeCancelled.d.ts.map +0 -1
  554. package/dist/generated/types/constraintsChangeCancelled.js +0 -18
  555. package/dist/generated/types/constraintsChangeCancelled.js.map +0 -1
  556. package/dist/generated/types/constraintsChangeQueued.d.ts +0 -30
  557. package/dist/generated/types/constraintsChangeQueued.d.ts.map +0 -1
  558. package/dist/generated/types/constraintsChangeQueued.js +0 -32
  559. package/dist/generated/types/constraintsChangeQueued.js.map +0 -1
  560. package/dist/generated/types/dataConstraint.d.ts +0 -23
  561. package/dist/generated/types/dataConstraint.d.ts.map +0 -1
  562. package/dist/generated/types/dataConstraint.js +0 -27
  563. package/dist/generated/types/dataConstraint.js.map +0 -1
  564. package/dist/generated/types/dataConstraintZC.d.ts +0 -20
  565. package/dist/generated/types/dataConstraintZC.d.ts.map +0 -1
  566. package/dist/generated/types/dataConstraintZC.js +0 -30
  567. package/dist/generated/types/dataConstraintZC.js.map +0 -1
  568. package/dist/generated/types/discriminatorFormat.d.ts +0 -25
  569. package/dist/generated/types/discriminatorFormat.d.ts.map +0 -1
  570. package/dist/generated/types/discriminatorFormat.js +0 -31
  571. package/dist/generated/types/discriminatorFormat.js.map +0 -1
  572. package/dist/generated/types/escrowCreated.d.ts +0 -30
  573. package/dist/generated/types/escrowCreated.d.ts.map +0 -1
  574. package/dist/generated/types/escrowCreated.js +0 -34
  575. package/dist/generated/types/escrowCreated.js.map +0 -1
  576. package/dist/generated/types/escrowRefunded.d.ts +0 -26
  577. package/dist/generated/types/escrowRefunded.d.ts.map +0 -1
  578. package/dist/generated/types/escrowRefunded.js +0 -30
  579. package/dist/generated/types/escrowRefunded.js.map +0 -1
  580. package/dist/generated/types/escrowSettled.d.ts +0 -26
  581. package/dist/generated/types/escrowSettled.d.ts.map +0 -1
  582. package/dist/generated/types/escrowSettled.js +0 -30
  583. package/dist/generated/types/escrowSettled.js.map +0 -1
  584. package/dist/generated/types/escrowStatus.d.ts +0 -18
  585. package/dist/generated/types/escrowStatus.d.ts.map +0 -1
  586. package/dist/generated/types/escrowStatus.js +0 -24
  587. package/dist/generated/types/escrowStatus.js.map +0 -1
  588. package/dist/generated/types/instructionConstraintsCreated.d.ts +0 -34
  589. package/dist/generated/types/instructionConstraintsCreated.d.ts.map +0 -1
  590. package/dist/generated/types/instructionConstraintsCreated.js +0 -36
  591. package/dist/generated/types/instructionConstraintsCreated.js.map +0 -1
  592. package/dist/generated/types/orphanConstraintsPdaCleaned.d.ts +0 -22
  593. package/dist/generated/types/orphanConstraintsPdaCleaned.d.ts.map +0 -1
  594. package/dist/generated/types/orphanConstraintsPdaCleaned.js.map +0 -1
  595. package/dist/generated/types/pdaAllocated.d.ts +0 -24
  596. package/dist/generated/types/pdaAllocated.d.ts.map +0 -1
  597. package/dist/generated/types/pdaAllocated.js +0 -28
  598. package/dist/generated/types/pdaAllocated.js.map +0 -1
  599. package/dist/generated/types/pdaExtended.d.ts +0 -24
  600. package/dist/generated/types/pdaExtended.d.ts.map +0 -1
  601. package/dist/generated/types/pdaExtended.js +0 -28
  602. package/dist/generated/types/pdaExtended.js.map +0 -1
  603. package/dist/post-assertions/cross-field-lte.d.ts +0 -134
  604. package/dist/post-assertions/cross-field-lte.d.ts.map +0 -1
  605. package/dist/post-assertions/cross-field-lte.js +0 -129
  606. package/dist/post-assertions/cross-field-lte.js.map +0 -1
  607. package/dist/post-assertions/index.d.ts +0 -28
  608. package/dist/post-assertions/index.d.ts.map +0 -1
  609. package/dist/post-assertions/index.js +0 -28
  610. package/dist/post-assertions/index.js.map +0 -1
  611. package/dist/post-assertions/presets/flash-trade.d.ts +0 -139
  612. package/dist/post-assertions/presets/flash-trade.d.ts.map +0 -1
  613. package/dist/post-assertions/presets/flash-trade.js +0 -154
  614. package/dist/post-assertions/presets/flash-trade.js.map +0 -1
  615. package/dist/protocol-registry/annotations/drift.json +0 -7
  616. package/dist/protocol-registry/annotations/flash-trade.json +0 -7
  617. package/dist/protocol-registry/annotations/jupiter-borrow.json +0 -7
  618. package/dist/protocol-registry/annotations/jupiter-earn.json +0 -7
  619. package/dist/protocol-registry/annotations/jupiter-lend.json +0 -7
  620. package/dist/protocol-registry/annotations/jupiter.json +0 -7
  621. package/dist/protocol-registry/annotations/kamino.json +0 -7
  622. package/dist/protocol-registry/index.d.ts +0 -45
  623. package/dist/protocol-registry/index.d.ts.map +0 -1
  624. package/dist/protocol-registry/index.js +0 -76
  625. package/dist/protocol-registry/index.js.map +0 -1
  626. package/dist/protocol-tier.d.ts +0 -157
  627. package/dist/protocol-tier.d.ts.map +0 -1
  628. package/dist/protocol-tier.js +0 -104
  629. package/dist/protocol-tier.js.map +0 -1
package/dist/seal.js CHANGED
@@ -13,15 +13,17 @@
13
13
  * - PROTOCOL_TREASURY token accounts initialized for USDC/USDT on devnet
14
14
  * - Vault funded with tokens and ATAs created
15
15
  */
16
- import { AccountRole } from "./kit-adapter.js";
16
+ import { AccountRole, fetchEncodedAccounts, } from "./kit-adapter.js";
17
17
  import { getSigilModuleLogger, setSigilModuleLogger } from "./logger.js";
18
18
  import { newCorrelationId, invokeHook, composeHooks, } from "./hooks.js";
19
19
  import { runPlugins, validatePluginList, } from "./plugin.js";
20
20
  import { VaultStatus } from "./generated/types/vaultStatus.js";
21
21
  import { getValidateAndAuthorizeInstructionAsync } from "./generated/instructions/validateAndAuthorize.js";
22
22
  import { getFinalizeSessionInstructionAsync } from "./generated/instructions/finalizeSession.js";
23
- import { resolveVaultState, resolveVaultStateForOwner, resolveVaultBudget, } from "./state-resolver.js";
24
- import { getSessionPDA, getAgentOverlayPDA, getConstraintsPDA, } from "./resolve-accounts.js";
23
+ import { computeScalarIntentDigest, computeSealInputDigest, } from "./seal/intent-digest.js";
24
+ import { deriveNetworkIdentity, } from "./caip2-network.js";
25
+ import { resolveVaultState, resolveVaultStateForOwner, resolveVaultBudget, bytesToAddress, } from "./state-resolver.js";
26
+ import { getSessionPDA, getAgentOverlayPDA } from "./resolve-accounts.js";
25
27
  import { composeSigilTransaction, measureTransactionSize } from "./composer.js";
26
28
  import { BlockhashCache, getBlockhashCache, signAndEncode, sendAndConfirmTransaction, } from "./rpc-helpers.js";
27
29
  import { AltCache, mergeAltAddresses, verifySigilAlt } from "./alt-loader.js";
@@ -36,14 +38,13 @@ import { parseTokenBalance } from "./simulation.js";
36
38
  import { createVault, } from "./create-vault.js";
37
39
  import { SigilSdkDomainError } from "./errors/sdk.js";
38
40
  import { SigilRpcError } from "./errors/rpc.js";
39
- import { SIGIL_ERROR__SDK__VAULT_INACTIVE, SIGIL_ERROR__SDK__AGENT_NOT_REGISTERED, SIGIL_ERROR__SDK__AGENT_PAUSED, SIGIL_ERROR__SDK__AGENT_ZERO_CAPABILITY, SIGIL_ERROR__SDK__INVALID_AMOUNT, SIGIL_ERROR__SDK__INVALID_CONFIG, SIGIL_ERROR__SDK__INVALID_NETWORK, SIGIL_ERROR__SDK__INVALID_PARAMS, SIGIL_ERROR__SDK__SPL_TOKEN_OP_BLOCKED, SIGIL_ERROR__SDK__PROTOCOL_NOT_ALLOWED, SIGIL_ERROR__SDK__PROTOCOL_NOT_TARGETED, SIGIL_ERROR__SDK__INSTRUCTION_COUNT, SIGIL_ERROR__SDK__CAP_EXCEEDED, SIGIL_ERROR__SDK__ATA_NON_CANONICAL, SIGIL_ERROR__SDK__HOOK_ABORTED, SIGIL_ERROR__RPC__TX_FAILED, SIGIL_ERROR__RPC__TX_TOO_LARGE, } from "./errors/codes.js";
41
+ import { SIGIL_ERROR__SDK__VAULT_INACTIVE, SIGIL_ERROR__SDK__AGENT_NOT_REGISTERED, SIGIL_ERROR__SDK__AGENT_PAUSED, SIGIL_ERROR__SDK__AGENT_ZERO_CAPABILITY, SIGIL_ERROR__SDK__INVALID_AMOUNT, SIGIL_ERROR__SDK__INVALID_CONFIG, SIGIL_ERROR__SDK__INVALID_NETWORK, SIGIL_ERROR__SDK__INVALID_PARAMS, SIGIL_ERROR__SDK__SPL_TOKEN_OP_BLOCKED, SIGIL_ERROR__SDK__PROTOCOL_NOT_ALLOWED, SIGIL_ERROR__SDK__PROTOCOL_NOT_TARGETED, SIGIL_ERROR__SDK__INSTRUCTION_COUNT, SIGIL_ERROR__SDK__CAP_EXCEEDED, SIGIL_ERROR__SDK__ATA_NON_CANONICAL, SIGIL_ERROR__SDK__SEAL_FAILED, SIGIL_ERROR__SDK__HOOK_ABORTED, SIGIL_ERROR__SDK__MAINNET_CONFIRMATION_REQUIRED, SIGIL_ERROR__RPC__TX_FAILED, SIGIL_ERROR__RPC__TX_TOO_LARGE, } from "./errors/codes.js";
40
42
  // ─── Well-known program addresses to strip ──────────────────────────────────
41
43
  // PR 3.B F036: use canonical constants from types.ts instead of local dupes.
42
44
  import { TOKEN_PROGRAM_ADDRESS as TOKEN_PROGRAM, TOKEN_2022_PROGRAM_ADDRESS as TOKEN_2022_PROGRAM, COMPUTE_BUDGET_PROGRAM_ADDRESS as COMPUTE_BUDGET_PROGRAM, SYSTEM_PROGRAM_ADDRESS as SYSTEM_PROGRAM, } from "./types.js";
43
45
  /** Sentinel balance for drain detection when RPC fails to fetch actual balance.
44
46
  * 1n makes any outflow trigger percentage-based flags (conservative). */
45
47
  const DRAIN_DETECTION_MIN_BALANCE = 1n;
46
- // ─── Internal helpers ───────────────────────────────────────────────────────
47
48
  /** Replace agent ATAs with vault ATAs in DeFi instruction account lists. */
48
49
  export function replaceAgentAtas(instructions, replacements) {
49
50
  if (replacements.size === 0)
@@ -64,6 +65,106 @@ export function replaceAgentAtas(instructions, replacements) {
64
65
  }),
65
66
  }));
66
67
  }
68
+ /**
69
+ * F-Q4 satisfier helper — resolve the mints of VAULT-OWNED Token-2022 token
70
+ * accounts among the sandwiched DeFi instruction's writable accounts.
71
+ *
72
+ * The on-chain F-Q4 gate (`validate_and_authorize` → `destination_check`) vets
73
+ * the mint EXTENSIONS of any vault-owned Token-2022 token account a swap
74
+ * delivers into the vault — a PermanentDelegate / TransferHook /
75
+ * ConfidentialTransfer mint could let a third party drain or hide the holding
76
+ * out-of-band. To do so it reads the token account's mint (bytes[0..32]) and
77
+ * REQUIRES that mint resolvable in validate's `remaining_accounts`, else it
78
+ * reverts `ErrToken2022OutputMintUnresolvable` (6106). The F-Q1a writable set
79
+ * does NOT carry the mint (a mint is read-only in a swap), so this resolves it.
80
+ *
81
+ * Mirrors the on-chain demand EXACTLY (destination_check.rs:166-219): an account
82
+ * triggers the gate iff it is owned by the Token-2022 program, has >= 72 bytes,
83
+ * and its token-account authority (bytes[32..64]) is the vault. For each such
84
+ * account this returns its mint (bytes[0..32]) as a READONLY meta.
85
+ *
86
+ * It is PLUMBING, not enforcement: it only adds read-only classification
87
+ * accounts; the on-chain gate stays the sole enforcer. A mint missed here can
88
+ * only cause a fail-closed 6106 revert (never a drain); a mint added that the
89
+ * gate does not demand is harmless (the gate looks it up by pubkey on demand).
90
+ *
91
+ * @param fetched results of `fetchEncodedAccounts` over the candidate
92
+ * writable accounts (each carries its own on-chain bytes).
93
+ * @param vault the vault PDA — only token accounts it authorizes are vetted.
94
+ * @param alreadySeen pubkeys already appended to remaining_accounts (the F-Q1a
95
+ * writable set) — skip re-adding them.
96
+ * @returns deduped READONLY metas, one per distinct vault-owned T22 output mint.
97
+ */
98
+ export function resolveT22OutputMintMetas(fetched, vault, alreadySeen) {
99
+ const metas = [];
100
+ const mintSeen = new Set();
101
+ for (const acc of fetched) {
102
+ // Non-existent on-chain (e.g. a lagging RPC view): the gate can only demand
103
+ // a mint for an account it reads as a vault-owned T22 token account.
104
+ if (!acc.exists)
105
+ continue;
106
+ // Only Token-2022-owned accounts can be vault-owned T22 token accounts.
107
+ if (acc.programAddress !== TOKEN_2022_PROGRAM)
108
+ continue;
109
+ // Mirror the on-chain length guard (destination_check.rs:180) BEFORE any
110
+ // slice — a token account's base layout is 165+ bytes; <72 cannot be one.
111
+ if (acc.data.length < 72)
112
+ continue;
113
+ // Token-account authority ("owner" field, bytes[32..64]); only accounts the
114
+ // VAULT authorizes are the swap's deliver-into-vault target.
115
+ const authority = bytesToAddress(acc.data.slice(32, 64));
116
+ if (authority !== vault)
117
+ continue;
118
+ // The acquired token's mint (bytes[0..32]) — what the gate vets + demands.
119
+ const mint = bytesToAddress(acc.data.slice(0, 32));
120
+ if (alreadySeen.has(mint) || mintSeen.has(mint))
121
+ continue;
122
+ mintSeen.add(mint);
123
+ metas.push({ address: mint, role: AccountRole.READONLY });
124
+ }
125
+ return metas;
126
+ }
127
+ /**
128
+ * M3-01 satisfier helper (derivation half) — the vault's canonical USDC + USDT
129
+ * associated token accounts that finalize's `stable_balance_floor` must see.
130
+ *
131
+ * The on-chain floor (finalize_session) sums the vault's combined USDC+USDT
132
+ * balance and counts ONLY each stablecoin's CANONICAL ATA (M3-01 pin). Sources
133
+ * 1+2 (the named vaultTokenAccount + outputStablecoinAccount) cover the session
134
+ * token and — sometimes — USDC, so a vault that holds reserve in the OTHER
135
+ * stablecoin would under-count and falsely revert. This derives both canonical
136
+ * stablecoin ATAs and drops any already present on finalize (a named account or
137
+ * the F-Q1a writable set); the remainder are fed to finalize's
138
+ * remaining_accounts (on-chain "Source 3").
139
+ *
140
+ * Pure derivation (no RPC) — existence is checked separately — so it is
141
+ * trivially testable. `deriveAta` is legacy-SPL (correct for the current
142
+ * USDC/USDT mints; a Token-2022 stablecoin would need a T22-aware derivation,
143
+ * matching the on-chain SCOPE note in finalize_session.rs).
144
+ */
145
+ export async function deriveStablecoinFloorCandidates(vault, usdcMint, usdtMint, alreadyPresent) {
146
+ const [usdcAta, usdtAta] = await Promise.all([
147
+ deriveAta(vault, usdcMint),
148
+ deriveAta(vault, usdtMint),
149
+ ]);
150
+ return [usdcAta, usdtAta].filter((ata) => !alreadyPresent.has(ata));
151
+ }
152
+ /**
153
+ * M3-01 satisfier helper (existence half) — given the fetched candidate
154
+ * accounts (parallel to `candidates`), return the EXISTING ones as READONLY
155
+ * metas for finalize's remaining_accounts. A non-existent ATA is harmless
156
+ * on-chain (the floor skips any non-token-program account), but we omit it to
157
+ * save wire bytes. Mirrors the F-Q4 `resolveT22OutputMintMetas` existence gate.
158
+ */
159
+ export function resolveStablecoinFloorMetas(fetched, candidates) {
160
+ const metas = [];
161
+ for (let i = 0; i < candidates.length; i++) {
162
+ if (fetched[i]?.exists) {
163
+ metas.push({ address: candidates[i], role: AccountRole.READONLY });
164
+ }
165
+ }
166
+ return metas;
167
+ }
67
168
  // ACTION_TYPE_KEYS removed — ActionType enum eliminated in v6.
68
169
  // Spending is now determined by amount > 0n.
69
170
  // ─── Shared caches ──────────────────────────────────────────────────────────
@@ -375,7 +476,125 @@ export async function seal(params) {
375
476
  }
376
477
  }
377
478
  const rewrittenDefiInstructions = replaceAgentAtas(defiInstructions, ataReplacements);
378
- // Step 8: Build validate_and_authorize instruction
479
+ // F-Q1a SATISFIER (not enforcer). The on-chain destination COMPLETENESS
480
+ // invariant requires every writable, non-vault account of the sandwiched
481
+ // DeFi instruction to be resolvable in validate's AND finalize's
482
+ // remaining_accounts, so the guard can read each owner byte and classify it
483
+ // (an absent writable meta is now rejected fail-closed:
484
+ // DestinationAccountUnresolvable). Reviving the per-recipient cap + floor sum
485
+ // depends on the same accounts reaching finalize. We extract every writable
486
+ // account of the *rewritten* DeFi ixs (post agent-ATA->vault-ATA rewrite, so
487
+ // the addresses are exactly what executes — iterating the pre-rewrite list
488
+ // would capture stale agent ATAs) and attach them as READONLY remaining
489
+ // accounts on both wrapper ixs. READONLY grants no write/sign; the compiled
490
+ // message de-dups by pubkey (mergeRoles keeps the DeFi ix's WRITABLE), and
491
+ // accounts already referenced by the DeFi ix cost ~1 index byte each. This
492
+ // only gives the guard visibility — it never changes the route or intent
493
+ // (atomic-guard principle: feed accounts to inspect, never reshape the tx).
494
+ const feePayer = params.agent.address;
495
+ const defiWritableSeen = new Set();
496
+ const defiWritableReadonlyMetas = [];
497
+ for (const ix of rewrittenDefiInstructions) {
498
+ for (const acc of ix.accounts ?? []) {
499
+ const declaredWritable = acc.role === AccountRole.WRITABLE ||
500
+ acc.role === AccountRole.WRITABLE_SIGNER;
501
+ // The fee-payer agent is WRITABLE in the compiled v0 message regardless of
502
+ // the role the DeFi ix declares for it. The on-chain completeness check
503
+ // reads writability from the compiled message (via
504
+ // load_instruction_at_checked), so a DeFi ix that lists the agent as a
505
+ // readonly signer still surfaces it as a writable meta on-chain — include
506
+ // it so completeness is satisfiable. (Vault ATAs that validate marks
507
+ // writable already appear writable in the swap ix, so the fee payer is the
508
+ // only writability divergence between the ix role and the compiled view.)
509
+ const onChainWritable = declaredWritable || acc.address === feePayer;
510
+ if (onChainWritable && !defiWritableSeen.has(acc.address)) {
511
+ defiWritableSeen.add(acc.address);
512
+ defiWritableReadonlyMetas.push({
513
+ address: acc.address,
514
+ role: AccountRole.READONLY,
515
+ });
516
+ }
517
+ }
518
+ }
519
+ // F-Q4 SATISFIER — vault-owned Token-2022 output-mint resolution.
520
+ //
521
+ // When a swap delivers a Token-2022 token INTO a vault-owned ATA, the on-chain
522
+ // F-Q4 gate (validate_and_authorize → destination_check) vets that mint's
523
+ // extensions and REQUIRES the mint resolvable in validate's remaining_accounts
524
+ // (else `ErrToken2022OutputMintUnresolvable` 6106). The F-Q1a writable set
525
+ // above does NOT carry it (a mint is read-only in a swap), so resolve + append
526
+ // it here. Validate is the SOLE consumer — finalize_session does not run
527
+ // destination_check — so these go on validate ONLY.
528
+ //
529
+ // PERF GATE (sound + fail-closed): only fetch when the Token-2022 program
530
+ // appears in the bundle. Writing a vault Token-2022 account REQUIRES invoking
531
+ // Token-2022, and any invoked program must appear in the invoking ix's account
532
+ // list — so a vault-owned T22 account can never be written without T22 showing
533
+ // up here. If this gate were ever wrong it can only SKIP the fetch → an honest
534
+ // T22 swap reverts 6106 (fail-closed DX), never a bypass. Classic-SPL swaps
535
+ // (the common case) skip the fetch entirely, and existing classic/mock seal
536
+ // tests never trigger the extra RPC round-trip.
537
+ //
538
+ // Rule B: this gate is NON-WEIGHTING on security — under-fire is impossible
539
+ // (the program that touches a vault T22 account is always present in the
540
+ // invoking ix's account metas, so the scan cannot miss it), so the round-trip
541
+ // saving never trades against the (fail-closed) security feed. No pre-flight
542
+ // warning is emitted: a gate skip cannot coincide with a vault T22 write, and
543
+ // detecting one would require the very fetch the gate is optimizing away.
544
+ let t22OutputMintReadonlyMetas = [];
545
+ const bundleTouchesToken2022 = rewrittenDefiInstructions.some((ix) => ix.programAddress === TOKEN_2022_PROGRAM ||
546
+ (ix.accounts ?? []).some((acc) => acc.address === TOKEN_2022_PROGRAM));
547
+ if (bundleTouchesToken2022 && defiWritableReadonlyMetas.length > 0) {
548
+ // One batched getMultipleAccounts over the (<=24) writable DeFi accounts.
549
+ const candidateAddresses = defiWritableReadonlyMetas.map((m) => m.address);
550
+ let fetchedCandidates;
551
+ try {
552
+ fetchedCandidates = await fetchEncodedAccounts(params.rpc, candidateAddresses);
553
+ }
554
+ catch (err) {
555
+ // Fail CLOSED with CONTEXT (not swallow-and-continue): if the bundle
556
+ // delivers a Token-2022 token into the vault, feeding no mint would make
557
+ // the on-chain gate revert 6106 — a far more opaque failure. Surface a
558
+ // domain-typed, step-named error so the caller knows it was the F-Q4
559
+ // output-mint resolution that failed (mirrors how the sibling stablecoin-
560
+ // ATA and balance fetches contextualize their RPC errors).
561
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__SEAL_FAILED, "F-Q4 output-mint resolution failed: could not fetch the swap's " +
562
+ "writable accounts to detect vault-owned Token-2022 outputs. If the " +
563
+ "bundle delivers a Token-2022 token into the vault, on-chain " +
564
+ "validation would revert 6106 (ErrToken2022OutputMintUnresolvable). " +
565
+ "Retry once the RPC is reachable.", { context: { candidateAddresses, cause: redactCause(err) } });
566
+ }
567
+ t22OutputMintReadonlyMetas = resolveT22OutputMintMetas(fetchedCandidates, params.vault, defiWritableSeen);
568
+ }
569
+ // Step 8: Build validate_and_authorize instruction.
570
+ //
571
+ // AC-10 (Phase 4): pass `expectedNonce = 0n`. The session PDA is created
572
+ // via `init` (not `init_if_needed`) on every validate, so a fresh session
573
+ // account starts at nonce=0. The on-chain handler requires
574
+ // `session.nonce == expected_nonce`, so callers MUST pass 0 in the
575
+ // steady-state flow. Phase 8 ownership-transfer flow (M-5) reuses the
576
+ // same field with non-close semantics; that path will resolve the stored
577
+ // value off-chain before calling `seal`.
578
+ //
579
+ // D-1 + D-6 (Bucket 2 audit 2026-05-21): AL3 scalar intent digest. We
580
+ // compute SHA-256 over the canonical SealInput SCALARS (magic prefix +
581
+ // intent_version + network + vault + agent + token_mint + amount +
582
+ // target_protocol) — the on-chain verifier in `validate_and_authorize`
583
+ // recomputes the same digest from its handler args and rejects on byte-
584
+ // equal mismatch with `ErrIntentDigestMismatch` (6102). This closes the
585
+ // preview→execute scalar-tamper class (recipient/amount/mint/protocol
586
+ // swap between the user's signed preview and the submitted bundle).
587
+ // The full ix-bound digest (`computeSealInputDigest` above) remains
588
+ // client-side only — ATA-rewrite mapping for on-chain ix binding is
589
+ // v0.17 work.
590
+ const scalarIntentDigest = computeScalarIntentDigest({
591
+ vault: params.vault,
592
+ agent: params.agent.address,
593
+ tokenMint: params.tokenMint,
594
+ amount: params.amount,
595
+ targetProtocol,
596
+ network: params.network,
597
+ });
379
598
  const validateIxBase = await getValidateAndAuthorizeInstructionAsync({
380
599
  agent: params.agent,
381
600
  vault: params.vault,
@@ -389,32 +608,24 @@ export async function seal(params) {
389
608
  amount: params.amount,
390
609
  targetProtocol,
391
610
  expectedPolicyVersion: state.policy.policyVersion ?? 0n,
611
+ expectedNonce: 0n,
612
+ expectedIntentDigest: scalarIntentDigest,
392
613
  });
393
- // Step 8b: When the vault has instruction constraints configured, the on-chain
394
- // matcher reads the InstructionConstraints PDA from `ctx.remaining_accounts[0]`
395
- // (programs/sigil/src/instructions/validate_and_authorize.rs:141-177). If this
396
- // PDA is not appended, the matcher is silently skipped — and the on-chain
397
- // handler hard-fails with InvalidConstraintsPda when has_constraints == true
398
- // and remaining_accounts is empty (rs:175). Append it as a READONLY remaining
399
- // account so constraint enforcement is reachable.
400
- //
401
- // The codama-generated instruction is Object.freeze'd (see validateAndAuthorize.ts
402
- // line 408), so we cannot mutate its `accounts` array in place. We construct a
403
- // new Instruction object that copies the existing accounts and appends the
404
- // constraints PDA as the first (and only) remaining account — matching the
405
- // on-chain handler's positional read at index 0 of remaining_accounts.
406
- let validateIx = validateIxBase;
407
- if (state.policy.hasConstraints) {
408
- const [constraintsPda] = await getConstraintsPDA(params.vault);
409
- validateIx = {
410
- ...validateIxBase,
411
- accounts: [
412
- ...(validateIxBase.accounts ?? []),
413
- { address: constraintsPda, role: AccountRole.READONLY },
414
- ],
415
- };
416
- }
417
- const finalizeIx = await getFinalizeSessionInstructionAsync({
614
+ // F-Q1a satisfier: append the DeFi ix's writable accounts (as READONLY) to
615
+ // validate's remaining_accounts so the on-chain completeness invariant is
616
+ // satisfiable. Spread into a NEW array — Instruction.accounts is readonly.
617
+ const validateIx = {
618
+ ...validateIxBase,
619
+ accounts: [
620
+ ...(validateIxBase.accounts ?? []),
621
+ ...defiWritableReadonlyMetas,
622
+ // F-Q4: vault-owned Token-2022 output mints (validate-only consumer; the
623
+ // on-chain gate searches remaining_accounts positionally, so append even
624
+ // when a mint is also a named account such as the input tokenMintAccount).
625
+ ...t22OutputMintReadonlyMetas,
626
+ ],
627
+ };
628
+ const finalizeIxBase = await getFinalizeSessionInstructionAsync({
418
629
  payer: params.agent,
419
630
  vault: params.vault,
420
631
  session: sessionPda,
@@ -423,6 +634,68 @@ export async function seal(params) {
423
634
  vaultTokenAccount,
424
635
  outputStablecoinAccount,
425
636
  });
637
+ // M3-01: feed the vault's other canonical stablecoin ATA(s) into finalize so
638
+ // the combined USDC+USDT stable_balance_floor sees the vault's FULL stablecoin
639
+ // holdings. On-chain Sources 1+2 only cover the session token + the output
640
+ // stablecoin, so a vault holding reserve in the OTHER stablecoin would
641
+ // under-count and falsely revert ErrStableFloorViolation. Only canonical ATAs
642
+ // count on-chain (M3-01 pin), so feeding exactly those is sufficient + minimal.
643
+ // Gated on stable_balance_floor > 0 — the default (no floor) adds no accounts
644
+ // and no RPC. Existence-checked + de-duped against named/fed metas.
645
+ let stablecoinFloorMetas = [];
646
+ // Coerce defensively: the resolver always decodes this as a bigint, but a
647
+ // hand-built cachedState could pass a number/null (the pending-mutation form
648
+ // of this field uses null). BigInt(x ?? 0n) gates correctly for all of them
649
+ // so the satisfier never SILENTLY skips when a floor is actually set.
650
+ if (BigInt(state.policy.stableBalanceFloor ?? 0n) > 0n) {
651
+ const usdcMintForFloor = net === "devnet" ? USDC_MINT_DEVNET : USDC_MINT_MAINNET;
652
+ const usdtMintForFloor = net === "devnet" ? USDT_MINT_DEVNET : USDT_MINT_MAINNET;
653
+ const alreadyPresent = new Set([
654
+ vaultTokenAccount,
655
+ ...(outputStablecoinAccount ? [outputStablecoinAccount] : []),
656
+ ...defiWritableReadonlyMetas.map((m) => m.address),
657
+ ]);
658
+ const floorCandidates = await deriveStablecoinFloorCandidates(params.vault, usdcMintForFloor, usdtMintForFloor, alreadyPresent);
659
+ if (floorCandidates.length > 0) {
660
+ try {
661
+ const fetchedFloor = await fetchEncodedAccounts(params.rpc, floorCandidates);
662
+ // fetchEncodedAccounts is contractually length-preserving; if a
663
+ // malformed RPC response ever returned fewer entries, the index-parallel
664
+ // existence filter would drop an ATA silently. Surface it (the drop is
665
+ // still fail-safe: a missing ATA only makes the floor stricter).
666
+ if (fetchedFloor.length !== floorCandidates.length) {
667
+ warnings.push(`M3-01 stable-floor: RPC returned ${fetchedFloor.length} of ` +
668
+ `${floorCandidates.length} requested stablecoin ATA(s); any ` +
669
+ `omitted ATA is dropped from the floor (over-strict, never a bypass).`);
670
+ }
671
+ stablecoinFloorMetas = resolveStablecoinFloorMetas(fetchedFloor, floorCandidates);
672
+ }
673
+ catch (err) {
674
+ // Resilient, NOT silent: the on-chain floor still enforces — feeding no
675
+ // extra ATA only makes it stricter (fail-safe), never a bypass. Surface
676
+ // a warning so a vault holding reserve in the OTHER stablecoin can
677
+ // explain a possible on-chain ErrStableFloorViolation. Mirrors the
678
+ // output-stablecoin ATA existence check above.
679
+ const cause = redactCause(err);
680
+ warnings.push(`M3-01 stable-floor ATA resolution failed due to RPC error (${cause.message ?? cause.name ?? cause.code ?? "unknown"}). ` +
681
+ `Proceeding without the extra stablecoin ATA(s); if this vault holds ` +
682
+ `reserve in the non-session stablecoin, finalize may revert ` +
683
+ `ErrStableFloorViolation. Retry once the RPC is reachable.`);
684
+ }
685
+ }
686
+ }
687
+ // F-Q1a satisfier: finalize's per-recipient cap + floor sum walk the SAME
688
+ // DeFi metas and resolve them in finalize's own remaining_accounts, so the
689
+ // writable accounts must reach finalize too (validate and finalize each carry
690
+ // their own remaining_accounts).
691
+ const finalizeIx = {
692
+ ...finalizeIxBase,
693
+ accounts: [
694
+ ...(finalizeIxBase.accounts ?? []),
695
+ ...defiWritableReadonlyMetas,
696
+ ...stablecoinFloorMetas,
697
+ ],
698
+ };
426
699
  // Step 10: Compose + compile + measure
427
700
  const blockhash = params.blockhash ?? (await getBlockhashCache(params.rpc).get(params.rpc));
428
701
  // Resolve ALTs — Sigil ALT + protocol ALTs (e.g. Jupiter route-specific)
@@ -524,10 +797,29 @@ export async function seal(params) {
524
797
  // covers all three entry paths (executeAndConfirm, SigilVault.execute,
525
798
  // bare seal()) with exactly one invocation per seal.
526
799
  await invokeHook(params.hooks, "onBeforeSign", _hookCtx, compiledTx);
800
+ // AL3 — Phase 9 Batch I per-call intent digest. Computed over the
801
+ // user-approved (vault, agent, mint, amount, target_protocol, network,
802
+ // instructions[]) projection. Excludes wallet-side mutations (Compute
803
+ // Budget ixs prepended later by signers) so the digest reflects exactly
804
+ // what the user approved, not what the wallet wrapped around it.
805
+ const intentDigest = computeSealInputDigest({
806
+ vault: params.vault,
807
+ agent: params.agent.address,
808
+ tokenMint: params.tokenMint,
809
+ amount: params.amount,
810
+ targetProtocol: params.targetProtocol,
811
+ network: params.network,
812
+ instructions: defiInstructions,
813
+ });
814
+ // AL4 — Phase 9 Batch J network identity. CAIP-2 chain id + derived
815
+ // isMainnet boolean. The chain id is also bound into the AL3 digest
816
+ // above via the network_id byte, so a mainnet bundle cannot be
817
+ // replayed on devnet (and vice versa) without producing a different
818
+ // intentDigest.
819
+ const networkIdentity = deriveNetworkIdentity(params.network);
527
820
  return {
528
821
  ok: true,
529
822
  transaction: compiledTx,
530
- isSpending: spending,
531
823
  warnings,
532
824
  txSizeBytes: byteLength,
533
825
  lastValidBlockHeight: blockhash.lastValidBlockHeight,
@@ -537,6 +829,9 @@ export async function seal(params) {
537
829
  tokenBalance,
538
830
  knownRecipients,
539
831
  },
832
+ intentDigest,
833
+ network: networkIdentity.network,
834
+ isMainnet: networkIdentity.isMainnet,
540
835
  };
541
836
  }
542
837
  /**
@@ -588,6 +883,16 @@ export function createSigilClient(config) {
588
883
  const vault = config.vault;
589
884
  const agent = config.agent;
590
885
  const network = config.network;
886
+ // §RP Batch K HIGH-2: snapshot AL2 flag at factory entry. Subsequent
887
+ // config.requireMainnetConfirmation mutations cannot disable the
888
+ // gate without recreating the client.
889
+ const requireMainnetConfirmation = config.requireMainnetConfirmation;
890
+ if (network !== "devnet" && network !== "mainnet") {
891
+ // §RP Batch K MEDIUM-1: runtime guard for JS / any-cast consumers
892
+ // that pass `cluster: "mainnet-beta"` etc. Type system catches it in
893
+ // pure TS but `.d.ts` doesn't help JS callers.
894
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `SigilClientConfig.network must be 'devnet' or 'mainnet'; got ${String(network)}.`, { context: { field: "network", expected: "'devnet' | 'mainnet'" } });
895
+ }
591
896
  const blockhashCache = new BlockhashCache(config.blockhashTtlMs);
592
897
  const localAltCache = new AltCache();
593
898
  const onErrorCallback = config.onError;
@@ -646,6 +951,52 @@ export function createSigilClient(config) {
646
951
  network,
647
952
  seal: clientSeal,
648
953
  async executeAndConfirm(instructions, opts) {
954
+ // AL2 mainnet confirmation gate (Phase 9 Batch K). Three states:
955
+ // 1. Devnet client: ignore the gate entirely — no throw, no warn.
956
+ // 2. Mainnet client + requireMainnetConfirmation: true:
957
+ // - opts.mainnetConfirmed === true → proceed
958
+ // - else → throw 7020 with full context
959
+ // 3. Mainnet client + requireMainnetConfirmation undefined (0.16.x
960
+ // default per D-3):
961
+ // - opts.mainnetConfirmed === undefined → console.warn (telegraphs
962
+ // the v1.0 flip) and proceed
963
+ // - opts.mainnetConfirmed set either way → proceed silently
964
+ // 4. Mainnet client + requireMainnetConfirmation: false → proceed
965
+ // silently (explicit opt-out; no warn).
966
+ if (network === "mainnet") {
967
+ const gateEnabled = requireMainnetConfirmation === true;
968
+ const explicitOptOut = requireMainnetConfirmation === false;
969
+ const confirmed = opts.mainnetConfirmed === true;
970
+ if (gateEnabled && !confirmed) {
971
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__MAINNET_CONFIRMATION_REQUIRED, "Mainnet confirmation required — pass `mainnetConfirmed: true` " +
972
+ "in the executeAndConfirm options or set " +
973
+ "`requireMainnetConfirmation: false` on the SigilClientConfig. " +
974
+ "Opt-in: executeAndConfirm(ixs, { ..., mainnetConfirmed: true }). " +
975
+ "Opt-out: createSigilClient({ ..., requireMainnetConfirmation: false }). " +
976
+ "Docs: https://github.com/Sigil-Trade/sigil/blob/main/sdk/kit/MIGRATION.md", {
977
+ context: {
978
+ vault: vault.toString(),
979
+ network: "mainnet",
980
+ },
981
+ });
982
+ }
983
+ if (!gateEnabled &&
984
+ !explicitOptOut &&
985
+ opts.mainnetConfirmed === undefined) {
986
+ // §RP Batch K LOW-2 fix: use the structured logger (respects
987
+ // config.logger) instead of raw console.warn so consumers who
988
+ // installed a custom logger (pino, OpenTelemetry, etc.) capture
989
+ // the warning in their pipeline.
990
+ getSigilModuleLogger().warn("[Sigil] @usesigil/kit 0.16.x defaults `requireMainnetConfirmation` to false. " +
991
+ "v1.0 will flip the default to true; mainnet `executeAndConfirm` calls without " +
992
+ "`mainnetConfirmed: true` will throw SIGIL_ERROR__SDK__MAINNET_CONFIRMATION_REQUIRED. " +
993
+ "Adopt the v1.0 default early by setting " +
994
+ "`requireMainnetConfirmation: true` on SigilClientConfig and passing " +
995
+ "`mainnetConfirmed: true` per call, OR silence this warning by explicitly setting " +
996
+ "`requireMainnetConfirmation: false`. " +
997
+ "See: https://github.com/Sigil-Trade/sigil/blob/main/sdk/kit/MIGRATION.md");
998
+ }
999
+ }
649
1000
  // Sprint 2 B3: compose client-level and per-call hooks. Client hooks
650
1001
  // run first at every stage (onBeforeBuild → ... → onFinalize), then
651
1002
  // per-call hooks. composeHooks handles the conditional-merge when
@@ -876,6 +1227,13 @@ export class SigilClient {
876
1227
  blockhashCacheInstance;
877
1228
  altCacheInstance;
878
1229
  onErrorCallback;
1230
+ /**
1231
+ * AL2 mainnet confirmation flag, snapshotted at construction (Phase 9
1232
+ * Batch K §RP HIGH-2 fix). Captured by value so subsequent
1233
+ * `config.requireMainnetConfirmation = ...` mutations cannot silently
1234
+ * disable the gate post-construction.
1235
+ */
1236
+ requireMainnetConfirmation;
879
1237
  rpc;
880
1238
  vault;
881
1239
  agent;
@@ -916,10 +1274,17 @@ export class SigilClient {
916
1274
  throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, "SigilClientConfig.agent is required", { context: { field: "agent", expected: "TransactionSigner" } });
917
1275
  if (!config.network)
918
1276
  throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, "SigilClientConfig.network is required", { context: { field: "network", expected: "'devnet' | 'mainnet'" } });
1277
+ if (config.network !== "devnet" && config.network !== "mainnet") {
1278
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_CONFIG, `SigilClientConfig.network must be 'devnet' or 'mainnet'; got ${String(config.network)}. Phase 9 Batch K §RP MEDIUM-1 hardens this against JS / any-cast bypass.`, { context: { field: "network", expected: "'devnet' | 'mainnet'" } });
1279
+ }
919
1280
  this.rpc = config.rpc;
920
1281
  this.vault = config.vault;
921
1282
  this.agent = config.agent;
922
1283
  this.network = config.network;
1284
+ // §RP HIGH-2: snapshot AL2 flag at construction. Post-construction
1285
+ // mutation of config.requireMainnetConfirmation cannot disable the
1286
+ // gate without recreating the client.
1287
+ this.requireMainnetConfirmation = config.requireMainnetConfirmation;
923
1288
  this.blockhashCacheInstance = new BlockhashCache(config.blockhashTtlMs);
924
1289
  this.altCacheInstance = new AltCache();
925
1290
  this.onErrorCallback = config.onError;
@@ -1030,6 +1395,37 @@ export class SigilClient {
1030
1395
  * (transaction-executor.ts:236-265).
1031
1396
  */
1032
1397
  async executeAndConfirm(instructions, opts) {
1398
+ // §RP CRITICAL fix (Batch K): the legacy class path MUST mirror
1399
+ // the AL2 gate from `createSigilClient.executeAndConfirm` — otherwise
1400
+ // any consumer still on `SigilClient.create()` bypasses the gate on
1401
+ // mainnet. Reuses the snapshotted requireMainnetConfirmation field
1402
+ // captured at construction (§RP HIGH-2 fix).
1403
+ if (this.network === "mainnet") {
1404
+ const gateEnabled = this.requireMainnetConfirmation === true;
1405
+ const explicitOptOut = this.requireMainnetConfirmation === false;
1406
+ const confirmed = opts.mainnetConfirmed === true;
1407
+ if (gateEnabled && !confirmed) {
1408
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__MAINNET_CONFIRMATION_REQUIRED, "Mainnet confirmation required — pass `mainnetConfirmed: true` " +
1409
+ "in the executeAndConfirm options or set " +
1410
+ "`requireMainnetConfirmation: false` on the SigilClientConfig. " +
1411
+ "Opt-in: executeAndConfirm(ixs, { ..., mainnetConfirmed: true }). " +
1412
+ "Opt-out: SigilClient.create({ ..., requireMainnetConfirmation: false }). " +
1413
+ "Docs: https://github.com/Sigil-Trade/sigil/blob/main/sdk/kit/MIGRATION.md", {
1414
+ context: {
1415
+ vault: this.vault.toString(),
1416
+ network: "mainnet",
1417
+ },
1418
+ });
1419
+ }
1420
+ if (!gateEnabled &&
1421
+ !explicitOptOut &&
1422
+ opts.mainnetConfirmed === undefined) {
1423
+ getSigilModuleLogger().warn("[Sigil] @usesigil/kit 0.16.x defaults `requireMainnetConfirmation` to false. " +
1424
+ "v1.0 will flip the default to true; mainnet `executeAndConfirm` calls without " +
1425
+ "`mainnetConfirmed: true` will throw SIGIL_ERROR__SDK__MAINNET_CONFIRMATION_REQUIRED. " +
1426
+ "See: https://github.com/Sigil-Trade/sigil/blob/main/sdk/kit/MIGRATION.md");
1427
+ }
1428
+ }
1033
1429
  try {
1034
1430
  const result = await this.seal(instructions, opts);
1035
1431
  const encoded = await signAndEncode(this.agent, result.transaction);