@agirails/sdk 2.0.0 → 2.0.1-beta

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 (405) hide show
  1. package/README.md +108 -116
  2. package/dist/ACTPClient.d.ts +33 -456
  3. package/dist/ACTPClient.d.ts.map +1 -1
  4. package/dist/ACTPClient.js +93 -477
  5. package/dist/ACTPClient.js.map +1 -1
  6. package/dist/abi/EscrowVault.json +38 -106
  7. package/dist/builders/DeliveryProofBuilder.d.ts +1 -60
  8. package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
  9. package/dist/builders/DeliveryProofBuilder.js +5 -81
  10. package/dist/builders/DeliveryProofBuilder.js.map +1 -1
  11. package/dist/builders/QuoteBuilder.d.ts +0 -101
  12. package/dist/builders/QuoteBuilder.d.ts.map +1 -1
  13. package/dist/builders/QuoteBuilder.js +3 -120
  14. package/dist/builders/QuoteBuilder.js.map +1 -1
  15. package/dist/builders/index.d.ts +0 -4
  16. package/dist/builders/index.d.ts.map +1 -1
  17. package/dist/builders/index.js +0 -4
  18. package/dist/builders/index.js.map +1 -1
  19. package/dist/config/networks.d.ts +0 -28
  20. package/dist/config/networks.d.ts.map +1 -1
  21. package/dist/config/networks.js +12 -60
  22. package/dist/config/networks.js.map +1 -1
  23. package/dist/errors/index.d.ts +2 -165
  24. package/dist/errors/index.d.ts.map +1 -1
  25. package/dist/errors/index.js +2 -260
  26. package/dist/errors/index.js.map +1 -1
  27. package/dist/index.d.ts +13 -61
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +36 -141
  30. package/dist/index.js.map +1 -1
  31. package/dist/protocol/ACTPKernel.d.ts +2 -229
  32. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  33. package/dist/protocol/ACTPKernel.js +33 -367
  34. package/dist/protocol/ACTPKernel.js.map +1 -1
  35. package/dist/protocol/EASHelper.d.ts +2 -57
  36. package/dist/protocol/EASHelper.d.ts.map +1 -1
  37. package/dist/protocol/EASHelper.js +37 -230
  38. package/dist/protocol/EASHelper.js.map +1 -1
  39. package/dist/protocol/EscrowVault.d.ts +2 -93
  40. package/dist/protocol/EscrowVault.d.ts.map +1 -1
  41. package/dist/protocol/EscrowVault.js +33 -122
  42. package/dist/protocol/EscrowVault.js.map +1 -1
  43. package/dist/protocol/EventMonitor.d.ts +1 -45
  44. package/dist/protocol/EventMonitor.d.ts.map +1 -1
  45. package/dist/protocol/EventMonitor.js +8 -64
  46. package/dist/protocol/EventMonitor.js.map +1 -1
  47. package/dist/protocol/MessageSigner.d.ts +2 -116
  48. package/dist/protocol/MessageSigner.d.ts.map +1 -1
  49. package/dist/protocol/MessageSigner.js +9 -215
  50. package/dist/protocol/MessageSigner.js.map +1 -1
  51. package/dist/protocol/ProofGenerator.d.ts +0 -93
  52. package/dist/protocol/ProofGenerator.d.ts.map +1 -1
  53. package/dist/protocol/ProofGenerator.js +9 -194
  54. package/dist/protocol/ProofGenerator.js.map +1 -1
  55. package/dist/protocol/QuoteBuilder.d.ts +0 -8
  56. package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
  57. package/dist/protocol/QuoteBuilder.js +0 -8
  58. package/dist/protocol/QuoteBuilder.js.map +1 -1
  59. package/dist/types/eip712.d.ts +0 -34
  60. package/dist/types/eip712.d.ts.map +1 -1
  61. package/dist/types/eip712.js +5 -31
  62. package/dist/types/eip712.js.map +1 -1
  63. package/dist/types/escrow.d.ts +10 -17
  64. package/dist/types/escrow.d.ts.map +1 -1
  65. package/dist/types/index.d.ts +0 -5
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/index.js +0 -8
  68. package/dist/types/index.js.map +1 -1
  69. package/dist/types/message.d.ts +0 -32
  70. package/dist/types/message.d.ts.map +1 -1
  71. package/dist/types/message.js +0 -4
  72. package/dist/types/message.js.map +1 -1
  73. package/dist/types/state.d.ts +0 -28
  74. package/dist/types/state.d.ts.map +1 -1
  75. package/dist/types/state.js +6 -37
  76. package/dist/types/state.js.map +1 -1
  77. package/dist/types/transaction.d.ts +0 -17
  78. package/dist/types/transaction.d.ts.map +1 -1
  79. package/dist/utils/IPFSClient.d.ts +0 -113
  80. package/dist/utils/IPFSClient.d.ts.map +1 -1
  81. package/dist/utils/IPFSClient.js +7 -128
  82. package/dist/utils/IPFSClient.js.map +1 -1
  83. package/dist/utils/NonceManager.d.ts +1 -234
  84. package/dist/utils/NonceManager.d.ts.map +1 -1
  85. package/dist/utils/NonceManager.js +7 -372
  86. package/dist/utils/NonceManager.js.map +1 -1
  87. package/dist/utils/ReceivedNonceTracker.d.ts +0 -175
  88. package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
  89. package/dist/utils/ReceivedNonceTracker.js +5 -261
  90. package/dist/utils/ReceivedNonceTracker.js.map +1 -1
  91. package/dist/utils/canonicalJson.d.ts +0 -22
  92. package/dist/utils/canonicalJson.d.ts.map +1 -1
  93. package/dist/utils/canonicalJson.js +3 -26
  94. package/dist/utils/canonicalJson.js.map +1 -1
  95. package/dist/utils/computeTypeHash.d.ts +0 -14
  96. package/dist/utils/computeTypeHash.d.ts.map +1 -1
  97. package/dist/utils/computeTypeHash.js +2 -19
  98. package/dist/utils/computeTypeHash.js.map +1 -1
  99. package/dist/utils/validation.d.ts +0 -40
  100. package/dist/utils/validation.d.ts.map +1 -1
  101. package/dist/utils/validation.js +7 -184
  102. package/dist/utils/validation.js.map +1 -1
  103. package/package.json +37 -54
  104. package/src/ACTPClient.ts +178 -692
  105. package/src/__tests__/ProofGenerator.test.ts +124 -0
  106. package/src/__tests__/QuoteBuilder.test.ts +516 -0
  107. package/src/__tests__/StateMachine.test.ts +82 -0
  108. package/src/__tests__/builders/DeliveryProofBuilder.test.ts +581 -0
  109. package/src/__tests__/integration/ACTPClient.test.ts +263 -0
  110. package/src/__tests__/integration.test.ts +289 -0
  111. package/src/__tests__/protocol/EASHelper.test.ts +472 -0
  112. package/src/__tests__/protocol/EventMonitor.test.ts +382 -0
  113. package/src/__tests__/security/ACTPKernel.security.test.ts +1167 -0
  114. package/src/__tests__/security/EscrowVault.security.test.ts +570 -0
  115. package/src/__tests__/security/MessageSigner.security.test.ts +286 -0
  116. package/src/__tests__/security/NonceReplay.security.test.ts +501 -0
  117. package/src/__tests__/security/validation.security.test.ts +376 -0
  118. package/src/__tests__/utils/IPFSClient.test.ts +262 -0
  119. package/src/__tests__/utils/NonceManager.test.ts +205 -0
  120. package/src/__tests__/utils/canonicalJson.test.ts +153 -0
  121. package/src/abi/EscrowVault.json +38 -106
  122. package/src/builders/DeliveryProofBuilder.ts +2 -3
  123. package/src/config/networks.ts +9 -32
  124. package/src/errors/index.ts +1 -298
  125. package/src/index.ts +71 -207
  126. package/src/protocol/ACTPKernel.ts +23 -175
  127. package/src/protocol/EASHelper.ts +46 -230
  128. package/src/protocol/EscrowVault.ts +50 -68
  129. package/src/protocol/EventMonitor.ts +15 -44
  130. package/src/protocol/MessageSigner.ts +13 -193
  131. package/src/protocol/ProofGenerator.ts +4 -223
  132. package/src/types/escrow.ts +11 -12
  133. package/src/types/index.ts +1 -5
  134. package/src/types/state.ts +3 -12
  135. package/src/types/transaction.ts +1 -4
  136. package/src/utils/IPFSClient.ts +5 -122
  137. package/src/utils/NonceManager.ts +8 -305
  138. package/src/utils/ReceivedNonceTracker.ts +0 -170
  139. package/src/utils/validation.ts +0 -164
  140. package/LICENSE +0 -190
  141. package/bin/actp +0 -10
  142. package/dist/abi/AgentRegistry.json +0 -782
  143. package/dist/abi/IdentityRegistry.json +0 -316
  144. package/dist/adapters/BaseAdapter.d.ts +0 -231
  145. package/dist/adapters/BaseAdapter.d.ts.map +0 -1
  146. package/dist/adapters/BaseAdapter.js +0 -393
  147. package/dist/adapters/BaseAdapter.js.map +0 -1
  148. package/dist/adapters/BeginnerAdapter.d.ts +0 -152
  149. package/dist/adapters/BeginnerAdapter.d.ts.map +0 -1
  150. package/dist/adapters/BeginnerAdapter.js +0 -168
  151. package/dist/adapters/BeginnerAdapter.js.map +0 -1
  152. package/dist/adapters/IntermediateAdapter.d.ts +0 -211
  153. package/dist/adapters/IntermediateAdapter.d.ts.map +0 -1
  154. package/dist/adapters/IntermediateAdapter.js +0 -260
  155. package/dist/adapters/IntermediateAdapter.js.map +0 -1
  156. package/dist/adapters/index.d.ts +0 -15
  157. package/dist/adapters/index.d.ts.map +0 -1
  158. package/dist/adapters/index.js +0 -26
  159. package/dist/adapters/index.js.map +0 -1
  160. package/dist/cli/commands/balance.d.ts +0 -13
  161. package/dist/cli/commands/balance.d.ts.map +0 -1
  162. package/dist/cli/commands/balance.js +0 -89
  163. package/dist/cli/commands/balance.js.map +0 -1
  164. package/dist/cli/commands/batch.d.ts +0 -24
  165. package/dist/cli/commands/batch.d.ts.map +0 -1
  166. package/dist/cli/commands/batch.js +0 -424
  167. package/dist/cli/commands/batch.js.map +0 -1
  168. package/dist/cli/commands/config.d.ts +0 -13
  169. package/dist/cli/commands/config.d.ts.map +0 -1
  170. package/dist/cli/commands/config.js +0 -192
  171. package/dist/cli/commands/config.js.map +0 -1
  172. package/dist/cli/commands/init.d.ts +0 -19
  173. package/dist/cli/commands/init.d.ts.map +0 -1
  174. package/dist/cli/commands/init.js +0 -143
  175. package/dist/cli/commands/init.js.map +0 -1
  176. package/dist/cli/commands/mint.d.ts +0 -13
  177. package/dist/cli/commands/mint.d.ts.map +0 -1
  178. package/dist/cli/commands/mint.js +0 -91
  179. package/dist/cli/commands/mint.js.map +0 -1
  180. package/dist/cli/commands/pay.d.ts +0 -18
  181. package/dist/cli/commands/pay.d.ts.map +0 -1
  182. package/dist/cli/commands/pay.js +0 -87
  183. package/dist/cli/commands/pay.js.map +0 -1
  184. package/dist/cli/commands/simulate.d.ts +0 -32
  185. package/dist/cli/commands/simulate.d.ts.map +0 -1
  186. package/dist/cli/commands/simulate.js +0 -290
  187. package/dist/cli/commands/simulate.js.map +0 -1
  188. package/dist/cli/commands/time.d.ts +0 -29
  189. package/dist/cli/commands/time.d.ts.map +0 -1
  190. package/dist/cli/commands/time.js +0 -252
  191. package/dist/cli/commands/time.js.map +0 -1
  192. package/dist/cli/commands/tx.d.ts +0 -16
  193. package/dist/cli/commands/tx.d.ts.map +0 -1
  194. package/dist/cli/commands/tx.js +0 -379
  195. package/dist/cli/commands/tx.js.map +0 -1
  196. package/dist/cli/commands/watch.d.ts +0 -20
  197. package/dist/cli/commands/watch.d.ts.map +0 -1
  198. package/dist/cli/commands/watch.js +0 -160
  199. package/dist/cli/commands/watch.js.map +0 -1
  200. package/dist/cli/index.d.ts +0 -17
  201. package/dist/cli/index.d.ts.map +0 -1
  202. package/dist/cli/index.js +0 -104
  203. package/dist/cli/index.js.map +0 -1
  204. package/dist/cli/utils/client.d.ts +0 -70
  205. package/dist/cli/utils/client.d.ts.map +0 -1
  206. package/dist/cli/utils/client.js +0 -240
  207. package/dist/cli/utils/client.js.map +0 -1
  208. package/dist/cli/utils/config.d.ts +0 -91
  209. package/dist/cli/utils/config.d.ts.map +0 -1
  210. package/dist/cli/utils/config.js +0 -240
  211. package/dist/cli/utils/config.js.map +0 -1
  212. package/dist/cli/utils/output.d.ts +0 -174
  213. package/dist/cli/utils/output.d.ts.map +0 -1
  214. package/dist/cli/utils/output.js +0 -380
  215. package/dist/cli/utils/output.js.map +0 -1
  216. package/dist/level0/Provider.d.ts +0 -106
  217. package/dist/level0/Provider.d.ts.map +0 -1
  218. package/dist/level0/Provider.js +0 -10
  219. package/dist/level0/Provider.js.map +0 -1
  220. package/dist/level0/ServiceDirectory.d.ts +0 -74
  221. package/dist/level0/ServiceDirectory.d.ts.map +0 -1
  222. package/dist/level0/ServiceDirectory.js +0 -122
  223. package/dist/level0/ServiceDirectory.js.map +0 -1
  224. package/dist/level0/index.d.ts +0 -10
  225. package/dist/level0/index.d.ts.map +0 -1
  226. package/dist/level0/index.js +0 -15
  227. package/dist/level0/index.js.map +0 -1
  228. package/dist/level0/provide.d.ts +0 -51
  229. package/dist/level0/provide.d.ts.map +0 -1
  230. package/dist/level0/provide.js +0 -113
  231. package/dist/level0/provide.js.map +0 -1
  232. package/dist/level0/request.d.ts +0 -53
  233. package/dist/level0/request.d.ts.map +0 -1
  234. package/dist/level0/request.js +0 -462
  235. package/dist/level0/request.js.map +0 -1
  236. package/dist/level1/Agent.d.ts +0 -472
  237. package/dist/level1/Agent.d.ts.map +0 -1
  238. package/dist/level1/Agent.js +0 -1091
  239. package/dist/level1/Agent.js.map +0 -1
  240. package/dist/level1/index.d.ts +0 -10
  241. package/dist/level1/index.d.ts.map +0 -1
  242. package/dist/level1/index.js +0 -30
  243. package/dist/level1/index.js.map +0 -1
  244. package/dist/level1/pricing/PriceCalculator.d.ts +0 -62
  245. package/dist/level1/pricing/PriceCalculator.d.ts.map +0 -1
  246. package/dist/level1/pricing/PriceCalculator.js +0 -237
  247. package/dist/level1/pricing/PriceCalculator.js.map +0 -1
  248. package/dist/level1/pricing/PricingStrategy.d.ts +0 -179
  249. package/dist/level1/pricing/PricingStrategy.d.ts.map +0 -1
  250. package/dist/level1/pricing/PricingStrategy.js +0 -11
  251. package/dist/level1/pricing/PricingStrategy.js.map +0 -1
  252. package/dist/level1/types/Job.d.ts +0 -166
  253. package/dist/level1/types/Job.d.ts.map +0 -1
  254. package/dist/level1/types/Job.js +0 -11
  255. package/dist/level1/types/Job.js.map +0 -1
  256. package/dist/level1/types/Options.d.ts +0 -258
  257. package/dist/level1/types/Options.d.ts.map +0 -1
  258. package/dist/level1/types/Options.js +0 -8
  259. package/dist/level1/types/Options.js.map +0 -1
  260. package/dist/level1/types/index.d.ts +0 -8
  261. package/dist/level1/types/index.d.ts.map +0 -1
  262. package/dist/level1/types/index.js +0 -8
  263. package/dist/level1/types/index.js.map +0 -1
  264. package/dist/protocol/AgentRegistry.d.ts +0 -177
  265. package/dist/protocol/AgentRegistry.d.ts.map +0 -1
  266. package/dist/protocol/AgentRegistry.js +0 -449
  267. package/dist/protocol/AgentRegistry.js.map +0 -1
  268. package/dist/protocol/DIDManager.d.ts +0 -289
  269. package/dist/protocol/DIDManager.d.ts.map +0 -1
  270. package/dist/protocol/DIDManager.js +0 -481
  271. package/dist/protocol/DIDManager.js.map +0 -1
  272. package/dist/protocol/DIDResolver.d.ts +0 -236
  273. package/dist/protocol/DIDResolver.d.ts.map +0 -1
  274. package/dist/protocol/DIDResolver.js +0 -495
  275. package/dist/protocol/DIDResolver.js.map +0 -1
  276. package/dist/runtime/BlockchainRuntime.d.ts +0 -360
  277. package/dist/runtime/BlockchainRuntime.d.ts.map +0 -1
  278. package/dist/runtime/BlockchainRuntime.js +0 -767
  279. package/dist/runtime/BlockchainRuntime.js.map +0 -1
  280. package/dist/runtime/IACTPRuntime.d.ts +0 -271
  281. package/dist/runtime/IACTPRuntime.d.ts.map +0 -1
  282. package/dist/runtime/IACTPRuntime.js +0 -15
  283. package/dist/runtime/IACTPRuntime.js.map +0 -1
  284. package/dist/runtime/MockRuntime.d.ts +0 -445
  285. package/dist/runtime/MockRuntime.d.ts.map +0 -1
  286. package/dist/runtime/MockRuntime.js +0 -1065
  287. package/dist/runtime/MockRuntime.js.map +0 -1
  288. package/dist/runtime/MockStateManager.d.ts +0 -233
  289. package/dist/runtime/MockStateManager.d.ts.map +0 -1
  290. package/dist/runtime/MockStateManager.js +0 -533
  291. package/dist/runtime/MockStateManager.js.map +0 -1
  292. package/dist/runtime/index.d.ts +0 -14
  293. package/dist/runtime/index.d.ts.map +0 -1
  294. package/dist/runtime/index.js +0 -42
  295. package/dist/runtime/index.js.map +0 -1
  296. package/dist/runtime/types/MockState.d.ts +0 -167
  297. package/dist/runtime/types/MockState.d.ts.map +0 -1
  298. package/dist/runtime/types/MockState.js +0 -43
  299. package/dist/runtime/types/MockState.js.map +0 -1
  300. package/dist/types/agent.d.ts +0 -76
  301. package/dist/types/agent.d.ts.map +0 -1
  302. package/dist/types/agent.js +0 -8
  303. package/dist/types/agent.js.map +0 -1
  304. package/dist/types/did.d.ts +0 -192
  305. package/dist/types/did.d.ts.map +0 -1
  306. package/dist/types/did.js +0 -38
  307. package/dist/types/did.js.map +0 -1
  308. package/dist/utils/ErrorRecoveryGuide.d.ts +0 -125
  309. package/dist/utils/ErrorRecoveryGuide.d.ts.map +0 -1
  310. package/dist/utils/ErrorRecoveryGuide.js +0 -579
  311. package/dist/utils/ErrorRecoveryGuide.js.map +0 -1
  312. package/dist/utils/Helpers.d.ts +0 -453
  313. package/dist/utils/Helpers.d.ts.map +0 -1
  314. package/dist/utils/Helpers.js +0 -623
  315. package/dist/utils/Helpers.js.map +0 -1
  316. package/dist/utils/Logger.d.ts +0 -195
  317. package/dist/utils/Logger.d.ts.map +0 -1
  318. package/dist/utils/Logger.js +0 -382
  319. package/dist/utils/Logger.js.map +0 -1
  320. package/dist/utils/RateLimiter.d.ts +0 -253
  321. package/dist/utils/RateLimiter.d.ts.map +0 -1
  322. package/dist/utils/RateLimiter.js +0 -424
  323. package/dist/utils/RateLimiter.js.map +0 -1
  324. package/dist/utils/SDKLifecycle.d.ts +0 -156
  325. package/dist/utils/SDKLifecycle.d.ts.map +0 -1
  326. package/dist/utils/SDKLifecycle.js +0 -347
  327. package/dist/utils/SDKLifecycle.js.map +0 -1
  328. package/dist/utils/SecureNonce.d.ts +0 -57
  329. package/dist/utils/SecureNonce.d.ts.map +0 -1
  330. package/dist/utils/SecureNonce.js +0 -80
  331. package/dist/utils/SecureNonce.js.map +0 -1
  332. package/dist/utils/Semaphore.d.ts +0 -123
  333. package/dist/utils/Semaphore.d.ts.map +0 -1
  334. package/dist/utils/Semaphore.js +0 -247
  335. package/dist/utils/Semaphore.js.map +0 -1
  336. package/dist/utils/UsedAttestationTracker.d.ts +0 -167
  337. package/dist/utils/UsedAttestationTracker.d.ts.map +0 -1
  338. package/dist/utils/UsedAttestationTracker.js +0 -309
  339. package/dist/utils/UsedAttestationTracker.js.map +0 -1
  340. package/dist/utils/fsSafe.d.ts +0 -14
  341. package/dist/utils/fsSafe.d.ts.map +0 -1
  342. package/dist/utils/fsSafe.js +0 -89
  343. package/dist/utils/fsSafe.js.map +0 -1
  344. package/dist/utils/index.d.ts +0 -15
  345. package/dist/utils/index.d.ts.map +0 -1
  346. package/dist/utils/index.js +0 -51
  347. package/dist/utils/index.js.map +0 -1
  348. package/dist/utils/security.d.ts +0 -147
  349. package/dist/utils/security.d.ts.map +0 -1
  350. package/dist/utils/security.js +0 -391
  351. package/dist/utils/security.js.map +0 -1
  352. package/src/abi/AgentRegistry.json +0 -782
  353. package/src/abi/IdentityRegistry.json +0 -316
  354. package/src/adapters/BaseAdapter.ts +0 -473
  355. package/src/adapters/BeginnerAdapter.ts +0 -232
  356. package/src/adapters/IntermediateAdapter.ts +0 -316
  357. package/src/adapters/index.ts +0 -25
  358. package/src/cli/commands/balance.ts +0 -110
  359. package/src/cli/commands/batch.ts +0 -487
  360. package/src/cli/commands/config.ts +0 -231
  361. package/src/cli/commands/init.ts +0 -161
  362. package/src/cli/commands/mint.ts +0 -116
  363. package/src/cli/commands/pay.ts +0 -113
  364. package/src/cli/commands/simulate.ts +0 -345
  365. package/src/cli/commands/time.ts +0 -303
  366. package/src/cli/commands/tx.ts +0 -448
  367. package/src/cli/commands/watch.ts +0 -211
  368. package/src/cli/index.ts +0 -116
  369. package/src/cli/utils/client.ts +0 -249
  370. package/src/cli/utils/config.ts +0 -282
  371. package/src/cli/utils/output.ts +0 -465
  372. package/src/level0/Provider.ts +0 -117
  373. package/src/level0/ServiceDirectory.ts +0 -131
  374. package/src/level0/index.ts +0 -10
  375. package/src/level0/provide.ts +0 -131
  376. package/src/level0/request.ts +0 -494
  377. package/src/level1/Agent.ts +0 -1432
  378. package/src/level1/index.ts +0 -10
  379. package/src/level1/pricing/PriceCalculator.ts +0 -255
  380. package/src/level1/pricing/PricingStrategy.ts +0 -198
  381. package/src/level1/types/Job.ts +0 -179
  382. package/src/level1/types/Options.ts +0 -291
  383. package/src/level1/types/index.ts +0 -8
  384. package/src/protocol/AgentRegistry.ts +0 -559
  385. package/src/protocol/DIDManager.ts +0 -629
  386. package/src/protocol/DIDResolver.ts +0 -554
  387. package/src/runtime/BlockchainRuntime.ts +0 -993
  388. package/src/runtime/IACTPRuntime.ts +0 -284
  389. package/src/runtime/MockRuntime.ts +0 -1244
  390. package/src/runtime/MockStateManager.ts +0 -576
  391. package/src/runtime/index.ts +0 -25
  392. package/src/runtime/types/MockState.ts +0 -227
  393. package/src/types/agent.ts +0 -79
  394. package/src/types/did.ts +0 -223
  395. package/src/utils/ErrorRecoveryGuide.ts +0 -675
  396. package/src/utils/Helpers.ts +0 -688
  397. package/src/utils/Logger.ts +0 -484
  398. package/src/utils/RateLimiter.ts +0 -534
  399. package/src/utils/SDKLifecycle.ts +0 -416
  400. package/src/utils/SecureNonce.ts +0 -78
  401. package/src/utils/Semaphore.ts +0 -276
  402. package/src/utils/UsedAttestationTracker.ts +0 -387
  403. package/src/utils/fsSafe.ts +0 -75
  404. package/src/utils/index.ts +0 -80
  405. package/src/utils/security.ts +0 -418
