@agirails/sdk 2.0.1-beta → 2.0.2

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/LICENSE +190 -0
  2. package/README.md +116 -108
  3. package/bin/actp +10 -0
  4. package/dist/ACTPClient.d.ts +456 -33
  5. package/dist/ACTPClient.d.ts.map +1 -1
  6. package/dist/ACTPClient.js +477 -93
  7. package/dist/ACTPClient.js.map +1 -1
  8. package/dist/abi/AgentRegistry.json +782 -0
  9. package/dist/abi/EscrowVault.json +106 -38
  10. package/dist/abi/IdentityRegistry.json +316 -0
  11. package/dist/adapters/BaseAdapter.d.ts +231 -0
  12. package/dist/adapters/BaseAdapter.d.ts.map +1 -0
  13. package/dist/adapters/BaseAdapter.js +393 -0
  14. package/dist/adapters/BaseAdapter.js.map +1 -0
  15. package/dist/adapters/BeginnerAdapter.d.ts +152 -0
  16. package/dist/adapters/BeginnerAdapter.d.ts.map +1 -0
  17. package/dist/adapters/BeginnerAdapter.js +168 -0
  18. package/dist/adapters/BeginnerAdapter.js.map +1 -0
  19. package/dist/adapters/IntermediateAdapter.d.ts +211 -0
  20. package/dist/adapters/IntermediateAdapter.d.ts.map +1 -0
  21. package/dist/adapters/IntermediateAdapter.js +260 -0
  22. package/dist/adapters/IntermediateAdapter.js.map +1 -0
  23. package/dist/adapters/index.d.ts +15 -0
  24. package/dist/adapters/index.d.ts.map +1 -0
  25. package/dist/adapters/index.js +26 -0
  26. package/dist/adapters/index.js.map +1 -0
  27. package/dist/builders/DeliveryProofBuilder.d.ts +60 -1
  28. package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
  29. package/dist/builders/DeliveryProofBuilder.js +81 -5
  30. package/dist/builders/DeliveryProofBuilder.js.map +1 -1
  31. package/dist/builders/QuoteBuilder.d.ts +101 -0
  32. package/dist/builders/QuoteBuilder.d.ts.map +1 -1
  33. package/dist/builders/QuoteBuilder.js +120 -3
  34. package/dist/builders/QuoteBuilder.js.map +1 -1
  35. package/dist/builders/index.d.ts +4 -0
  36. package/dist/builders/index.d.ts.map +1 -1
  37. package/dist/builders/index.js +4 -0
  38. package/dist/builders/index.js.map +1 -1
  39. package/dist/cli/commands/balance.d.ts +13 -0
  40. package/dist/cli/commands/balance.d.ts.map +1 -0
  41. package/dist/cli/commands/balance.js +89 -0
  42. package/dist/cli/commands/balance.js.map +1 -0
  43. package/dist/cli/commands/batch.d.ts +24 -0
  44. package/dist/cli/commands/batch.d.ts.map +1 -0
  45. package/dist/cli/commands/batch.js +424 -0
  46. package/dist/cli/commands/batch.js.map +1 -0
  47. package/dist/cli/commands/config.d.ts +13 -0
  48. package/dist/cli/commands/config.d.ts.map +1 -0
  49. package/dist/cli/commands/config.js +192 -0
  50. package/dist/cli/commands/config.js.map +1 -0
  51. package/dist/cli/commands/init.d.ts +19 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/init.js +143 -0
  54. package/dist/cli/commands/init.js.map +1 -0
  55. package/dist/cli/commands/mint.d.ts +13 -0
  56. package/dist/cli/commands/mint.d.ts.map +1 -0
  57. package/dist/cli/commands/mint.js +91 -0
  58. package/dist/cli/commands/mint.js.map +1 -0
  59. package/dist/cli/commands/pay.d.ts +18 -0
  60. package/dist/cli/commands/pay.d.ts.map +1 -0
  61. package/dist/cli/commands/pay.js +87 -0
  62. package/dist/cli/commands/pay.js.map +1 -0
  63. package/dist/cli/commands/simulate.d.ts +32 -0
  64. package/dist/cli/commands/simulate.d.ts.map +1 -0
  65. package/dist/cli/commands/simulate.js +290 -0
  66. package/dist/cli/commands/simulate.js.map +1 -0
  67. package/dist/cli/commands/time.d.ts +29 -0
  68. package/dist/cli/commands/time.d.ts.map +1 -0
  69. package/dist/cli/commands/time.js +252 -0
  70. package/dist/cli/commands/time.js.map +1 -0
  71. package/dist/cli/commands/tx.d.ts +16 -0
  72. package/dist/cli/commands/tx.d.ts.map +1 -0
  73. package/dist/cli/commands/tx.js +379 -0
  74. package/dist/cli/commands/tx.js.map +1 -0
  75. package/dist/cli/commands/watch.d.ts +20 -0
  76. package/dist/cli/commands/watch.d.ts.map +1 -0
  77. package/dist/cli/commands/watch.js +160 -0
  78. package/dist/cli/commands/watch.js.map +1 -0
  79. package/dist/cli/index.d.ts +17 -0
  80. package/dist/cli/index.d.ts.map +1 -0
  81. package/dist/cli/index.js +104 -0
  82. package/dist/cli/index.js.map +1 -0
  83. package/dist/cli/utils/client.d.ts +70 -0
  84. package/dist/cli/utils/client.d.ts.map +1 -0
  85. package/dist/cli/utils/client.js +240 -0
  86. package/dist/cli/utils/client.js.map +1 -0
  87. package/dist/cli/utils/config.d.ts +91 -0
  88. package/dist/cli/utils/config.d.ts.map +1 -0
  89. package/dist/cli/utils/config.js +240 -0
  90. package/dist/cli/utils/config.js.map +1 -0
  91. package/dist/cli/utils/output.d.ts +174 -0
  92. package/dist/cli/utils/output.d.ts.map +1 -0
  93. package/dist/cli/utils/output.js +380 -0
  94. package/dist/cli/utils/output.js.map +1 -0
  95. package/dist/config/networks.d.ts +28 -0
  96. package/dist/config/networks.d.ts.map +1 -1
  97. package/dist/config/networks.js +60 -12
  98. package/dist/config/networks.js.map +1 -1
  99. package/dist/errors/index.d.ts +165 -2
  100. package/dist/errors/index.d.ts.map +1 -1
  101. package/dist/errors/index.js +260 -2
  102. package/dist/errors/index.js.map +1 -1
  103. package/dist/index.d.ts +61 -13
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +141 -36
  106. package/dist/index.js.map +1 -1
  107. package/dist/level0/Provider.d.ts +106 -0
  108. package/dist/level0/Provider.d.ts.map +1 -0
  109. package/dist/level0/Provider.js +10 -0
  110. package/dist/level0/Provider.js.map +1 -0
  111. package/dist/level0/ServiceDirectory.d.ts +74 -0
  112. package/dist/level0/ServiceDirectory.d.ts.map +1 -0
  113. package/dist/level0/ServiceDirectory.js +122 -0
  114. package/dist/level0/ServiceDirectory.js.map +1 -0
  115. package/dist/level0/index.d.ts +10 -0
  116. package/dist/level0/index.d.ts.map +1 -0
  117. package/dist/level0/index.js +15 -0
  118. package/dist/level0/index.js.map +1 -0
  119. package/dist/level0/provide.d.ts +51 -0
  120. package/dist/level0/provide.d.ts.map +1 -0
  121. package/dist/level0/provide.js +113 -0
  122. package/dist/level0/provide.js.map +1 -0
  123. package/dist/level0/request.d.ts +53 -0
  124. package/dist/level0/request.d.ts.map +1 -0
  125. package/dist/level0/request.js +462 -0
  126. package/dist/level0/request.js.map +1 -0
  127. package/dist/level1/Agent.d.ts +472 -0
  128. package/dist/level1/Agent.d.ts.map +1 -0
  129. package/dist/level1/Agent.js +1091 -0
  130. package/dist/level1/Agent.js.map +1 -0
  131. package/dist/level1/index.d.ts +10 -0
  132. package/dist/level1/index.d.ts.map +1 -0
  133. package/dist/level1/index.js +30 -0
  134. package/dist/level1/index.js.map +1 -0
  135. package/dist/level1/pricing/PriceCalculator.d.ts +62 -0
  136. package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -0
  137. package/dist/level1/pricing/PriceCalculator.js +237 -0
  138. package/dist/level1/pricing/PriceCalculator.js.map +1 -0
  139. package/dist/level1/pricing/PricingStrategy.d.ts +179 -0
  140. package/dist/level1/pricing/PricingStrategy.d.ts.map +1 -0
  141. package/dist/level1/pricing/PricingStrategy.js +11 -0
  142. package/dist/level1/pricing/PricingStrategy.js.map +1 -0
  143. package/dist/level1/types/Job.d.ts +166 -0
  144. package/dist/level1/types/Job.d.ts.map +1 -0
  145. package/dist/level1/types/Job.js +11 -0
  146. package/dist/level1/types/Job.js.map +1 -0
  147. package/dist/level1/types/Options.d.ts +258 -0
  148. package/dist/level1/types/Options.d.ts.map +1 -0
  149. package/dist/level1/types/Options.js +8 -0
  150. package/dist/level1/types/Options.js.map +1 -0
  151. package/dist/level1/types/index.d.ts +8 -0
  152. package/dist/level1/types/index.d.ts.map +1 -0
  153. package/dist/level1/types/index.js +8 -0
  154. package/dist/level1/types/index.js.map +1 -0
  155. package/dist/protocol/ACTPKernel.d.ts +229 -2
  156. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  157. package/dist/protocol/ACTPKernel.js +367 -33
  158. package/dist/protocol/ACTPKernel.js.map +1 -1
  159. package/dist/protocol/AgentRegistry.d.ts +177 -0
  160. package/dist/protocol/AgentRegistry.d.ts.map +1 -0
  161. package/dist/protocol/AgentRegistry.js +449 -0
  162. package/dist/protocol/AgentRegistry.js.map +1 -0
  163. package/dist/protocol/DIDManager.d.ts +289 -0
  164. package/dist/protocol/DIDManager.d.ts.map +1 -0
  165. package/dist/protocol/DIDManager.js +481 -0
  166. package/dist/protocol/DIDManager.js.map +1 -0
  167. package/dist/protocol/DIDResolver.d.ts +236 -0
  168. package/dist/protocol/DIDResolver.d.ts.map +1 -0
  169. package/dist/protocol/DIDResolver.js +495 -0
  170. package/dist/protocol/DIDResolver.js.map +1 -0
  171. package/dist/protocol/EASHelper.d.ts +57 -2
  172. package/dist/protocol/EASHelper.d.ts.map +1 -1
  173. package/dist/protocol/EASHelper.js +230 -37
  174. package/dist/protocol/EASHelper.js.map +1 -1
  175. package/dist/protocol/EscrowVault.d.ts +93 -2
  176. package/dist/protocol/EscrowVault.d.ts.map +1 -1
  177. package/dist/protocol/EscrowVault.js +122 -33
  178. package/dist/protocol/EscrowVault.js.map +1 -1
  179. package/dist/protocol/EventMonitor.d.ts +45 -1
  180. package/dist/protocol/EventMonitor.d.ts.map +1 -1
  181. package/dist/protocol/EventMonitor.js +64 -8
  182. package/dist/protocol/EventMonitor.js.map +1 -1
  183. package/dist/protocol/MessageSigner.d.ts +116 -2
  184. package/dist/protocol/MessageSigner.d.ts.map +1 -1
  185. package/dist/protocol/MessageSigner.js +215 -9
  186. package/dist/protocol/MessageSigner.js.map +1 -1
  187. package/dist/protocol/ProofGenerator.d.ts +93 -0
  188. package/dist/protocol/ProofGenerator.d.ts.map +1 -1
  189. package/dist/protocol/ProofGenerator.js +194 -9
  190. package/dist/protocol/ProofGenerator.js.map +1 -1
  191. package/dist/protocol/QuoteBuilder.d.ts +8 -0
  192. package/dist/protocol/QuoteBuilder.d.ts.map +1 -1
  193. package/dist/protocol/QuoteBuilder.js +8 -0
  194. package/dist/protocol/QuoteBuilder.js.map +1 -1
  195. package/dist/runtime/BlockchainRuntime.d.ts +360 -0
  196. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -0
  197. package/dist/runtime/BlockchainRuntime.js +767 -0
  198. package/dist/runtime/BlockchainRuntime.js.map +1 -0
  199. package/dist/runtime/IACTPRuntime.d.ts +271 -0
  200. package/dist/runtime/IACTPRuntime.d.ts.map +1 -0
  201. package/dist/runtime/IACTPRuntime.js +15 -0
  202. package/dist/runtime/IACTPRuntime.js.map +1 -0
  203. package/dist/runtime/MockRuntime.d.ts +445 -0
  204. package/dist/runtime/MockRuntime.d.ts.map +1 -0
  205. package/dist/runtime/MockRuntime.js +1065 -0
  206. package/dist/runtime/MockRuntime.js.map +1 -0
  207. package/dist/runtime/MockStateManager.d.ts +233 -0
  208. package/dist/runtime/MockStateManager.d.ts.map +1 -0
  209. package/dist/runtime/MockStateManager.js +533 -0
  210. package/dist/runtime/MockStateManager.js.map +1 -0
  211. package/dist/runtime/index.d.ts +14 -0
  212. package/dist/runtime/index.d.ts.map +1 -0
  213. package/dist/runtime/index.js +42 -0
  214. package/dist/runtime/index.js.map +1 -0
  215. package/dist/runtime/types/MockState.d.ts +167 -0
  216. package/dist/runtime/types/MockState.d.ts.map +1 -0
  217. package/dist/runtime/types/MockState.js +43 -0
  218. package/dist/runtime/types/MockState.js.map +1 -0
  219. package/dist/types/agent.d.ts +76 -0
  220. package/dist/types/agent.d.ts.map +1 -0
  221. package/dist/types/agent.js +8 -0
  222. package/dist/types/agent.js.map +1 -0
  223. package/dist/types/did.d.ts +192 -0
  224. package/dist/types/did.d.ts.map +1 -0
  225. package/dist/types/did.js +38 -0
  226. package/dist/types/did.js.map +1 -0
  227. package/dist/types/eip712.d.ts +34 -0
  228. package/dist/types/eip712.d.ts.map +1 -1
  229. package/dist/types/eip712.js +31 -5
  230. package/dist/types/eip712.js.map +1 -1
  231. package/dist/types/escrow.d.ts +17 -10
  232. package/dist/types/escrow.d.ts.map +1 -1
  233. package/dist/types/index.d.ts +5 -0
  234. package/dist/types/index.d.ts.map +1 -1
  235. package/dist/types/index.js +8 -0
  236. package/dist/types/index.js.map +1 -1
  237. package/dist/types/message.d.ts +32 -0
  238. package/dist/types/message.d.ts.map +1 -1
  239. package/dist/types/message.js +4 -0
  240. package/dist/types/message.js.map +1 -1
  241. package/dist/types/state.d.ts +28 -0
  242. package/dist/types/state.d.ts.map +1 -1
  243. package/dist/types/state.js +37 -6
  244. package/dist/types/state.js.map +1 -1
  245. package/dist/types/transaction.d.ts +17 -0
  246. package/dist/types/transaction.d.ts.map +1 -1
  247. package/dist/utils/ErrorRecoveryGuide.d.ts +125 -0
  248. package/dist/utils/ErrorRecoveryGuide.d.ts.map +1 -0
  249. package/dist/utils/ErrorRecoveryGuide.js +579 -0
  250. package/dist/utils/ErrorRecoveryGuide.js.map +1 -0
  251. package/dist/utils/Helpers.d.ts +453 -0
  252. package/dist/utils/Helpers.d.ts.map +1 -0
  253. package/dist/utils/Helpers.js +623 -0
  254. package/dist/utils/Helpers.js.map +1 -0
  255. package/dist/utils/IPFSClient.d.ts +113 -0
  256. package/dist/utils/IPFSClient.d.ts.map +1 -1
  257. package/dist/utils/IPFSClient.js +128 -7
  258. package/dist/utils/IPFSClient.js.map +1 -1
  259. package/dist/utils/Logger.d.ts +195 -0
  260. package/dist/utils/Logger.d.ts.map +1 -0
  261. package/dist/utils/Logger.js +382 -0
  262. package/dist/utils/Logger.js.map +1 -0
  263. package/dist/utils/NonceManager.d.ts +234 -1
  264. package/dist/utils/NonceManager.d.ts.map +1 -1
  265. package/dist/utils/NonceManager.js +372 -7
  266. package/dist/utils/NonceManager.js.map +1 -1
  267. package/dist/utils/RateLimiter.d.ts +253 -0
  268. package/dist/utils/RateLimiter.d.ts.map +1 -0
  269. package/dist/utils/RateLimiter.js +424 -0
  270. package/dist/utils/RateLimiter.js.map +1 -0
  271. package/dist/utils/ReceivedNonceTracker.d.ts +175 -0
  272. package/dist/utils/ReceivedNonceTracker.d.ts.map +1 -1
  273. package/dist/utils/ReceivedNonceTracker.js +261 -5
  274. package/dist/utils/ReceivedNonceTracker.js.map +1 -1
  275. package/dist/utils/SDKLifecycle.d.ts +156 -0
  276. package/dist/utils/SDKLifecycle.d.ts.map +1 -0
  277. package/dist/utils/SDKLifecycle.js +347 -0
  278. package/dist/utils/SDKLifecycle.js.map +1 -0
  279. package/dist/utils/SecureNonce.d.ts +57 -0
  280. package/dist/utils/SecureNonce.d.ts.map +1 -0
  281. package/dist/utils/SecureNonce.js +80 -0
  282. package/dist/utils/SecureNonce.js.map +1 -0
  283. package/dist/utils/Semaphore.d.ts +123 -0
  284. package/dist/utils/Semaphore.d.ts.map +1 -0
  285. package/dist/utils/Semaphore.js +247 -0
  286. package/dist/utils/Semaphore.js.map +1 -0
  287. package/dist/utils/UsedAttestationTracker.d.ts +167 -0
  288. package/dist/utils/UsedAttestationTracker.d.ts.map +1 -0
  289. package/dist/utils/UsedAttestationTracker.js +309 -0
  290. package/dist/utils/UsedAttestationTracker.js.map +1 -0
  291. package/dist/utils/canonicalJson.d.ts +22 -0
  292. package/dist/utils/canonicalJson.d.ts.map +1 -1
  293. package/dist/utils/canonicalJson.js +26 -3
  294. package/dist/utils/canonicalJson.js.map +1 -1
  295. package/dist/utils/computeTypeHash.d.ts +14 -0
  296. package/dist/utils/computeTypeHash.d.ts.map +1 -1
  297. package/dist/utils/computeTypeHash.js +19 -2
  298. package/dist/utils/computeTypeHash.js.map +1 -1
  299. package/dist/utils/fsSafe.d.ts +14 -0
  300. package/dist/utils/fsSafe.d.ts.map +1 -0
  301. package/dist/utils/fsSafe.js +89 -0
  302. package/dist/utils/fsSafe.js.map +1 -0
  303. package/dist/utils/index.d.ts +15 -0
  304. package/dist/utils/index.d.ts.map +1 -0
  305. package/dist/utils/index.js +51 -0
  306. package/dist/utils/index.js.map +1 -0
  307. package/dist/utils/security.d.ts +147 -0
  308. package/dist/utils/security.d.ts.map +1 -0
  309. package/dist/utils/security.js +391 -0
  310. package/dist/utils/security.js.map +1 -0
  311. package/dist/utils/validation.d.ts +40 -0
  312. package/dist/utils/validation.d.ts.map +1 -1
  313. package/dist/utils/validation.js +184 -7
  314. package/dist/utils/validation.js.map +1 -1
  315. package/package.json +54 -37
  316. package/src/ACTPClient.ts +692 -178
  317. package/src/abi/AgentRegistry.json +782 -0
  318. package/src/abi/EscrowVault.json +106 -38
  319. package/src/abi/IdentityRegistry.json +316 -0
  320. package/src/adapters/BaseAdapter.ts +473 -0
  321. package/src/adapters/BeginnerAdapter.ts +232 -0
  322. package/src/adapters/IntermediateAdapter.ts +316 -0
  323. package/src/adapters/index.ts +25 -0
  324. package/src/builders/DeliveryProofBuilder.ts +3 -2
  325. package/src/cli/commands/balance.ts +110 -0
  326. package/src/cli/commands/batch.ts +487 -0
  327. package/src/cli/commands/config.ts +231 -0
  328. package/src/cli/commands/init.ts +161 -0
  329. package/src/cli/commands/mint.ts +116 -0
  330. package/src/cli/commands/pay.ts +113 -0
  331. package/src/cli/commands/simulate.ts +345 -0
  332. package/src/cli/commands/time.ts +303 -0
  333. package/src/cli/commands/tx.ts +448 -0
  334. package/src/cli/commands/watch.ts +211 -0
  335. package/src/cli/index.ts +116 -0
  336. package/src/cli/utils/client.ts +249 -0
  337. package/src/cli/utils/config.ts +282 -0
  338. package/src/cli/utils/output.ts +465 -0
  339. package/src/config/networks.ts +32 -9
  340. package/src/errors/index.ts +298 -1
  341. package/src/index.ts +207 -71
  342. package/src/level0/Provider.ts +117 -0
  343. package/src/level0/ServiceDirectory.ts +131 -0
  344. package/src/level0/index.ts +10 -0
  345. package/src/level0/provide.ts +131 -0
  346. package/src/level0/request.ts +494 -0
  347. package/src/level1/Agent.ts +1432 -0
  348. package/src/level1/index.ts +10 -0
  349. package/src/level1/pricing/PriceCalculator.ts +255 -0
  350. package/src/level1/pricing/PricingStrategy.ts +198 -0
  351. package/src/level1/types/Job.ts +179 -0
  352. package/src/level1/types/Options.ts +291 -0
  353. package/src/level1/types/index.ts +8 -0
  354. package/src/protocol/ACTPKernel.ts +175 -23
  355. package/src/protocol/AgentRegistry.ts +559 -0
  356. package/src/protocol/DIDManager.ts +629 -0
  357. package/src/protocol/DIDResolver.ts +554 -0
  358. package/src/protocol/EASHelper.ts +230 -46
  359. package/src/protocol/EscrowVault.ts +68 -50
  360. package/src/protocol/EventMonitor.ts +44 -15
  361. package/src/protocol/MessageSigner.ts +193 -13
  362. package/src/protocol/ProofGenerator.ts +223 -4
  363. package/src/runtime/BlockchainRuntime.ts +993 -0
  364. package/src/runtime/IACTPRuntime.ts +284 -0
  365. package/src/runtime/MockRuntime.ts +1244 -0
  366. package/src/runtime/MockStateManager.ts +576 -0
  367. package/src/runtime/index.ts +25 -0
  368. package/src/runtime/types/MockState.ts +227 -0
  369. package/src/types/agent.ts +79 -0
  370. package/src/types/did.ts +223 -0
  371. package/src/types/escrow.ts +12 -11
  372. package/src/types/index.ts +5 -1
  373. package/src/types/state.ts +12 -3
  374. package/src/types/transaction.ts +4 -1
  375. package/src/utils/ErrorRecoveryGuide.ts +675 -0
  376. package/src/utils/Helpers.ts +688 -0
  377. package/src/utils/IPFSClient.ts +122 -5
  378. package/src/utils/Logger.ts +484 -0
  379. package/src/utils/NonceManager.ts +305 -8
  380. package/src/utils/RateLimiter.ts +534 -0
  381. package/src/utils/ReceivedNonceTracker.ts +170 -0
  382. package/src/utils/SDKLifecycle.ts +416 -0
  383. package/src/utils/SecureNonce.ts +78 -0
  384. package/src/utils/Semaphore.ts +276 -0
  385. package/src/utils/UsedAttestationTracker.ts +387 -0
  386. package/src/utils/fsSafe.ts +75 -0
  387. package/src/utils/index.ts +80 -0
  388. package/src/utils/security.ts +418 -0
  389. package/src/utils/validation.ts +164 -0
  390. package/src/__tests__/ProofGenerator.test.ts +0 -124
  391. package/src/__tests__/QuoteBuilder.test.ts +0 -516
  392. package/src/__tests__/StateMachine.test.ts +0 -82
  393. package/src/__tests__/builders/DeliveryProofBuilder.test.ts +0 -581
  394. package/src/__tests__/integration/ACTPClient.test.ts +0 -263
  395. package/src/__tests__/integration.test.ts +0 -289
  396. package/src/__tests__/protocol/EASHelper.test.ts +0 -472
  397. package/src/__tests__/protocol/EventMonitor.test.ts +0 -382
  398. package/src/__tests__/security/ACTPKernel.security.test.ts +0 -1167
  399. package/src/__tests__/security/EscrowVault.security.test.ts +0 -570
  400. package/src/__tests__/security/MessageSigner.security.test.ts +0 -286
  401. package/src/__tests__/security/NonceReplay.security.test.ts +0 -501
  402. package/src/__tests__/security/validation.security.test.ts +0 -376
  403. package/src/__tests__/utils/IPFSClient.test.ts +0 -262
  404. package/src/__tests__/utils/NonceManager.test.ts +0 -205
  405. package/src/__tests__/utils/canonicalJson.test.ts +0 -153
