@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
@@ -1,309 +0,0 @@
1
- "use strict";
2
- /**
3
- * UsedAttestationTracker - Prevents EAS Attestation Replay Attacks (C-1)
4
- *
5
- * Tracks which attestation UIDs have been used for which transaction IDs.
6
- * This prevents a malicious provider from reusing an attestation from
7
- * Transaction A to settle Transaction B.
8
- *
9
- * SECURITY: ACTPKernel V1 contract accepts any attestationUID without validation.
10
- * This tracker provides SDK-side protection until contract is upgraded.
11
- *
12
- * @module utils/UsedAttestationTracker
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.createUsedAttestationTracker = exports.FileBasedUsedAttestationTracker = exports.InMemoryUsedAttestationTracker = void 0;
16
- const fsSafe_1 = require("./fsSafe");
17
- /**
18
- * In-Memory Used Attestation Tracker
19
- *
20
- * SECURITY FIX (C-1): Prevents attestation replay attacks by tracking
21
- * which attestation UIDs have been used for which transactions.
22
- *
23
- * SECURITY FIX (NEW-H-2): LRU-style cache with max size to prevent DoS
24
- *
25
- * WARNING: In-memory only. For production:
26
- * - Use persistent storage (Redis, PostgreSQL, etc.)
27
- * - Implement recovery from blockchain events
28
- */
29
- class InMemoryUsedAttestationTracker {
30
- /**
31
- * Create in-memory tracker with optional max size
32
- * @param maxSize - Maximum entries to store (default: 100,000)
33
- */
34
- constructor(maxSize = 100000) {
35
- // Map: attestationUID -> txId
36
- this.usedAttestations = new Map();
37
- if (maxSize <= 0) {
38
- throw new Error('maxSize must be positive');
39
- }
40
- this.maxSize = maxSize;
41
- }
42
- /**
43
- * Record that an attestation was used for a transaction
44
- * @param attestationUID - EAS attestation UID (bytes32)
45
- * @param txId - Transaction ID (bytes32)
46
- * @returns true if recorded, false if already used for different transaction
47
- *
48
- * SECURITY FIX (NEW-H-2): LRU eviction when max size reached
49
- * SECURITY FIX (HIGH-1): Now async for interface consistency
50
- */
51
- async recordUsage(attestationUID, txId) {
52
- return this.recordUsageSync(attestationUID, txId);
53
- }
54
- /**
55
- * Synchronous version of recordUsage (for backward compatibility)
56
- * @param attestationUID - EAS attestation UID (bytes32)
57
- * @param txId - Transaction ID (bytes32)
58
- * @returns true if recorded, false if already used for different transaction
59
- */
60
- recordUsageSync(attestationUID, txId) {
61
- const normalizedUID = attestationUID.toLowerCase();
62
- const normalizedTxId = txId.toLowerCase();
63
- const existingTxId = this.usedAttestations.get(normalizedUID);
64
- // If attestation was already used for a different transaction, reject
65
- if (existingTxId && existingTxId !== normalizedTxId) {
66
- return false;
67
- }
68
- // SECURITY FIX (NEW-H-2): Enforce max size limit with true LRU behavior
69
- if (this.usedAttestations.size >= this.maxSize && !existingTxId) {
70
- // Remove oldest entry (first entry in Map)
71
- const firstKey = this.usedAttestations.keys().next().value;
72
- if (firstKey) {
73
- this.usedAttestations.delete(firstKey);
74
- }
75
- }
76
- else if (existingTxId) {
77
- // SECURITY FIX (M-3): True LRU - delete and re-add to move to end
78
- this.usedAttestations.delete(normalizedUID);
79
- }
80
- // Record the usage (at end for LRU)
81
- this.usedAttestations.set(normalizedUID, normalizedTxId);
82
- return true;
83
- }
84
- /**
85
- * Check if attestation has been used
86
- * @param attestationUID - EAS attestation UID (bytes32)
87
- * @returns Transaction ID if used, null if not used
88
- *
89
- * SECURITY FIX (MEDIUM-4): Updates access order for true LRU behavior
90
- * Accessed items are moved to end of Map (most recently used)
91
- */
92
- getUsageForAttestation(attestationUID) {
93
- const normalizedUID = attestationUID.toLowerCase();
94
- const txId = this.usedAttestations.get(normalizedUID);
95
- // SECURITY FIX (MEDIUM-4): True LRU - move accessed item to end
96
- // Without this, eviction uses insertion order, not access order
97
- if (txId !== undefined) {
98
- this.usedAttestations.delete(normalizedUID);
99
- this.usedAttestations.set(normalizedUID, txId);
100
- }
101
- return txId || null;
102
- }
103
- /**
104
- * Check if attestation is valid for transaction
105
- * @param attestationUID - EAS attestation UID
106
- * @param txId - Transaction ID
107
- * @returns true if attestation is unused or already used for this txId
108
- *
109
- * SECURITY FIX (MEDIUM-4): Updates access order for true LRU behavior
110
- */
111
- isValidForTransaction(attestationUID, txId) {
112
- const normalizedUID = attestationUID.toLowerCase();
113
- const normalizedTxId = txId.toLowerCase();
114
- const existingTxId = this.usedAttestations.get(normalizedUID);
115
- // SECURITY FIX (MEDIUM-4): True LRU - move accessed item to end
116
- if (existingTxId !== undefined) {
117
- this.usedAttestations.delete(normalizedUID);
118
- this.usedAttestations.set(normalizedUID, existingTxId);
119
- }
120
- // Valid if: not used OR used for same transaction
121
- return !existingTxId || existingTxId === normalizedTxId;
122
- }
123
- /**
124
- * Clear all tracked attestations
125
- */
126
- clear() {
127
- this.usedAttestations.clear();
128
- }
129
- /**
130
- * Get all tracked attestations (for debugging/persistence)
131
- */
132
- getAllUsages() {
133
- return Object.fromEntries(this.usedAttestations.entries());
134
- }
135
- /**
136
- * Get count of tracked attestations
137
- */
138
- getCount() {
139
- return this.usedAttestations.size;
140
- }
141
- /**
142
- * Cleanup old entries based on timestamp (optional)
143
- *
144
- * SECURITY FIX (NEW-H-2): Manual cleanup for old entries
145
- * Note: This requires external timestamp tracking. For automatic cleanup,
146
- * use FileBasedUsedAttestationTracker with periodic cleanup.
147
- *
148
- * @param maxAgeHours - Remove entries older than this many hours
149
- */
150
- cleanupOldEntries(maxAgeHours) {
151
- // In-memory tracker doesn't track timestamps
152
- // This is a placeholder for future enhancement
153
- console.warn('cleanupOldEntries not implemented for InMemoryUsedAttestationTracker. ' +
154
- 'Consider using FileBasedUsedAttestationTracker for time-based cleanup.');
155
- return 0;
156
- }
157
- }
158
- exports.InMemoryUsedAttestationTracker = InMemoryUsedAttestationTracker;
159
- /**
160
- * File-based Used Attestation Tracker for persistence
161
- *
162
- * SECURITY FIX (C-1): Persistent storage for attestation tracking
163
- * SECURITY FIX (NEW-H-4): File locking to prevent concurrent write corruption
164
- *
165
- * Survives process restarts.
166
- */
167
- class FileBasedUsedAttestationTracker {
168
- constructor(stateDirectory) {
169
- this.inMemory = new InMemoryUsedAttestationTracker();
170
- this.fs = require('fs');
171
- this.path = require('path');
172
- // SECURITY FIX (NEW-H-4): File locking to prevent race conditions
173
- this.lockfile = require('proper-lockfile');
174
- // Ensure directory exists
175
- const actpDir = this.path.join(stateDirectory, '.actp');
176
- (0, fsSafe_1.ensureSafeDir)(actpDir, 0o755);
177
- this.filePath = this.path.join(actpDir, 'used-attestations.json');
178
- // Load existing data
179
- this.loadFromFile();
180
- }
181
- loadFromFile() {
182
- if (!this.fs.existsSync(this.filePath))
183
- return;
184
- // SECURITY: Refuse to read from symlinked tracker files
185
- (0, fsSafe_1.assertSafeFileForRead)(this.filePath);
186
- // Basic size limit to avoid memory DoS on parse
187
- const MAX_TRACKER_FILE_SIZE = 10 * 1024 * 1024; // 10MB
188
- const st = this.fs.statSync(this.filePath);
189
- if (st.size > MAX_TRACKER_FILE_SIZE) {
190
- throw new Error(`used-attestations.json exceeds ${MAX_TRACKER_FILE_SIZE / 1024 / 1024}MB limit: ${this.filePath}`);
191
- }
192
- try {
193
- const data = JSON.parse(this.fs.readFileSync(this.filePath, 'utf-8'));
194
- for (const [uid, txId] of Object.entries(data)) {
195
- this.inMemory.recordUsageSync(uid, txId);
196
- }
197
- }
198
- catch (e) {
199
- // Fail closed: losing replay-protection state is a security issue.
200
- throw new Error(`Failed to parse used-attestations.json (replay protection would be disabled). ` +
201
- `Fix/delete the file: ${this.filePath}. Error: ${e?.message || String(e)}`);
202
- }
203
- }
204
- /**
205
- * Save data to file with file locking
206
- *
207
- * SECURITY FIX (NEW-H-4): File locking prevents concurrent write corruption
208
- * SECURITY FIX (NEW-HIGH-1): Create file before locking if it doesn't exist
209
- */
210
- async saveToFile() {
211
- const data = this.inMemory.getAllUsages();
212
- const tempPath = `${this.filePath}.tmp`;
213
- // SECURITY FIX (NEW-HIGH-1): Ensure file exists before locking
214
- // proper-lockfile.lock() fails on non-existent files
215
- (0, fsSafe_1.ensureSafeFile)(this.filePath, '{}', 0o644);
216
- // SECURITY FIX (NEW-H-4): Acquire file lock before writing
217
- let release = null;
218
- try {
219
- release = await this.lockfile.lock(this.filePath, {
220
- stale: 10000, // Lock expires after 10 seconds if process crashes
221
- retries: {
222
- retries: 5,
223
- minTimeout: 100,
224
- maxTimeout: 500
225
- }
226
- });
227
- // Atomic write: temp file + rename
228
- if (this.fs.existsSync(tempPath)) {
229
- this.fs.unlinkSync(tempPath);
230
- }
231
- this.fs.writeFileSync(tempPath, JSON.stringify(data, null, 2), {
232
- encoding: 'utf-8',
233
- mode: 0o644,
234
- flag: 'wx'
235
- });
236
- this.fs.renameSync(tempPath, this.filePath);
237
- }
238
- catch (error) {
239
- // Clean up temp file on error
240
- if (this.fs.existsSync(tempPath)) {
241
- try {
242
- this.fs.unlinkSync(tempPath);
243
- }
244
- catch {
245
- // Ignore cleanup errors
246
- }
247
- }
248
- throw error;
249
- }
250
- finally {
251
- // Always release lock if acquired
252
- if (release) {
253
- await release();
254
- }
255
- }
256
- }
257
- /**
258
- * Record attestation usage with guaranteed persistence
259
- *
260
- * SECURITY FIX (HIGH-1): Now properly awaits persistence to prevent data loss
261
- */
262
- async recordUsage(attestationUID, txId) {
263
- const result = this.inMemory.recordUsageSync(attestationUID, txId);
264
- if (result) {
265
- // SECURITY FIX (HIGH-1): Await persistence to ensure data is saved
266
- await this.saveToFile();
267
- }
268
- return result;
269
- }
270
- /**
271
- * Fire-and-forget version for backward compatibility
272
- * WARNING: May lose data if process crashes before save completes
273
- */
274
- recordUsageSync(attestationUID, txId) {
275
- const result = this.inMemory.recordUsageSync(attestationUID, txId);
276
- if (result) {
277
- this.saveToFile().catch((err) => {
278
- console.error('Failed to save attestation tracker state:', err);
279
- });
280
- }
281
- return result;
282
- }
283
- getUsageForAttestation(attestationUID) {
284
- return this.inMemory.getUsageForAttestation(attestationUID);
285
- }
286
- isValidForTransaction(attestationUID, txId) {
287
- return this.inMemory.isValidForTransaction(attestationUID, txId);
288
- }
289
- clear() {
290
- this.inMemory.clear();
291
- if (this.fs.existsSync(this.filePath)) {
292
- this.fs.unlinkSync(this.filePath);
293
- }
294
- }
295
- }
296
- exports.FileBasedUsedAttestationTracker = FileBasedUsedAttestationTracker;
297
- /**
298
- * Factory to create attestation tracker
299
- * @param stateDirectory - Optional directory for persistent storage
300
- * @returns IUsedAttestationTracker instance
301
- */
302
- function createUsedAttestationTracker(stateDirectory) {
303
- if (stateDirectory) {
304
- return new FileBasedUsedAttestationTracker(stateDirectory);
305
- }
306
- return new InMemoryUsedAttestationTracker();
307
- }
308
- exports.createUsedAttestationTracker = createUsedAttestationTracker;
309
- //# sourceMappingURL=UsedAttestationTracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UsedAttestationTracker.js","sourceRoot":"","sources":["../../src/utils/UsedAttestationTracker.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * fsSafe - minimal filesystem hardening helpers
3
- *
4
- * Focus:
5
- * - Prevent symlink-based path escapes when persisting local state
6
- * - Avoid clobbering arbitrary files via pre-created symlink temp files
7
- *
8
- * NOTE: This is not a complete TOCTOU-proof sandbox, but it eliminates the
9
- * most common local symlink/hardlink footguns for SDK-managed state files.
10
- */
11
- export declare function ensureSafeDir(dirPath: string, mode?: number): void;
12
- export declare function assertSafeFileForRead(filePath: string): void;
13
- export declare function ensureSafeFile(filePath: string, contents: string, mode?: number): void;
14
- //# sourceMappingURL=fsSafe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fsSafe.d.ts","sourceRoot":"","sources":["../../src/utils/fsSafe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAc,GAAG,IAAI,CAmBzE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS5D;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAc,GACnB,IAAI,CAmBN"}
@@ -1,89 +0,0 @@
1
- "use strict";
2
- /**
3
- * fsSafe - minimal filesystem hardening helpers
4
- *
5
- * Focus:
6
- * - Prevent symlink-based path escapes when persisting local state
7
- * - Avoid clobbering arbitrary files via pre-created symlink temp files
8
- *
9
- * NOTE: This is not a complete TOCTOU-proof sandbox, but it eliminates the
10
- * most common local symlink/hardlink footguns for SDK-managed state files.
11
- */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ensureSafeFile = exports.assertSafeFileForRead = exports.ensureSafeDir = void 0;
37
- const fs = __importStar(require("fs"));
38
- function ensureSafeDir(dirPath, mode = 0o755) {
39
- if (fs.existsSync(dirPath)) {
40
- const st = fs.lstatSync(dirPath);
41
- if (st.isSymbolicLink()) {
42
- throw new Error(`Refusing to use symlink directory: ${dirPath}`);
43
- }
44
- if (!st.isDirectory()) {
45
- throw new Error(`Expected directory but found non-directory: ${dirPath}`);
46
- }
47
- return;
48
- }
49
- fs.mkdirSync(dirPath, { recursive: true, mode });
50
- // Post-create sanity: ensure it didn't become a symlink (defense-in-depth)
51
- const st = fs.lstatSync(dirPath);
52
- if (st.isSymbolicLink() || !st.isDirectory()) {
53
- throw new Error(`Created unsafe directory (symlink or non-dir): ${dirPath}`);
54
- }
55
- }
56
- exports.ensureSafeDir = ensureSafeDir;
57
- function assertSafeFileForRead(filePath) {
58
- if (!fs.existsSync(filePath))
59
- return;
60
- const st = fs.lstatSync(filePath);
61
- if (st.isSymbolicLink()) {
62
- throw new Error(`Refusing to read from symlink file: ${filePath}`);
63
- }
64
- if (!st.isFile()) {
65
- throw new Error(`Expected file but found non-file: ${filePath}`);
66
- }
67
- }
68
- exports.assertSafeFileForRead = assertSafeFileForRead;
69
- function ensureSafeFile(filePath, contents, mode = 0o644) {
70
- if (fs.existsSync(filePath)) {
71
- const st = fs.lstatSync(filePath);
72
- if (st.isSymbolicLink()) {
73
- throw new Error(`Refusing to use symlink file: ${filePath}`);
74
- }
75
- if (!st.isFile()) {
76
- throw new Error(`Expected file but found non-file: ${filePath}`);
77
- }
78
- return;
79
- }
80
- // Use exclusive create to avoid clobbering a file that appears between
81
- // existsSync() and writeFileSync().
82
- fs.writeFileSync(filePath, contents, {
83
- encoding: 'utf-8',
84
- mode,
85
- flag: 'wx',
86
- });
87
- }
88
- exports.ensureSafeFile = ensureSafeFile;
89
- //# sourceMappingURL=fsSafe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fsSafe.js","sourceRoot":"","sources":["../../src/utils/fsSafe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,SAAgB,aAAa,CAAC,OAAe,EAAE,OAAe,KAAK;IACjE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;IACT,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,2EAA2E;IAC3E,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAnBD,sCAmBC;AAED,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AATD,sDASC;AAED,SAAgB,cAAc,CAC5B,QAAgB,EAChB,QAAgB,EAChB,OAAe,KAAK;IAEpB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,oCAAoC;IACpC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACnC,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAvBD,wCAuBC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * ACTP SDK Utilities
3
- *
4
- * This module exports all utility classes for the ACTP SDK.
5
- *
6
- * @module utils
7
- */
8
- export { ErrorRecoveryGuide, withRecoveryGuidance, type ErrorRecoveryInfo, type ErrorSeverity, type ErrorCategory, } from './ErrorRecoveryGuide';
9
- export { RateLimiter, CircuitBreaker, APIProtector, type RateLimiterConfig, type RateLimitResult, type CircuitBreakerConfig, type CircuitBreakerResult, type CircuitState, } from './RateLimiter';
10
- export { Logger, MetricsCollector, sdkLogger, sdkMetrics, type LogLevel, type LogEntry, type LoggerConfig, type MetricsHook, } from './Logger';
11
- export { SDKLifecycle, sdkLifecycle, onShutdown, registerDisposable, shutdownSDK, type Disposable, type ShutdownHandler, type LifecycleEvent, type LifecycleListener, } from './SDKLifecycle';
12
- export { InMemoryReceivedNonceTracker, SetBasedReceivedNonceTracker, createReceivedNonceTracker, type IReceivedNonceTracker, type NonceValidationResult, } from './ReceivedNonceTracker';
13
- export { InMemoryUsedAttestationTracker, FileBasedUsedAttestationTracker, createUsedAttestationTracker, type IUsedAttestationTracker, } from './UsedAttestationTracker';
14
- export { USDC, Deadline, Address, Bytes32, State, DisputeWindow, } from './Helpers';
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,EACL,aAAa,GACd,MAAM,WAAW,CAAC"}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- /**
3
- * ACTP SDK Utilities
4
- *
5
- * This module exports all utility classes for the ACTP SDK.
6
- *
7
- * @module utils
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.DisputeWindow = exports.State = exports.Bytes32 = exports.Address = exports.Deadline = exports.USDC = exports.createUsedAttestationTracker = exports.FileBasedUsedAttestationTracker = exports.InMemoryUsedAttestationTracker = exports.createReceivedNonceTracker = exports.SetBasedReceivedNonceTracker = exports.InMemoryReceivedNonceTracker = exports.shutdownSDK = exports.registerDisposable = exports.onShutdown = exports.sdkLifecycle = exports.SDKLifecycle = exports.sdkMetrics = exports.sdkLogger = exports.MetricsCollector = exports.Logger = exports.APIProtector = exports.CircuitBreaker = exports.RateLimiter = exports.withRecoveryGuidance = exports.ErrorRecoveryGuide = void 0;
11
- // Error Recovery (HIGH-6)
12
- var ErrorRecoveryGuide_1 = require("./ErrorRecoveryGuide");
13
- Object.defineProperty(exports, "ErrorRecoveryGuide", { enumerable: true, get: function () { return ErrorRecoveryGuide_1.ErrorRecoveryGuide; } });
14
- Object.defineProperty(exports, "withRecoveryGuidance", { enumerable: true, get: function () { return ErrorRecoveryGuide_1.withRecoveryGuidance; } });
15
- // Rate Limiting & Circuit Breaker (M-4, M-5)
16
- var RateLimiter_1 = require("./RateLimiter");
17
- Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return RateLimiter_1.RateLimiter; } });
18
- Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return RateLimiter_1.CircuitBreaker; } });
19
- Object.defineProperty(exports, "APIProtector", { enumerable: true, get: function () { return RateLimiter_1.APIProtector; } });
20
- // Logging & Metrics (M-6, M-7)
21
- var Logger_1 = require("./Logger");
22
- Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_1.Logger; } });
23
- Object.defineProperty(exports, "MetricsCollector", { enumerable: true, get: function () { return Logger_1.MetricsCollector; } });
24
- Object.defineProperty(exports, "sdkLogger", { enumerable: true, get: function () { return Logger_1.sdkLogger; } });
25
- Object.defineProperty(exports, "sdkMetrics", { enumerable: true, get: function () { return Logger_1.sdkMetrics; } });
26
- // SDK Lifecycle (M-8)
27
- var SDKLifecycle_1 = require("./SDKLifecycle");
28
- Object.defineProperty(exports, "SDKLifecycle", { enumerable: true, get: function () { return SDKLifecycle_1.SDKLifecycle; } });
29
- Object.defineProperty(exports, "sdkLifecycle", { enumerable: true, get: function () { return SDKLifecycle_1.sdkLifecycle; } });
30
- Object.defineProperty(exports, "onShutdown", { enumerable: true, get: function () { return SDKLifecycle_1.onShutdown; } });
31
- Object.defineProperty(exports, "registerDisposable", { enumerable: true, get: function () { return SDKLifecycle_1.registerDisposable; } });
32
- Object.defineProperty(exports, "shutdownSDK", { enumerable: true, get: function () { return SDKLifecycle_1.shutdownSDK; } });
33
- // Nonce Tracking (Security)
34
- var ReceivedNonceTracker_1 = require("./ReceivedNonceTracker");
35
- Object.defineProperty(exports, "InMemoryReceivedNonceTracker", { enumerable: true, get: function () { return ReceivedNonceTracker_1.InMemoryReceivedNonceTracker; } });
36
- Object.defineProperty(exports, "SetBasedReceivedNonceTracker", { enumerable: true, get: function () { return ReceivedNonceTracker_1.SetBasedReceivedNonceTracker; } });
37
- Object.defineProperty(exports, "createReceivedNonceTracker", { enumerable: true, get: function () { return ReceivedNonceTracker_1.createReceivedNonceTracker; } });
38
- // Attestation Tracking (Security)
39
- var UsedAttestationTracker_1 = require("./UsedAttestationTracker");
40
- Object.defineProperty(exports, "InMemoryUsedAttestationTracker", { enumerable: true, get: function () { return UsedAttestationTracker_1.InMemoryUsedAttestationTracker; } });
41
- Object.defineProperty(exports, "FileBasedUsedAttestationTracker", { enumerable: true, get: function () { return UsedAttestationTracker_1.FileBasedUsedAttestationTracker; } });
42
- Object.defineProperty(exports, "createUsedAttestationTracker", { enumerable: true, get: function () { return UsedAttestationTracker_1.createUsedAttestationTracker; } });
43
- // Helper Utilities (L-7)
44
- var Helpers_1 = require("./Helpers");
45
- Object.defineProperty(exports, "USDC", { enumerable: true, get: function () { return Helpers_1.USDC; } });
46
- Object.defineProperty(exports, "Deadline", { enumerable: true, get: function () { return Helpers_1.Deadline; } });
47
- Object.defineProperty(exports, "Address", { enumerable: true, get: function () { return Helpers_1.Address; } });
48
- Object.defineProperty(exports, "Bytes32", { enumerable: true, get: function () { return Helpers_1.Bytes32; } });
49
- Object.defineProperty(exports, "State", { enumerable: true, get: function () { return Helpers_1.State; } });
50
- Object.defineProperty(exports, "DisputeWindow", { enumerable: true, get: function () { return Helpers_1.DisputeWindow; } });
51
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,0BAA0B;AAC1B,2DAM8B;AAL5B,wHAAA,kBAAkB,OAAA;AAClB,0HAAA,oBAAoB,OAAA;AAMtB,6CAA6C;AAC7C,6CASuB;AARrB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AAQd,+BAA+B;AAC/B,mCASkB;AARhB,gGAAA,MAAM,OAAA;AACN,0GAAA,gBAAgB,OAAA;AAChB,mGAAA,SAAS,OAAA;AACT,oGAAA,UAAU,OAAA;AAOZ,sBAAsB;AACtB,+CAUwB;AATtB,4GAAA,YAAY,OAAA;AACZ,4GAAA,YAAY,OAAA;AACZ,0GAAA,UAAU,OAAA;AACV,kHAAA,kBAAkB,OAAA;AAClB,2GAAA,WAAW,OAAA;AAOb,4BAA4B;AAC5B,+DAMgC;AAL9B,oIAAA,4BAA4B,OAAA;AAC5B,oIAAA,4BAA4B,OAAA;AAC5B,kIAAA,0BAA0B,OAAA;AAK5B,kCAAkC;AAClC,mEAKkC;AAJhC,wIAAA,8BAA8B,OAAA;AAC9B,yIAAA,+BAA+B,OAAA;AAC/B,sIAAA,4BAA4B,OAAA;AAI9B,yBAAyB;AACzB,qCAOmB;AANjB,+FAAA,IAAI,OAAA;AACJ,mGAAA,QAAQ,OAAA;AACR,kGAAA,OAAO,OAAA;AACP,kGAAA,OAAO,OAAA;AACP,gGAAA,KAAK,OAAA;AACL,wGAAA,aAAa,OAAA"}
@@ -1,147 +0,0 @@
1
- /**
2
- * Security Utilities for ACTP SDK
3
- *
4
- * SECURITY FIXES:
5
- * - H-7: Constant-time string comparison (timing attack prevention)
6
- * - H-6: Path traversal prevention
7
- * - H-2: Input validation and sanitization
8
- * - C-3: Safe JSON parsing with schema validation
9
- *
10
- * @module utils/security
11
- */
12
- /**
13
- * H-7: Constant-time string comparison to prevent timing attacks
14
- *
15
- * Never use === for comparing signatures, hashes, or other security-sensitive strings
16
- * as it can leak timing information that attackers can exploit.
17
- *
18
- * @param a - First string to compare
19
- * @param b - Second string to compare
20
- * @returns true if strings are equal, false otherwise
21
- */
22
- export declare function timingSafeEqual(a: string, b: string): boolean;
23
- /**
24
- * H-6: Validate and sanitize directory path to prevent path traversal
25
- *
26
- * Ensures that the provided path:
27
- * 1. Does not contain '..' sequences
28
- * 2. Resolves to a location within the allowed base directory
29
- * 3. Does not follow symlinks (optional)
30
- *
31
- * @param requestedPath - The path to validate
32
- * @param baseDirectory - The base directory to restrict paths to
33
- * @returns Sanitized absolute path
34
- * @throws Error if path is invalid or contains traversal attempts
35
- */
36
- export declare function validatePath(requestedPath: string, baseDirectory: string): string;
37
- /**
38
- * H-2: Validate and sanitize service name
39
- *
40
- * Ensures service name:
41
- * 1. Contains only safe characters (alphanumeric, dash, dot, underscore)
42
- * 2. Does not exceed maximum length
43
- * 3. Does not contain special characters that could cause injection
44
- *
45
- * @param serviceName - The service name to validate
46
- * @returns Sanitized service name
47
- * @throws Error if service name is invalid
48
- */
49
- export declare function validateServiceName(serviceName: string): string;
50
- /**
51
- * H-5: Validate Ethereum address format
52
- *
53
- * Ensures address:
54
- * 1. Is a valid hex string
55
- * 2. Has correct length (42 chars including '0x' prefix)
56
- * 3. Uses valid checksum if provided (EIP-55)
57
- *
58
- * @param address - The Ethereum address to validate
59
- * @returns true if address is valid, false otherwise
60
- */
61
- export declare function isValidAddress(address: string): boolean;
62
- /**
63
- * C-3: Safe JSON parsing with schema validation
64
- *
65
- * Prevents code injection and prototype pollution attacks by:
66
- * 1. Safely parsing JSON with error handling
67
- * 2. Validating the parsed object against an expected schema
68
- * 3. Removing __proto__, constructor, and prototype properties
69
- * 4. Returning only whitelisted fields
70
- *
71
- * @param jsonString - The JSON string to parse
72
- * @param schema - Expected schema (object with field names and types)
73
- * @returns Parsed and validated object, or null if invalid
74
- */
75
- export declare function safeJSONParse<T = any>(jsonString: string, schema?: Record<string, string>): T | null;
76
- /**
77
- * LRU (Least Recently Used) cache with maximum size
78
- * Used for preventing unbounded memory growth
79
- *
80
- * @template K - Key type
81
- * @template V - Value type
82
- */
83
- export declare class LRUCache<K, V> {
84
- private cache;
85
- private readonly maxSize;
86
- constructor(maxSize?: number);
87
- /**
88
- * Get value from cache
89
- *
90
- * @param key - Cache key
91
- * @returns Cached value or undefined
92
- */
93
- get(key: K): V | undefined;
94
- /**
95
- * Set value in cache
96
- *
97
- * @param key - Cache key
98
- * @param value - Value to cache
99
- */
100
- set(key: K, value: V): void;
101
- /**
102
- * Check if key exists in cache
103
- *
104
- * SECURITY FIX (N-1): Use Map's native has() instead of get()
105
- * to avoid modifying LRU order on read-only operations.
106
- *
107
- * @param key - Cache key
108
- * @returns true if key exists
109
- */
110
- has(key: K): boolean;
111
- /**
112
- * Delete key from cache
113
- *
114
- * @param key - Cache key
115
- */
116
- delete(key: K): void;
117
- /**
118
- * Clear all entries
119
- */
120
- clear(): void;
121
- /**
122
- * Get current cache size
123
- */
124
- get size(): number;
125
- /**
126
- * Get all values from cache
127
- *
128
- * SECURITY FIX (N-2): Add iterator support for LRUCache.
129
- * Returns values in LRU order (oldest to newest).
130
- *
131
- * @returns Array of all cached values
132
- */
133
- values(): V[];
134
- /**
135
- * Get all keys from cache
136
- *
137
- * @returns Array of all cached keys
138
- */
139
- keys(): K[];
140
- /**
141
- * Get all entries from cache
142
- *
143
- * @returns Array of all cached [key, value] pairs
144
- */
145
- entries(): [K, V][];
146
- }
147
- //# sourceMappingURL=security.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAkB7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CA4BjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgC/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAyBvD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EACnC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,CAAC,GAAG,IAAI,CAoEV;AAqCD;;;;;;GAMG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,MAAa;IAOlC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAmB3B;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAIpB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,MAAM,IAAI,CAAC,EAAE;IAIb;;;;OAIG;IACH,IAAI,IAAI,CAAC,EAAE;IAIX;;;;OAIG;IACH,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;CAGpB"}