@@ -0,0 +1,286 @@
1
+ /**
2
+ * MessageSigner Security Test Suite
3
+ *
4
+ * CRITICAL: EIP-712 signature security is essential for message integrity
5
+ * Coverage Target: 100% (security-critical code)
6
+ *
7
+ * Security Test Categories:
8
+ * 1. Domain Initialization Security (2 tests)
9
+ * 2. Signature Tampering Detection (3 tests)
10
+ * 3. Message Integrity Protection (3 tests)
11
+ * 4. DID/Address Validation (2 tests)
12
+ *
13
+ * Attack Vectors Tested:
14
+ * - Signature forgery
15
+ * - Message payload tampering
16
+ * - Cross-contract signature replay
17
+ * - DID injection attacks
18
+ *
19
+ * References:
20
+ * - MessageSigner.ts implementation
21
+ * - EIP-712 specification
22
+ * - V4 vulnerability (nonce replay)
23
+ */
24
+
25
+ import { Wallet } from 'ethers';
26
+ import { MessageSigner } from '../../protocol/MessageSigner';
27
+ import { ACTPMessage } from '../../types';
28
+
29
+ // Test signers
30
+ const testPrivateKey1 = '0x' + '1'.repeat(64);
31
+ const testPrivateKey2 = '0x' + '2'.repeat(64);
32
+ const signer1 = new Wallet(testPrivateKey1);
33
+ const signer2 = new Wallet(testPrivateKey2);
34
+
35
+ const TEST_KERNEL_ADDRESS = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
36
+
37
+ describe('MessageSigner - Domain Initialization Security', () => {
38
+ it('should prevent signing without domain initialization', async () => {
39
+ const messageSigner = new MessageSigner(signer1);
40
+
41
+ const message: ACTPMessage = {
42
+ type: 'test.message',
43
+ version: '1.0.0',
44
+ from: `did:ethr:${signer1.address}`,
45
+ to: `did:ethr:${signer2.address}`,
46
+ timestamp: Math.floor(Date.now() / 1000),
47
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
48
+ data: { test: 'value' }
49
+ };
50
+
51
+ // Should throw when domain not initialized
52
+ await expect(messageSigner.signMessage(message)).rejects.toThrow('Domain not initialized');
53
+ });
54
+
55
+ it('should initialize domain with correct chainId', async () => {
56
+ const messageSigner = new MessageSigner(signer1);
57
+
58
+ // Initialize with explicit chainId
59
+ await messageSigner.initDomain(TEST_KERNEL_ADDRESS, 84532);
60
+
61
+ // Should not throw after initialization
62
+ const message: ACTPMessage = {
63
+ type: 'test.message',
64
+ version: '1.0.0',
65
+ from: `did:ethr:${signer1.address}`,
66
+ to: `did:ethr:${signer2.address}`,
67
+ timestamp: Math.floor(Date.now() / 1000),
68
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
69
+ data: { test: 'value' }
70
+ };
71
+
72
+ const signature = await messageSigner.signMessage(message);
73
+ expect(signature).toMatch(/^0x[a-fA-F0-9]{130}$/);
74
+ });
75
+ });
76
+
77
+ describe('MessageSigner - Signature Tampering Detection', () => {
78
+ let messageSigner: MessageSigner;
79
+
80
+ beforeAll(async () => {
81
+ messageSigner = new MessageSigner(signer1);
82
+ await messageSigner.initDomain(TEST_KERNEL_ADDRESS, 84532);
83
+ });
84
+
85
+ it('should detect tampered message payload', async () => {
86
+ const originalMessage: ACTPMessage = {
87
+ type: 'test.message',
88
+ version: '1.0.0',
89
+ from: `did:ethr:${signer1.address}`,
90
+ to: `did:ethr:${signer2.address}`,
91
+ timestamp: Math.floor(Date.now() / 1000),
92
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
93
+ data: { amount: '100', action: 'transfer' }
94
+ };
95
+
96
+ const signature = await messageSigner.signMessage(originalMessage);
97
+
98
+ // Tamper with the message payload
99
+ const tamperedMessage: ACTPMessage = {
100
+ ...originalMessage,
101
+ data: { amount: '1000000', action: 'transfer' } // Changed amount
102
+ };
103
+
104
+ // Verification should fail with tampered message
105
+ const isValid = await messageSigner.verifySignature(tamperedMessage, signature);
106
+ expect(isValid).toBe(false);
107
+ });
108
+
109
+ it('should detect invalid signature format', async () => {
110
+ const message: ACTPMessage = {
111
+ type: 'test.message',
112
+ version: '1.0.0',
113
+ from: `did:ethr:${signer1.address}`,
114
+ to: `did:ethr:${signer2.address}`,
115
+ timestamp: Math.floor(Date.now() / 1000),
116
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
117
+ data: { test: 'value' }
118
+ };
119
+
120
+ // Invalid signature (wrong length, wrong format)
121
+ const invalidSignature = '0x' + '9'.repeat(130);
122
+
123
+ // Invalid signature format will throw cryptographic error
124
+ await expect(messageSigner.verifySignature(message, invalidSignature))
125
+ .rejects.toThrow();
126
+ });
127
+
128
+ it('should throw SignatureVerificationError on invalid signature', async () => {
129
+ const message: ACTPMessage = {
130
+ type: 'test.message',
131
+ version: '1.0.0',
132
+ from: `did:ethr:${signer1.address}`,
133
+ to: `did:ethr:${signer2.address}`,
134
+ timestamp: Math.floor(Date.now() / 1000),
135
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
136
+ data: { test: 'value' }
137
+ };
138
+
139
+ const invalidSignature = '0x' + '0'.repeat(130);
140
+
141
+ // Should throw error (either cryptographic error or SignatureVerificationError)
142
+ await expect(messageSigner.verifySignatureOrThrow(message, invalidSignature))
143
+ .rejects.toThrow();
144
+ });
145
+ });
146
+
147
+ describe('MessageSigner - Message Integrity Protection', () => {
148
+ let messageSigner: MessageSigner;
149
+
150
+ beforeAll(async () => {
151
+ messageSigner = new MessageSigner(signer1);
152
+ await messageSigner.initDomain(TEST_KERNEL_ADDRESS, 84532);
153
+ });
154
+
155
+ it('should verify valid signature', async () => {
156
+ const message: ACTPMessage = {
157
+ type: 'test.message',
158
+ version: '1.0.0',
159
+ from: `did:ethr:${signer1.address}`,
160
+ to: `did:ethr:${signer2.address}`,
161
+ timestamp: Math.floor(Date.now() / 1000),
162
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
163
+ data: { test: 'value' }
164
+ };
165
+
166
+ const signature = await messageSigner.signMessage(message);
167
+ const isValid = await messageSigner.verifySignature(message, signature);
168
+
169
+ expect(isValid).toBe(true);
170
+ });
171
+
172
+ it('should detect signature from wrong signer', async () => {
173
+ const message: ACTPMessage = {
174
+ type: 'test.message',
175
+ version: '1.0.0',
176
+ from: `did:ethr:${signer1.address}`, // Claims to be from signer1
177
+ to: `did:ethr:${signer2.address}`,
178
+ timestamp: Math.floor(Date.now() / 1000),
179
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
180
+ data: { test: 'value' }
181
+ };
182
+
183
+ // But sign with signer2
184
+ const maliciousSigner = new MessageSigner(signer2);
185
+ await maliciousSigner.initDomain(TEST_KERNEL_ADDRESS, 84532);
186
+ const maliciousSignature = await maliciousSigner.signMessage(message);
187
+
188
+ // Verification should fail (signature doesn't match claimed 'from' address)
189
+ const isValid = await messageSigner.verifySignature(message, maliciousSignature);
190
+ expect(isValid).toBe(false);
191
+ });
192
+
193
+ it('should use canonical JSON encoding for payload', async () => {
194
+ // Test that different JSON key ordering produces same signature
195
+ const message1: ACTPMessage = {
196
+ type: 'test.message',
197
+ version: '1.0.0',
198
+ from: `did:ethr:${signer1.address}`,
199
+ to: `did:ethr:${signer2.address}`,
200
+ timestamp: 1234567890,
201
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
202
+ data: { b: 'value2', a: 'value1' } // Keys in different order
203
+ };
204
+
205
+ const message2: ACTPMessage = {
206
+ type: 'test.message',
207
+ version: '1.0.0',
208
+ from: `did:ethr:${signer1.address}`,
209
+ to: `did:ethr:${signer2.address}`,
210
+ timestamp: 1234567890,
211
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
212
+ data: { a: 'value1', b: 'value2' } // Same data, keys sorted
213
+ };
214
+
215
+ const signature1 = await messageSigner.signMessage(message1);
216
+ const signature2 = await messageSigner.signMessage(message2);
217
+
218
+ // Signatures should be identical due to canonical JSON encoding
219
+ expect(signature1).toBe(signature2);
220
+ });
221
+ });
222
+
223
+ describe('MessageSigner - DID/Address Validation', () => {
224
+ it('should convert valid Ethereum address to DID', () => {
225
+ const messageSigner = new MessageSigner(signer1);
226
+ const address = '0x742d35cc6634c0532925a3b844bc9e7595f0beb0';
227
+
228
+ const did = messageSigner.addressToDID(address);
229
+
230
+ expect(did).toBe(`did:ethr:${address}`);
231
+ });
232
+
233
+ it('should reject invalid Ethereum address in addressToDID', () => {
234
+ const messageSigner = new MessageSigner(signer1);
235
+ const invalidAddress = 'not-an-address';
236
+
237
+ expect(() => messageSigner.addressToDID(invalidAddress)).toThrow('Invalid Ethereum address');
238
+ });
239
+
240
+ it('should handle standard DID format', async () => {
241
+ const messageSigner = new MessageSigner(signer1);
242
+ await messageSigner.initDomain(TEST_KERNEL_ADDRESS, 84532);
243
+
244
+ const message: ACTPMessage = {
245
+ type: 'test.message',
246
+ version: '1.0.0',
247
+ from: `did:ethr:${signer1.address}`,
248
+ to: `did:ethr:${signer2.address}`,
249
+ timestamp: Math.floor(Date.now() / 1000),
250
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
251
+ data: { test: 'value' }
252
+ };
253
+
254
+ const signature = await messageSigner.signMessage(message);
255
+ const isValid = await messageSigner.verifySignature(message, signature);
256
+
257
+ expect(isValid).toBe(true);
258
+ });
259
+
260
+ it('should verify cross-contract signature isolation', async () => {
261
+ // Sign message with domain 1 (kernel address 1)
262
+ const messageSigner1 = new MessageSigner(signer1);
263
+ await messageSigner1.initDomain('0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 84532);
264
+
265
+ const message: ACTPMessage = {
266
+ type: 'test.message',
267
+ version: '1.0.0',
268
+ from: `did:ethr:${signer1.address}`,
269
+ to: `did:ethr:${signer2.address}`,
270
+ timestamp: Math.floor(Date.now() / 1000),
271
+ nonce: '0x' + '0'.repeat(63) + '1', // bytes32
272
+ data: { test: 'value' }
273
+ };
274
+
275
+ const signature = await messageSigner1.signMessage(message);
276
+
277
+ // Try to verify with domain 2 (different kernel address)
278
+ const messageSigner2 = new MessageSigner(signer1);
279
+ await messageSigner2.initDomain('0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', 84532);
280
+
281
+ const isValid = await messageSigner2.verifySignature(message, signature);
282
+
283
+ // Should fail due to domain mismatch (prevents cross-contract replay)
284
+ expect(isValid).toBe(false);
285
+ });
286
+ });