@@ -0,0 +1,462 @@
1
+ "use strict";
2
+ /**
3
+ * request() - Basic API for service requesters
4
+ *
5
+ * The simplest way to request a service from AGIRAILS.
6
+ * Specify what you need and your budget, and AGIRAILS finds a provider.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.request = void 0;
35
+ const ACTPClient_1 = require("../ACTPClient");
36
+ const ServiceDirectory_1 = require("./ServiceDirectory");
37
+ const errors_1 = require("../errors");
38
+ const security_1 = require("../utils/security");
39
+ const Logger_1 = require("../utils/Logger");
40
+ const ethers_1 = require("ethers");
41
+ /**
42
+ * Request a service
43
+ *
44
+ * This is the simplest way to request a service on AGIRAILS.
45
+ * Specify the service name, input data, and budget, and AGIRAILS
46
+ * handles finding a provider, creating the transaction, and delivering the result.
47
+ *
48
+ * @param service - Service name (e.g., 'translation', 'echo')
49
+ * @param options - Request options (input, budget, etc.)
50
+ * @returns Promise resolving to request result
51
+ *
52
+ * @throws {NoProviderFoundError} If no provider is found for the service
53
+ * @throws {TimeoutError} If provider doesn't respond within timeout
54
+ * @throws {ProviderRejectedError} If provider rejects the job
55
+ * @throws {DeliveryFailedError} If provider fails to deliver result
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * // Simplest example
60
+ * const { result } = await request('echo', {
61
+ * input: 'Hello, AGIRAILS!',
62
+ * budget: 1
63
+ * });
64
+ * console.log(result); // 'Hello, AGIRAILS!'
65
+ *
66
+ * // With progress callback
67
+ * const { result } = await request('translation', {
68
+ * input: { text: 'Hello', from: 'en', to: 'de' },
69
+ * budget: 5,
70
+ * onProgress: (status) => {
71
+ * console.log(`${status.state}: ${status.progress}%`);
72
+ * }
73
+ * });
74
+ *
75
+ * // With specific provider
76
+ * const { result } = await request('image-gen', {
77
+ * input: { prompt: 'A beautiful sunset' },
78
+ * budget: 10,
79
+ * provider: '0x1234...abcd'
80
+ * });
81
+ * ```
82
+ */
83
+ async function request(service, options) {
84
+ // SECURITY FIX (H-2): Validate service name to prevent injection
85
+ const validatedService = (0, security_1.validateServiceName)(service);
86
+ const logger = new Logger_1.Logger({ source: 'request' });
87
+ // Find provider
88
+ const provider = findProvider(validatedService, options.provider);
89
+ if (!provider) {
90
+ throw new errors_1.NoProviderFoundError(validatedService, {
91
+ availableProviders: ServiceDirectory_1.serviceDirectory.findProviders(validatedService),
92
+ });
93
+ }
94
+ // SECURITY FIX (RPCURL): Use rpcUrl from options or fallback to network default
95
+ // This allows Level0 request() to work with testnet/mainnet without requiring
96
+ // explicit rpcUrl if user is okay with public RPC endpoints.
97
+ let rpcUrl = options.rpcUrl;
98
+ if (!rpcUrl && (options.network === 'testnet' || options.network === 'mainnet')) {
99
+ // Import getNetwork to get default rpcUrl from network config
100
+ const { getNetwork } = await Promise.resolve().then(() => __importStar(require('../config/networks')));
101
+ const networkName = options.network === 'testnet' ? 'base-sepolia' : 'base-mainnet';
102
+ const networkConfig = getNetwork(networkName);
103
+ rpcUrl = networkConfig.rpcUrl;
104
+ logger.info(`Using default RPC URL for ${networkName}: ${rpcUrl}`);
105
+ }
106
+ // Create ACTP client
107
+ const client = await ACTPClient_1.ACTPClient.create({
108
+ mode: options.network === 'testnet' ? 'testnet' : options.network === 'mainnet' ? 'mainnet' : 'mock',
109
+ requesterAddress: getRequesterAddress(options.wallet),
110
+ stateDirectory: options.stateDirectory,
111
+ privateKey: getPrivateKey(options.wallet),
112
+ rpcUrl,
113
+ });
114
+ // Calculate deadline
115
+ const deadline = calculateDeadline(options.deadline, options.timeout);
116
+ // Create transaction with service metadata
117
+ const startTime = Date.now();
118
+ try {
119
+ const requesterAddress = getRequesterAddress(options.wallet);
120
+ const amountWei = (options.budget * 1000000).toString(); // Convert to USDC wei (6 decimals)
121
+ // In mock mode, ensure requester has enough funds
122
+ // This is a convenience feature for testing - won't exist in production
123
+ if (client.runtime && 'mintTokens' in client.runtime) {
124
+ const mockRuntime = client.runtime;
125
+ const balance = await mockRuntime.getBalance(requesterAddress);
126
+ const balanceBigInt = BigInt(balance);
127
+ const amountBigInt = BigInt(amountWei);
128
+ if (balanceBigInt < amountBigInt) {
129
+ // Mint enough tokens (with some buffer)
130
+ const toMint = (amountBigInt - balanceBigInt + BigInt(10000000)).toString(); // +10 USDC buffer
131
+ await mockRuntime.mintTokens(requesterAddress, toMint);
132
+ }
133
+ }
134
+ // ARCHITECTURE FIX: Service metadata handling
135
+ // - MockRuntime: Store plaintext for provider matching and input extraction
136
+ // - BlockchainRuntime: Hashes plaintext internally before sending on-chain
137
+ //
138
+ // Provider needs plaintext to:
139
+ // 1. Match service name to handler (findServiceHandler)
140
+ // 2. Extract input data for job execution (extractJobInput)
141
+ //
142
+ // On-chain storage uses bytes32 hash (BlockchainRuntime.validateServiceHash handles this)
143
+ const serviceMetadata = JSON.stringify({
144
+ service: validatedService,
145
+ input: options.input,
146
+ timestamp: Date.now(),
147
+ });
148
+ // Create transaction with structured metadata
149
+ // MockRuntime stores as-is, BlockchainRuntime hashes for on-chain
150
+ const txId = await client.runtime.createTransaction({
151
+ provider,
152
+ requester: requesterAddress,
153
+ amount: amountWei,
154
+ deadline,
155
+ disputeWindow: options.disputeWindow ?? 172800, // Default 2 days
156
+ serviceDescription: serviceMetadata, // Structured JSON for provider parsing
157
+ });
158
+ // Call onProgress if provided
159
+ if (options.onProgress) {
160
+ options.onProgress({
161
+ state: 'initiated',
162
+ progress: 10,
163
+ message: 'Transaction created, waiting for provider...',
164
+ });
165
+ }
166
+ // Poll for DELIVERED state (provider completes the job)
167
+ const maxWaitTime = options.timeout ?? 300000; // 5 minutes default
168
+ const pollInterval = 2000; // 2 seconds
169
+ const maxAttempts = Math.floor(maxWaitTime / pollInterval);
170
+ let tx = await client.runtime.getTransaction(txId);
171
+ let attempts = 0;
172
+ let timedOut = false;
173
+ while (tx && tx.state !== 'DELIVERED' && tx.state !== 'SETTLED' && attempts < maxAttempts) {
174
+ // Check for terminal states that indicate failure
175
+ if (tx.state === 'CANCELLED' || tx.state === 'DISPUTED') {
176
+ throw new Error(`Transaction ${tx.state.toLowerCase()}`);
177
+ }
178
+ // Update progress
179
+ if (options.onProgress) {
180
+ const progress = 10 + Math.min(80, (attempts / maxAttempts) * 80);
181
+ options.onProgress({
182
+ state: tx.state.toLowerCase(),
183
+ progress,
184
+ message: `Waiting for delivery (${tx.state})...`,
185
+ });
186
+ }
187
+ // Wait and poll again
188
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
189
+ tx = await client.runtime.getTransaction(txId);
190
+ attempts++;
191
+ }
192
+ // Check if we got a result
193
+ if (!tx || (tx.state !== 'DELIVERED' && tx.state !== 'SETTLED')) {
194
+ timedOut = true;
195
+ // SECURITY FIX (H-3): Auto-cancel transaction on timeout if still in early state
196
+ // This prevents funds from being locked indefinitely if provider never responds
197
+ if (tx && (tx.state === 'INITIATED' || tx.state === 'COMMITTED')) {
198
+ try {
199
+ logger.warn('Transaction timed out, cancelling to release funds', {
200
+ txId,
201
+ state: tx.state,
202
+ });
203
+ // ACTUALLY CANCEL THE TRANSACTION
204
+ // Check if runtime has cancelTransaction method
205
+ if ('cancelTransaction' in client.runtime) {
206
+ await client.runtime.cancelTransaction(txId);
207
+ logger.info('Transaction cancelled successfully', { txId });
208
+ const error = new errors_1.TimeoutError(maxWaitTime, `Transaction cancelled after timeout`);
209
+ error.txId = txId;
210
+ error.wasCancelled = true;
211
+ throw error;
212
+ }
213
+ else {
214
+ // Fallback: Transition to CANCELLED state
215
+ await client.runtime.transitionState(txId, 'CANCELLED');
216
+ logger.info('Transaction cancelled successfully (via transitionState)', { txId });
217
+ const error = new errors_1.TimeoutError(maxWaitTime, `Transaction cancelled after timeout`);
218
+ error.txId = txId;
219
+ error.wasCancelled = true;
220
+ throw error;
221
+ }
222
+ }
223
+ catch (cancelError) {
224
+ logger.error('Failed to cancel timed-out transaction', { txId }, cancelError);
225
+ // Continue with original timeout error
226
+ }
227
+ }
228
+ const error = new errors_1.TimeoutError(maxWaitTime, `waiting for service '${validatedService}' delivery`);
229
+ error.txId = txId;
230
+ error.currentState = tx?.state || 'UNKNOWN';
231
+ throw error;
232
+ }
233
+ // SECURITY FIX (C-3): Safe JSON parsing with schema validation
234
+ // Extract result from delivery proof
235
+ let deliveredResult = {};
236
+ if (tx.deliveryProof) {
237
+ // Define expected schema for delivery proof
238
+ // NOTE: 'type' field with value 'delivery.proof' is the unique wrapper marker
239
+ // (set by ProofGenerator.generateDeliveryProof) that handlers won't naturally return
240
+ const DELIVERY_PROOF_SCHEMA = {
241
+ result: 'any',
242
+ data: 'any',
243
+ metadata: 'object',
244
+ proof: 'string',
245
+ timestamp: 'number',
246
+ contentHash: 'string',
247
+ txId: 'string',
248
+ type: 'string', // Unique marker: 'delivery.proof'
249
+ };
250
+ // Use safeJSONParse with schema validation which:
251
+ // 1. Validates JSON structure
252
+ // 2. Removes __proto__, constructor, prototype properties
253
+ // 3. Prevents prototype pollution attacks
254
+ // 4. Validates against expected schema
255
+ // 5. Checks size limits to prevent DoS
256
+ // 6. Returns null if parsing fails
257
+ const parsed = (0, security_1.safeJSONParse)(tx.deliveryProof, DELIVERY_PROOF_SCHEMA);
258
+ if (parsed !== null) {
259
+ deliveredResult = parsed;
260
+ }
261
+ else {
262
+ // If parsing failed, treat as plain text (but don't execute or eval)
263
+ deliveredResult = { data: tx.deliveryProof };
264
+ logger.warn('Failed to parse delivery proof as JSON', { txId });
265
+ }
266
+ }
267
+ else if (options.network === 'testnet' || options.network === 'mainnet') {
268
+ // KNOWN LIMITATION: BlockchainRuntime doesn't fetch deliveryProof from IPFS yet
269
+ // Result will be empty until this is implemented
270
+ logger.warn('Delivery proof retrieval not yet implemented for testnet/mainnet. ' +
271
+ 'Result may be empty. Use ACTPClient with manual proof handling for production.', { txId, network: options.network });
272
+ }
273
+ // SECURITY FIX (CRITICAL-2): Release escrow only after proper validation
274
+ // For mock mode, auto-release is safe. For testnet/mainnet, require attestation.
275
+ if (tx.state === 'DELIVERED' && tx.escrowId) {
276
+ // Wait for dispute window to expire
277
+ const disputeWindowEnd = (tx.completedAt ?? 0) + tx.disputeWindow;
278
+ const currentTime = client.runtime.time.now();
279
+ if (currentTime >= disputeWindowEnd) {
280
+ // SECURITY FIX (CRITICAL-2): Only auto-release in mock mode
281
+ // For real networks, the requester should manually verify and release
282
+ // or use attestation-based verification
283
+ const isMockMode = options.network !== 'testnet' && options.network !== 'mainnet';
284
+ if (isMockMode) {
285
+ try {
286
+ await client.runtime.releaseEscrow(tx.escrowId);
287
+ }
288
+ catch (error) {
289
+ // Ignore if already released or dispute window still active
290
+ // This is non-critical for result delivery
291
+ }
292
+ }
293
+ else {
294
+ // For testnet/mainnet, log a warning about manual verification
295
+ logger.warn('Auto-release disabled for non-mock networks. ' +
296
+ 'Verify delivery proof and call releaseEscrow() manually, ' +
297
+ 'or enable attestation verification in BlockchainRuntime.', { txId, escrowId: tx.escrowId, network: options.network });
298
+ }
299
+ }
300
+ }
301
+ if (options.onProgress) {
302
+ options.onProgress({
303
+ state: 'settled',
304
+ progress: 100,
305
+ message: 'Transaction completed!',
306
+ });
307
+ }
308
+ // Extract raw handler result from delivery proof wrapper
309
+ // The delivery proof structure is: { type: 'delivery.proof', result: <handler_output>, ... }
310
+ // We return the raw handler output as `result` for better DX
311
+ //
312
+ // IMPORTANT: We check for type === 'delivery.proof' which is the unique marker
313
+ // set by ProofGenerator. This avoids false positives from handlers that happen
314
+ // to return objects with result/contentHash/timestamp fields.
315
+ const isDeliveryProofWrapper = deliveredResult !== null &&
316
+ typeof deliveredResult === 'object' &&
317
+ deliveredResult.type === 'delivery.proof' &&
318
+ 'result' in deliveredResult;
319
+ const rawResult = isDeliveryProofWrapper ? deliveredResult.result : deliveredResult;
320
+ const result = {
321
+ result: rawResult,
322
+ transaction: {
323
+ id: txId,
324
+ provider,
325
+ amount: options.budget,
326
+ fee: options.budget * 0.01, // 1% ACTP fee
327
+ duration: Date.now() - startTime,
328
+ proof: tx.deliveryProof ?? '',
329
+ },
330
+ };
331
+ return result;
332
+ }
333
+ catch (error) {
334
+ // Better error handling
335
+ if (error instanceof errors_1.TimeoutError) {
336
+ throw error;
337
+ }
338
+ // Wrap unknown errors
339
+ throw new Error(`Request failed: ${error instanceof Error ? error.message : String(error)}`);
340
+ }
341
+ }
342
+ exports.request = request;
343
+ /**
344
+ * Find provider for service
345
+ *
346
+ * @param service - Service name
347
+ * @param providerOption - Provider selection strategy
348
+ * @returns Provider address or undefined
349
+ */
350
+ function findProvider(service, providerOption) {
351
+ // If specific provider specified, use it
352
+ if (providerOption && providerOption !== 'any' && providerOption !== 'best' && providerOption !== 'cheapest') {
353
+ return providerOption;
354
+ }
355
+ // Otherwise, find from service directory
356
+ const providers = ServiceDirectory_1.serviceDirectory.findProviders(service);
357
+ if (providers.length === 0) {
358
+ return undefined;
359
+ }
360
+ // For MVP, just return the first provider
361
+ // In V2, implement 'best' and 'cheapest' strategies
362
+ return providers[0];
363
+ }
364
+ /**
365
+ * Get requester address from wallet option
366
+ *
367
+ * SECURITY FIX (HIGH): Properly derive addresses from private keys using ethers
368
+ * Never fabricate addresses or use partial key slices as addresses.
369
+ *
370
+ * @param wallet - Wallet configuration
371
+ * @returns Ethereum address
372
+ * @throws {ValidationError} If address format is invalid
373
+ */
374
+ function getRequesterAddress(wallet) {
375
+ // For mock mode only: generate deterministic address
376
+ // This is only safe because mock mode doesn't involve real funds
377
+ if (!wallet || wallet === 'auto') {
378
+ // Create a valid Ethereum address (40 hex chars) - ONLY for mock mode
379
+ const hex = Buffer.from('requester').toString('hex');
380
+ return '0x' + hex.padEnd(40, '0');
381
+ }
382
+ if (wallet === 'connect') {
383
+ throw new Error('Browser wallet connection not yet implemented');
384
+ }
385
+ if (typeof wallet === 'string') {
386
+ // SECURITY FIX (HIGH): Validate address format
387
+ if (!(0, security_1.isValidAddress)(wallet)) {
388
+ throw new errors_1.ValidationError('wallet', `Invalid Ethereum address format: ${wallet}`);
389
+ }
390
+ return wallet.toLowerCase();
391
+ }
392
+ // SECURITY FIX (HIGH): Derive address from private key using ethers
393
+ // This is the correct way to get address from a private key
394
+ try {
395
+ const walletInstance = new ethers_1.ethers.Wallet(wallet.privateKey);
396
+ return walletInstance.address.toLowerCase();
397
+ }
398
+ catch (error) {
399
+ throw new errors_1.ValidationError('wallet.privateKey', 'Invalid private key format');
400
+ }
401
+ }
402
+ /**
403
+ * Get private key from wallet option
404
+ *
405
+ * SECURITY FIX (HIGH): Validate private key format before use
406
+ *
407
+ * @param wallet - Wallet configuration
408
+ * @returns Private key or undefined
409
+ * @throws {ValidationError} If private key format is invalid
410
+ */
411
+ function getPrivateKey(wallet) {
412
+ if (!wallet || wallet === 'auto' || wallet === 'connect') {
413
+ return undefined;
414
+ }
415
+ // If wallet is a string that looks like a private key (0x + 64 hex chars), use it
416
+ // Otherwise treat it as an address and return undefined
417
+ if (typeof wallet === 'string') {
418
+ // Check if it looks like a private key (0x + 64 hex chars)
419
+ if (/^0x[0-9a-fA-F]{64}$/.test(wallet)) {
420
+ // Validate by trying to create a wallet
421
+ try {
422
+ new ethers_1.ethers.Wallet(wallet);
423
+ return wallet;
424
+ }
425
+ catch {
426
+ throw new errors_1.ValidationError('wallet', 'Invalid private key format');
427
+ }
428
+ }
429
+ // It's an address, not a private key
430
+ return undefined;
431
+ }
432
+ // Validate private key format
433
+ if (wallet.privateKey) {
434
+ try {
435
+ new ethers_1.ethers.Wallet(wallet.privateKey);
436
+ return wallet.privateKey;
437
+ }
438
+ catch {
439
+ throw new errors_1.ValidationError('wallet.privateKey', 'Invalid private key format');
440
+ }
441
+ }
442
+ return undefined;
443
+ }
444
+ /**
445
+ * Calculate deadline timestamp
446
+ *
447
+ * @param deadline - Deadline option (timestamp or Date)
448
+ * @param timeout - Timeout in milliseconds
449
+ * @returns Deadline timestamp (seconds)
450
+ */
451
+ function calculateDeadline(deadline, timeout = 300000 // 5 minutes default
452
+ ) {
453
+ if (deadline) {
454
+ if (deadline instanceof Date) {
455
+ return Math.floor(deadline.getTime() / 1000);
456
+ }
457
+ return deadline;
458
+ }
459
+ // Default: now + timeout
460
+ return Math.floor(Date.now() / 1000) + Math.floor(timeout / 1000);
461
+ }
462
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/level0/request.ts"],"names":[],"mappings":"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"}