safehands-pharos 1.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/.agents/policies/default.json +15 -0
  2. package/.env.example +81 -64
  3. package/README.md +301 -333
  4. package/SECURITY.md +112 -0
  5. package/SKILL.md +59 -0
  6. package/contracts/SafeHandsAttestation.sol +182 -0
  7. package/contracts/SafeHandsRegistry.sol +149 -0
  8. package/dist/agent/SafeHandsGuardianAgent.d.ts +39 -0
  9. package/dist/agent/SafeHandsGuardianAgent.d.ts.map +1 -0
  10. package/dist/agent/SafeHandsGuardianAgent.js +98 -0
  11. package/dist/agent/SafeHandsGuardianAgent.js.map +1 -0
  12. package/dist/agent/agentDecisionFormatter.d.ts +43 -0
  13. package/dist/agent/agentDecisionFormatter.d.ts.map +1 -0
  14. package/dist/agent/agentDecisionFormatter.js +96 -0
  15. package/dist/agent/agentDecisionFormatter.js.map +1 -0
  16. package/dist/agent/agentEnrich.d.ts +28 -0
  17. package/dist/agent/agentEnrich.d.ts.map +1 -0
  18. package/dist/agent/agentEnrich.js +99 -0
  19. package/dist/agent/agentEnrich.js.map +1 -0
  20. package/dist/agent/agentIntentClassifier.d.ts +44 -0
  21. package/dist/agent/agentIntentClassifier.d.ts.map +1 -0
  22. package/dist/agent/agentIntentClassifier.js +77 -0
  23. package/dist/agent/agentIntentClassifier.js.map +1 -0
  24. package/dist/agent/agentPolicyResolver.d.ts +44 -0
  25. package/dist/agent/agentPolicyResolver.d.ts.map +1 -0
  26. package/dist/agent/agentPolicyResolver.js +94 -0
  27. package/dist/agent/agentPolicyResolver.js.map +1 -0
  28. package/dist/agent/agentRuntime.d.ts +12 -0
  29. package/dist/agent/agentRuntime.d.ts.map +1 -0
  30. package/dist/agent/agentRuntime.js +31 -0
  31. package/dist/agent/agentRuntime.js.map +1 -0
  32. package/dist/agent/agentToolRouter.d.ts +24 -0
  33. package/dist/agent/agentToolRouter.d.ts.map +1 -0
  34. package/dist/agent/agentToolRouter.js +89 -0
  35. package/dist/agent/agentToolRouter.js.map +1 -0
  36. package/dist/agent/guardianOperator.d.ts +35 -0
  37. package/dist/agent/guardianOperator.d.ts.map +1 -0
  38. package/dist/agent/guardianOperator.js +65 -0
  39. package/dist/agent/guardianOperator.js.map +1 -0
  40. package/dist/agent/index.d.ts +8 -0
  41. package/dist/agent/index.d.ts.map +1 -0
  42. package/dist/agent/index.js +14 -0
  43. package/dist/agent/index.js.map +1 -0
  44. package/dist/api/activityRoutes.d.ts +70 -0
  45. package/dist/api/activityRoutes.d.ts.map +1 -0
  46. package/dist/api/activityRoutes.js +100 -0
  47. package/dist/api/activityRoutes.js.map +1 -0
  48. package/dist/api/agentRoutes.d.ts +16 -0
  49. package/dist/api/agentRoutes.d.ts.map +1 -0
  50. package/dist/api/agentRoutes.js +37 -0
  51. package/dist/api/agentRoutes.js.map +1 -0
  52. package/dist/api/broadcastRoutes.d.ts +34 -0
  53. package/dist/api/broadcastRoutes.d.ts.map +1 -0
  54. package/dist/api/broadcastRoutes.js +147 -0
  55. package/dist/api/broadcastRoutes.js.map +1 -0
  56. package/dist/api/consolePage.d.ts +2 -0
  57. package/dist/api/consolePage.d.ts.map +1 -0
  58. package/dist/api/consolePage.js +206 -0
  59. package/dist/api/consolePage.js.map +1 -0
  60. package/dist/api/httpHardening.d.ts +75 -0
  61. package/dist/api/httpHardening.d.ts.map +1 -0
  62. package/dist/api/httpHardening.js +122 -0
  63. package/dist/api/httpHardening.js.map +1 -0
  64. package/dist/api/indexerRoutes.d.ts +46 -0
  65. package/dist/api/indexerRoutes.d.ts.map +1 -0
  66. package/dist/api/indexerRoutes.js +75 -0
  67. package/dist/api/indexerRoutes.js.map +1 -0
  68. package/dist/api/paidRoutes.d.ts +8 -0
  69. package/dist/api/paidRoutes.d.ts.map +1 -0
  70. package/dist/api/paidRoutes.js +175 -0
  71. package/dist/api/paidRoutes.js.map +1 -0
  72. package/dist/api/prepareRoutes.d.ts +58 -0
  73. package/dist/api/prepareRoutes.d.ts.map +1 -0
  74. package/dist/api/prepareRoutes.js +90 -0
  75. package/dist/api/prepareRoutes.js.map +1 -0
  76. package/dist/api/response.d.ts +39 -0
  77. package/dist/api/response.d.ts.map +1 -0
  78. package/dist/api/response.js +53 -0
  79. package/dist/api/response.js.map +1 -0
  80. package/dist/api/routes.d.ts +175 -0
  81. package/dist/api/routes.d.ts.map +1 -0
  82. package/dist/api/routes.js +276 -0
  83. package/dist/api/routes.js.map +1 -0
  84. package/dist/api/schemas.d.ts +147 -0
  85. package/dist/api/schemas.d.ts.map +1 -0
  86. package/dist/api/schemas.js +81 -0
  87. package/dist/api/schemas.js.map +1 -0
  88. package/dist/api/server.d.ts +11 -0
  89. package/dist/api/server.d.ts.map +1 -0
  90. package/dist/api/server.js +505 -0
  91. package/dist/api/server.js.map +1 -0
  92. package/dist/api/toolRoutes.d.ts +14 -0
  93. package/dist/api/toolRoutes.d.ts.map +1 -0
  94. package/dist/api/toolRoutes.js +138 -0
  95. package/dist/api/toolRoutes.js.map +1 -0
  96. package/dist/api/walletPrepareRoutes.d.ts +74 -0
  97. package/dist/api/walletPrepareRoutes.d.ts.map +1 -0
  98. package/dist/api/walletPrepareRoutes.js +127 -0
  99. package/dist/api/walletPrepareRoutes.js.map +1 -0
  100. package/dist/api/x402Gate.d.ts +51 -0
  101. package/dist/api/x402Gate.d.ts.map +1 -0
  102. package/dist/api/x402Gate.js +184 -0
  103. package/dist/api/x402Gate.js.map +1 -0
  104. package/dist/cli.d.ts +5 -5
  105. package/dist/cli.d.ts.map +1 -1
  106. package/dist/cli.js +154 -124
  107. package/dist/cli.js.map +1 -1
  108. package/dist/data/ecosystemRegistry.data.d.ts +3 -0
  109. package/dist/data/ecosystemRegistry.data.d.ts.map +1 -0
  110. package/dist/data/ecosystemRegistry.data.js +582 -0
  111. package/dist/data/ecosystemRegistry.data.js.map +1 -0
  112. package/dist/demo.d.ts +1 -1
  113. package/dist/demo.d.ts.map +1 -1
  114. package/dist/demo.js +206 -171
  115. package/dist/demo.js.map +1 -1
  116. package/dist/index.d.ts +2 -2
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +249 -164
  119. package/dist/index.js.map +1 -1
  120. package/dist/init.d.ts +1 -1
  121. package/dist/init.d.ts.map +1 -1
  122. package/dist/init.js +127 -65
  123. package/dist/init.js.map +1 -1
  124. package/dist/lib/analysis/approval.d.ts +29 -0
  125. package/dist/lib/analysis/approval.d.ts.map +1 -0
  126. package/dist/lib/analysis/approval.js +162 -0
  127. package/dist/lib/analysis/approval.js.map +1 -0
  128. package/dist/lib/analysis/calldata.d.ts +60 -0
  129. package/dist/lib/analysis/calldata.d.ts.map +1 -0
  130. package/dist/lib/analysis/calldata.js +349 -0
  131. package/dist/lib/analysis/calldata.js.map +1 -0
  132. package/dist/lib/analysis/contractIntel.d.ts +65 -0
  133. package/dist/lib/analysis/contractIntel.d.ts.map +1 -0
  134. package/dist/lib/analysis/contractIntel.js +320 -0
  135. package/dist/lib/analysis/contractIntel.js.map +1 -0
  136. package/dist/lib/analysis/evm.d.ts +42 -0
  137. package/dist/lib/analysis/evm.d.ts.map +1 -0
  138. package/dist/lib/analysis/evm.js +185 -0
  139. package/dist/lib/analysis/evm.js.map +1 -0
  140. package/dist/lib/analysis/gas.d.ts +4 -0
  141. package/dist/lib/analysis/gas.d.ts.map +1 -0
  142. package/dist/lib/analysis/gas.js +13 -0
  143. package/dist/lib/analysis/gas.js.map +1 -0
  144. package/dist/lib/analysis/index.d.ts +11 -0
  145. package/dist/lib/analysis/index.d.ts.map +1 -0
  146. package/dist/lib/analysis/index.js +16 -0
  147. package/dist/lib/analysis/index.js.map +1 -0
  148. package/dist/lib/analysis/pharosTokens.d.ts +31 -0
  149. package/dist/lib/analysis/pharosTokens.d.ts.map +1 -0
  150. package/dist/lib/analysis/pharosTokens.js +78 -0
  151. package/dist/lib/analysis/pharosTokens.js.map +1 -0
  152. package/dist/lib/analysis/safeTx.d.ts +27 -0
  153. package/dist/lib/analysis/safeTx.d.ts.map +1 -0
  154. package/dist/lib/analysis/safeTx.js +118 -0
  155. package/dist/lib/analysis/safeTx.js.map +1 -0
  156. package/dist/lib/analysis/token.d.ts +21 -0
  157. package/dist/lib/analysis/token.d.ts.map +1 -0
  158. package/dist/lib/analysis/token.js +151 -0
  159. package/dist/lib/analysis/token.js.map +1 -0
  160. package/dist/lib/analysis/types.d.ts +49 -0
  161. package/dist/lib/analysis/types.d.ts.map +1 -0
  162. package/dist/lib/analysis/types.js +10 -0
  163. package/dist/lib/analysis/types.js.map +1 -0
  164. package/dist/lib/analysis/x402.d.ts +24 -0
  165. package/dist/lib/analysis/x402.d.ts.map +1 -0
  166. package/dist/lib/analysis/x402.js +60 -0
  167. package/dist/lib/analysis/x402.js.map +1 -0
  168. package/dist/lib/auditLog.d.ts +1 -0
  169. package/dist/lib/auditLog.d.ts.map +1 -1
  170. package/dist/lib/auditLog.js +0 -0
  171. package/dist/lib/auditLog.js.map +1 -1
  172. package/dist/lib/config.d.ts +77 -0
  173. package/dist/lib/config.d.ts.map +1 -0
  174. package/dist/lib/config.js +120 -0
  175. package/dist/lib/config.js.map +1 -0
  176. package/dist/lib/constants.d.ts +452 -291
  177. package/dist/lib/constants.d.ts.map +1 -1
  178. package/dist/lib/constants.js +509 -292
  179. package/dist/lib/constants.js.map +1 -1
  180. package/dist/lib/dodoApi.d.ts +101 -78
  181. package/dist/lib/dodoApi.d.ts.map +1 -1
  182. package/dist/lib/dodoApi.js +259 -196
  183. package/dist/lib/dodoApi.js.map +1 -1
  184. package/dist/lib/ecosystemRegistry.d.ts +116 -0
  185. package/dist/lib/ecosystemRegistry.d.ts.map +1 -0
  186. package/dist/lib/ecosystemRegistry.js +178 -0
  187. package/dist/lib/ecosystemRegistry.js.map +1 -0
  188. package/dist/lib/envLoader.d.ts +2 -0
  189. package/dist/lib/envLoader.d.ts.map +1 -0
  190. package/dist/lib/envLoader.js +65 -0
  191. package/dist/lib/envLoader.js.map +1 -0
  192. package/dist/lib/goldsky.d.ts +58 -0
  193. package/dist/lib/goldsky.d.ts.map +1 -0
  194. package/dist/lib/goldsky.js +275 -0
  195. package/dist/lib/goldsky.js.map +1 -0
  196. package/dist/lib/guardian/decision.d.ts +23 -0
  197. package/dist/lib/guardian/decision.d.ts.map +1 -0
  198. package/dist/lib/guardian/decision.js +40 -0
  199. package/dist/lib/guardian/decision.js.map +1 -0
  200. package/dist/lib/http.d.ts +13 -14
  201. package/dist/lib/http.d.ts.map +1 -1
  202. package/dist/lib/http.js +383 -118
  203. package/dist/lib/http.js.map +1 -1
  204. package/dist/lib/managedExecution.d.ts +19 -0
  205. package/dist/lib/managedExecution.d.ts.map +1 -0
  206. package/dist/lib/managedExecution.js +64 -0
  207. package/dist/lib/managedExecution.js.map +1 -0
  208. package/dist/lib/merkleBatcher.d.ts +23 -0
  209. package/dist/lib/merkleBatcher.d.ts.map +1 -0
  210. package/dist/lib/merkleBatcher.js +62 -0
  211. package/dist/lib/merkleBatcher.js.map +1 -0
  212. package/dist/lib/networks.d.ts +48 -0
  213. package/dist/lib/networks.d.ts.map +1 -0
  214. package/dist/lib/networks.js +103 -0
  215. package/dist/lib/networks.js.map +1 -0
  216. package/dist/lib/observability/accessContext.d.ts +29 -0
  217. package/dist/lib/observability/accessContext.d.ts.map +1 -0
  218. package/dist/lib/observability/accessContext.js +50 -0
  219. package/dist/lib/observability/accessContext.js.map +1 -0
  220. package/dist/lib/observability/activityStore.d.ts +70 -0
  221. package/dist/lib/observability/activityStore.d.ts.map +1 -0
  222. package/dist/lib/observability/activityStore.js +149 -0
  223. package/dist/lib/observability/activityStore.js.map +1 -0
  224. package/dist/lib/observability/apiKey.d.ts +55 -0
  225. package/dist/lib/observability/apiKey.d.ts.map +1 -0
  226. package/dist/lib/observability/apiKey.js +141 -0
  227. package/dist/lib/observability/apiKey.js.map +1 -0
  228. package/dist/lib/observability/logger.d.ts +30 -0
  229. package/dist/lib/observability/logger.d.ts.map +1 -0
  230. package/dist/lib/observability/logger.js +30 -0
  231. package/dist/lib/observability/logger.js.map +1 -0
  232. package/dist/lib/observability/quota.d.ts +33 -0
  233. package/dist/lib/observability/quota.d.ts.map +1 -0
  234. package/dist/lib/observability/quota.js +49 -0
  235. package/dist/lib/observability/quota.js.map +1 -0
  236. package/dist/lib/observability/requestId.d.ts +8 -0
  237. package/dist/lib/observability/requestId.d.ts.map +1 -0
  238. package/dist/lib/observability/requestId.js +24 -0
  239. package/dist/lib/observability/requestId.js.map +1 -0
  240. package/dist/lib/observability/sanitize.d.ts +77 -0
  241. package/dist/lib/observability/sanitize.d.ts.map +1 -0
  242. package/dist/lib/observability/sanitize.js +228 -0
  243. package/dist/lib/observability/sanitize.js.map +1 -0
  244. package/dist/lib/observability/scopes.d.ts +20 -0
  245. package/dist/lib/observability/scopes.d.ts.map +1 -0
  246. package/dist/lib/observability/scopes.js +77 -0
  247. package/dist/lib/observability/scopes.js.map +1 -0
  248. package/dist/lib/okxDexApi.d.ts +106 -0
  249. package/dist/lib/okxDexApi.d.ts.map +1 -0
  250. package/dist/lib/okxDexApi.js +221 -0
  251. package/dist/lib/okxDexApi.js.map +1 -0
  252. package/dist/lib/persistentJsonStore.d.ts +5 -0
  253. package/dist/lib/persistentJsonStore.d.ts.map +1 -0
  254. package/dist/lib/persistentJsonStore.js +39 -0
  255. package/dist/lib/persistentJsonStore.js.map +1 -0
  256. package/dist/lib/pharos/attestationPublisher.d.ts +50 -0
  257. package/dist/lib/pharos/attestationPublisher.d.ts.map +1 -0
  258. package/dist/lib/pharos/attestationPublisher.js +262 -0
  259. package/dist/lib/pharos/attestationPublisher.js.map +1 -0
  260. package/dist/lib/pharos/ecosystem.d.ts +52 -0
  261. package/dist/lib/pharos/ecosystem.d.ts.map +1 -0
  262. package/dist/lib/pharos/ecosystem.js +431 -0
  263. package/dist/lib/pharos/ecosystem.js.map +1 -0
  264. package/dist/lib/pharos/ecosystemEvidence.d.ts +53 -0
  265. package/dist/lib/pharos/ecosystemEvidence.d.ts.map +1 -0
  266. package/dist/lib/pharos/ecosystemEvidence.js +133 -0
  267. package/dist/lib/pharos/ecosystemEvidence.js.map +1 -0
  268. package/dist/lib/pharos/rpc.d.ts +44 -0
  269. package/dist/lib/pharos/rpc.d.ts.map +1 -0
  270. package/dist/lib/pharos/rpc.js +90 -0
  271. package/dist/lib/pharos/rpc.js.map +1 -0
  272. package/dist/lib/pharos/rpcEvidence.d.ts +49 -0
  273. package/dist/lib/pharos/rpcEvidence.d.ts.map +1 -0
  274. package/dist/lib/pharos/rpcEvidence.js +46 -0
  275. package/dist/lib/pharos/rpcEvidence.js.map +1 -0
  276. package/dist/lib/pharos/rpcMethods.d.ts +46 -0
  277. package/dist/lib/pharos/rpcMethods.d.ts.map +1 -0
  278. package/dist/lib/pharos/rpcMethods.js +176 -0
  279. package/dist/lib/pharos/rpcMethods.js.map +1 -0
  280. package/dist/lib/pharos/spvVerifier.d.ts +47 -0
  281. package/dist/lib/pharos/spvVerifier.d.ts.map +1 -0
  282. package/dist/lib/pharos/spvVerifier.js +105 -0
  283. package/dist/lib/pharos/spvVerifier.js.map +1 -0
  284. package/dist/lib/pharos/userSignedBroadcaster.d.ts +10 -0
  285. package/dist/lib/pharos/userSignedBroadcaster.d.ts.map +1 -0
  286. package/dist/lib/pharos/userSignedBroadcaster.js +50 -0
  287. package/dist/lib/pharos/userSignedBroadcaster.js.map +1 -0
  288. package/dist/lib/pharosClient.d.ts +53 -58
  289. package/dist/lib/pharosClient.d.ts.map +1 -1
  290. package/dist/lib/pharosClient.js +56 -63
  291. package/dist/lib/pharosClient.js.map +1 -1
  292. package/dist/lib/policy/actionPolicyEngine.d.ts +89 -53
  293. package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
  294. package/dist/lib/policy/actionPolicyEngine.js +373 -212
  295. package/dist/lib/policy/actionPolicyEngine.js.map +1 -1
  296. package/dist/lib/policy/agentPolicy.d.ts +29 -0
  297. package/dist/lib/policy/agentPolicy.d.ts.map +1 -0
  298. package/dist/lib/policy/agentPolicy.js +154 -0
  299. package/dist/lib/policy/agentPolicy.js.map +1 -0
  300. package/dist/lib/policy/policyPresets.d.ts +30 -0
  301. package/dist/lib/policy/policyPresets.d.ts.map +1 -0
  302. package/dist/lib/policy/policyPresets.js +124 -0
  303. package/dist/lib/policy/policyPresets.js.map +1 -0
  304. package/dist/lib/policy/writeExecutionGate.d.ts +23 -0
  305. package/dist/lib/policy/writeExecutionGate.d.ts.map +1 -0
  306. package/dist/lib/policy/writeExecutionGate.js +65 -0
  307. package/dist/lib/policy/writeExecutionGate.js.map +1 -0
  308. package/dist/lib/preparedTxStore.d.ts +21 -0
  309. package/dist/lib/preparedTxStore.d.ts.map +1 -0
  310. package/dist/lib/preparedTxStore.js +90 -0
  311. package/dist/lib/preparedTxStore.js.map +1 -0
  312. package/dist/lib/price/chainlinkPushProvider.d.ts +34 -0
  313. package/dist/lib/price/chainlinkPushProvider.d.ts.map +1 -0
  314. package/dist/lib/price/chainlinkPushProvider.js +36 -0
  315. package/dist/lib/price/chainlinkPushProvider.js.map +1 -0
  316. package/dist/lib/price/feedRegistry.d.ts +26 -0
  317. package/dist/lib/price/feedRegistry.d.ts.map +1 -0
  318. package/dist/lib/price/feedRegistry.js +67 -0
  319. package/dist/lib/price/feedRegistry.js.map +1 -0
  320. package/dist/lib/price/priceResolver.d.ts +35 -0
  321. package/dist/lib/price/priceResolver.d.ts.map +1 -0
  322. package/dist/lib/price/priceResolver.js +246 -0
  323. package/dist/lib/price/priceResolver.js.map +1 -0
  324. package/dist/lib/price/supraProvider.d.ts +9 -0
  325. package/dist/lib/price/supraProvider.d.ts.map +1 -0
  326. package/dist/lib/price/supraProvider.js +17 -0
  327. package/dist/lib/price/supraProvider.js.map +1 -0
  328. package/dist/lib/price/types.d.ts +67 -0
  329. package/dist/lib/price/types.d.ts.map +1 -0
  330. package/dist/lib/price/types.js +7 -0
  331. package/dist/lib/price/types.js.map +1 -0
  332. package/dist/lib/productionGuards.d.ts +16 -0
  333. package/dist/lib/productionGuards.d.ts.map +1 -0
  334. package/dist/lib/productionGuards.js +93 -0
  335. package/dist/lib/productionGuards.js.map +1 -0
  336. package/dist/lib/recipientSafety.d.ts +5 -0
  337. package/dist/lib/recipientSafety.d.ts.map +1 -0
  338. package/dist/lib/recipientSafety.js +28 -0
  339. package/dist/lib/recipientSafety.js.map +1 -0
  340. package/dist/lib/riskEngine.d.ts +45 -26
  341. package/dist/lib/riskEngine.d.ts.map +1 -1
  342. package/dist/lib/riskEngine.js +346 -283
  343. package/dist/lib/riskEngine.js.map +1 -1
  344. package/dist/lib/riskInclusion.d.ts +72 -0
  345. package/dist/lib/riskInclusion.d.ts.map +1 -0
  346. package/dist/lib/riskInclusion.js +252 -0
  347. package/dist/lib/riskInclusion.js.map +1 -0
  348. package/dist/lib/safeHandsRegistry.d.ts +32 -0
  349. package/dist/lib/safeHandsRegistry.d.ts.map +1 -0
  350. package/dist/lib/safeHandsRegistry.js +151 -0
  351. package/dist/lib/safeHandsRegistry.js.map +1 -0
  352. package/dist/lib/signer/index.d.ts +24 -24
  353. package/dist/lib/signer/index.d.ts.map +1 -1
  354. package/dist/lib/signer/index.js +110 -88
  355. package/dist/lib/signer/index.js.map +1 -1
  356. package/dist/lib/spendAccumulator.d.ts +24 -1
  357. package/dist/lib/spendAccumulator.d.ts.map +1 -1
  358. package/dist/lib/spendAccumulator.js +76 -6
  359. package/dist/lib/spendAccumulator.js.map +1 -1
  360. package/dist/lib/toolResponse.d.ts +30 -25
  361. package/dist/lib/toolResponse.d.ts.map +1 -1
  362. package/dist/lib/toolResponse.js +57 -53
  363. package/dist/lib/toolResponse.js.map +1 -1
  364. package/dist/lib/validation.d.ts +7 -0
  365. package/dist/lib/validation.d.ts.map +1 -0
  366. package/dist/lib/validation.js +62 -0
  367. package/dist/lib/validation.js.map +1 -0
  368. package/dist/lib/wallet/index.d.ts +33 -37
  369. package/dist/lib/wallet/index.d.ts.map +1 -1
  370. package/dist/lib/wallet/index.js +141 -128
  371. package/dist/lib/wallet/index.js.map +1 -1
  372. package/dist/lib/x402ReplayStore.d.ts +6 -0
  373. package/dist/lib/x402ReplayStore.d.ts.map +1 -0
  374. package/dist/lib/x402ReplayStore.js +79 -0
  375. package/dist/lib/x402ReplayStore.js.map +1 -0
  376. package/dist/safehands.zip +0 -0
  377. package/dist/sdk.d.ts +14 -0
  378. package/dist/sdk.d.ts.map +1 -0
  379. package/dist/sdk.js +25 -0
  380. package/dist/sdk.js.map +1 -0
  381. package/dist/tools/approveToken.d.ts +66 -45
  382. package/dist/tools/approveToken.d.ts.map +1 -1
  383. package/dist/tools/approveToken.js +152 -85
  384. package/dist/tools/approveToken.js.map +1 -1
  385. package/dist/tools/assessRisk.d.ts +66 -79
  386. package/dist/tools/assessRisk.d.ts.map +1 -1
  387. package/dist/tools/assessRisk.js +63 -104
  388. package/dist/tools/assessRisk.js.map +1 -1
  389. package/dist/tools/checkAllowance.d.ts +49 -43
  390. package/dist/tools/checkAllowance.d.ts.map +1 -1
  391. package/dist/tools/checkAllowance.js +78 -56
  392. package/dist/tools/checkAllowance.js.map +1 -1
  393. package/dist/tools/checkTokenSecurity.d.ts +103 -46
  394. package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
  395. package/dist/tools/checkTokenSecurity.js +240 -95
  396. package/dist/tools/checkTokenSecurity.js.map +1 -1
  397. package/dist/tools/createAgentWallet.d.ts +30 -26
  398. package/dist/tools/createAgentWallet.d.ts.map +1 -1
  399. package/dist/tools/createAgentWallet.js +87 -58
  400. package/dist/tools/createAgentWallet.js.map +1 -1
  401. package/dist/tools/estimateGas.d.ts +84 -79
  402. package/dist/tools/estimateGas.d.ts.map +1 -1
  403. package/dist/tools/estimateGas.js +130 -124
  404. package/dist/tools/estimateGas.js.map +1 -1
  405. package/dist/tools/executeSwap.d.ts +109 -61
  406. package/dist/tools/executeSwap.d.ts.map +1 -1
  407. package/dist/tools/executeSwap.js +289 -141
  408. package/dist/tools/executeSwap.js.map +1 -1
  409. package/dist/tools/explainRisk.d.ts +29 -29
  410. package/dist/tools/explainRisk.d.ts.map +1 -1
  411. package/dist/tools/explainRisk.js +33 -32
  412. package/dist/tools/explainRisk.js.map +1 -1
  413. package/dist/tools/getAgentPolicy.d.ts +15 -0
  414. package/dist/tools/getAgentPolicy.d.ts.map +1 -0
  415. package/dist/tools/getAgentPolicy.js +16 -0
  416. package/dist/tools/getAgentPolicy.js.map +1 -0
  417. package/dist/tools/getAgentReputation.d.ts +31 -0
  418. package/dist/tools/getAgentReputation.d.ts.map +1 -0
  419. package/dist/tools/getAgentReputation.js +44 -0
  420. package/dist/tools/getAgentReputation.js.map +1 -0
  421. package/dist/tools/getAgentWallet.d.ts +21 -21
  422. package/dist/tools/getAgentWallet.d.ts.map +1 -1
  423. package/dist/tools/getAgentWallet.js +37 -27
  424. package/dist/tools/getAgentWallet.js.map +1 -1
  425. package/dist/tools/getAgentWalletBalance.d.ts +11 -11
  426. package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
  427. package/dist/tools/getAgentWalletBalance.js +102 -70
  428. package/dist/tools/getAgentWalletBalance.js.map +1 -1
  429. package/dist/tools/getExecutionHistory.d.ts +49 -49
  430. package/dist/tools/getExecutionHistory.d.ts.map +1 -1
  431. package/dist/tools/getExecutionHistory.js +148 -154
  432. package/dist/tools/getExecutionHistory.js.map +1 -1
  433. package/dist/tools/getGasPrice.d.ts +43 -43
  434. package/dist/tools/getGasPrice.d.ts.map +0 -0
  435. package/dist/tools/getGasPrice.js +59 -59
  436. package/dist/tools/getGasPrice.js.map +1 -1
  437. package/dist/tools/getPoolInfo.d.ts +75 -75
  438. package/dist/tools/getPoolInfo.d.ts.map +1 -1
  439. package/dist/tools/getPoolInfo.js +142 -137
  440. package/dist/tools/getPoolInfo.js.map +1 -1
  441. package/dist/tools/getSpvProof.d.ts +24 -0
  442. package/dist/tools/getSpvProof.d.ts.map +1 -0
  443. package/dist/tools/getSpvProof.js +64 -0
  444. package/dist/tools/getSpvProof.js.map +1 -0
  445. package/dist/tools/getTokenPrice.d.ts +56 -113
  446. package/dist/tools/getTokenPrice.d.ts.map +1 -1
  447. package/dist/tools/getTokenPrice.js +110 -117
  448. package/dist/tools/getTokenPrice.js.map +1 -1
  449. package/dist/tools/getTransactionStatus.d.ts +43 -43
  450. package/dist/tools/getTransactionStatus.d.ts.map +0 -0
  451. package/dist/tools/getTransactionStatus.js +59 -59
  452. package/dist/tools/getTransactionStatus.js.map +0 -0
  453. package/dist/tools/getWalletBalance.d.ts +103 -68
  454. package/dist/tools/getWalletBalance.d.ts.map +1 -1
  455. package/dist/tools/getWalletBalance.js +127 -87
  456. package/dist/tools/getWalletBalance.js.map +1 -1
  457. package/dist/tools/publishRiskScore.d.ts +85 -63
  458. package/dist/tools/publishRiskScore.d.ts.map +1 -1
  459. package/dist/tools/publishRiskScore.js +136 -88
  460. package/dist/tools/publishRiskScore.js.map +1 -1
  461. package/dist/tools/queryGoldsky.d.ts +20 -0
  462. package/dist/tools/queryGoldsky.d.ts.map +1 -0
  463. package/dist/tools/queryGoldsky.js +29 -0
  464. package/dist/tools/queryGoldsky.js.map +1 -0
  465. package/dist/tools/queryRiskRegistry.d.ts +38 -38
  466. package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
  467. package/dist/tools/queryRiskRegistry.js +59 -55
  468. package/dist/tools/queryRiskRegistry.js.map +1 -1
  469. package/dist/tools/safehandsPreflightCheck.d.ts +92 -77
  470. package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
  471. package/dist/tools/safehandsPreflightCheck.js +174 -47
  472. package/dist/tools/safehandsPreflightCheck.js.map +1 -1
  473. package/dist/tools/safehandsRiskReport.d.ts +96 -81
  474. package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
  475. package/dist/tools/safehandsRiskReport.js +48 -28
  476. package/dist/tools/safehandsRiskReport.js.map +1 -1
  477. package/dist/tools/safehandsSafeExecute.d.ts +20 -20
  478. package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
  479. package/dist/tools/safehandsSafeExecute.js +164 -81
  480. package/dist/tools/safehandsSafeExecute.js.map +1 -1
  481. package/dist/tools/safehandsWalletHealth.d.ts +28 -14
  482. package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
  483. package/dist/tools/safehandsWalletHealth.js +145 -103
  484. package/dist/tools/safehandsWalletHealth.js.map +1 -1
  485. package/dist/tools/safehandsX402Preflight.d.ts +26 -26
  486. package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
  487. package/dist/tools/safehandsX402Preflight.js +86 -65
  488. package/dist/tools/safehandsX402Preflight.js.map +1 -1
  489. package/dist/tools/sendPayment.d.ts +63 -57
  490. package/dist/tools/sendPayment.d.ts.map +1 -1
  491. package/dist/tools/sendPayment.js +144 -117
  492. package/dist/tools/sendPayment.js.map +1 -1
  493. package/dist/tools/setAgentPolicy.d.ts +75 -0
  494. package/dist/tools/setAgentPolicy.d.ts.map +1 -0
  495. package/dist/tools/setAgentPolicy.js +80 -0
  496. package/dist/tools/setAgentPolicy.js.map +1 -0
  497. package/dist/tools/simulateTransaction.d.ts +64 -60
  498. package/dist/tools/simulateTransaction.d.ts.map +1 -1
  499. package/dist/tools/simulateTransaction.js +116 -83
  500. package/dist/tools/simulateTransaction.js.map +1 -1
  501. package/dist/tools/tokenRegistryStatus.d.ts +46 -26
  502. package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
  503. package/dist/tools/tokenRegistryStatus.js +126 -96
  504. package/dist/tools/tokenRegistryStatus.js.map +1 -1
  505. package/dist/tools/verifyRiskInclusion.d.ts +59 -0
  506. package/dist/tools/verifyRiskInclusion.d.ts.map +1 -0
  507. package/dist/tools/verifyRiskInclusion.js +40 -0
  508. package/dist/tools/verifyRiskInclusion.js.map +1 -0
  509. package/dist/tools/x402PayAndFetch.d.ts +87 -81
  510. package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
  511. package/dist/tools/x402PayAndFetch.js +295 -152
  512. package/dist/tools/x402PayAndFetch.js.map +1 -1
  513. package/dist/worker.d.ts +3 -0
  514. package/dist/worker.d.ts.map +1 -0
  515. package/dist/worker.js +39 -0
  516. package/dist/worker.js.map +1 -0
  517. package/dist/x402Server.d.ts +1 -1
  518. package/dist/x402Server.d.ts.map +1 -1
  519. package/dist/x402Server.js +409 -252
  520. package/dist/x402Server.js.map +1 -1
  521. package/docs/REVIEWER_QUICKSTART.md +113 -0
  522. package/docs/SAFEHANDS_REVIEWER_DEMO_SCRIPT.md +228 -0
  523. package/package.json +130 -83
  524. package/contracts/RiskRegistry.json +0 -223
  525. package/contracts/RiskRegistry.sol +0 -58
  526. package/dist/lib/testDodoLive.d.ts +0 -2
  527. package/dist/lib/testDodoLive.d.ts.map +0 -1
  528. package/dist/lib/testDodoLive.js +0 -105
  529. package/dist/lib/testDodoLive.js.map +0 -1
  530. package/dist/lib/testLiveSafehands.d.ts +0 -2
  531. package/dist/lib/testLiveSafehands.d.ts.map +0 -1
  532. package/dist/lib/testLiveSafehands.js +0 -93
  533. package/dist/lib/testLiveSafehands.js.map +0 -1
  534. package/dist/lib/testRpc.d.ts +0 -2
  535. package/dist/lib/testRpc.d.ts.map +0 -1
  536. package/dist/lib/testRpc.js +0 -30
  537. package/dist/lib/testRpc.js.map +0 -1
  538. package/dist/lib/testRpcLive.d.ts +0 -2
  539. package/dist/lib/testRpcLive.d.ts.map +0 -1
  540. package/dist/lib/testRpcLive.js +0 -89
  541. package/dist/lib/testRpcLive.js.map +0 -1
  542. package/dist/lib/testTools.d.ts +0 -2
  543. package/dist/lib/testTools.d.ts.map +0 -1
  544. package/dist/lib/testTools.js +0 -398
  545. package/dist/lib/testTools.js.map +0 -1
  546. package/dist/lib/testX402Live.d.ts +0 -2
  547. package/dist/lib/testX402Live.d.ts.map +0 -1
  548. package/dist/lib/testX402Live.js +0 -160
  549. package/dist/lib/testX402Live.js.map +0 -1
  550. package/dist/scripts/checkDeploy.d.ts +0 -2
  551. package/dist/scripts/checkDeploy.d.ts.map +0 -1
  552. package/dist/scripts/checkDeploy.js +0 -25
  553. package/dist/scripts/checkDeploy.js.map +0 -1
  554. package/dist/scripts/deployRegistry.d.ts +0 -2
  555. package/dist/scripts/deployRegistry.d.ts.map +0 -1
  556. package/dist/scripts/deployRegistry.js +0 -101
  557. package/dist/scripts/deployRegistry.js.map +0 -1
  558. package/dist/scripts/testRegistry.d.ts +0 -2
  559. package/dist/scripts/testRegistry.d.ts.map +0 -1
  560. package/dist/scripts/testRegistry.js +0 -44
  561. package/dist/scripts/testRegistry.js.map +0 -1
  562. package/examples/dashboard/index.html +0 -337
  563. package/examples/pharos-skill-engine/SKILL.safehands.md +0 -85
  564. package/examples/pharos-skill-engine/assets/safehands/example-actions.json +0 -49
  565. package/examples/pharos-skill-engine/assets/safehands/policy-defaults.json +0 -11
  566. package/examples/pharos-skill-engine/references/safehands.md +0 -345
  567. package/examples/scenario-hack.ts +0 -38
  568. package/skill/SKILL.md +0 -133
  569. package/skill/assets/safehands/example-actions.json +0 -49
  570. package/skill/assets/safehands/policy-defaults.json +0 -11
  571. package/skill/references/safehands.md +0 -345
@@ -1,82 +1,97 @@
1
- import { z } from "zod";
2
- import { type ToolResponse } from "../lib/toolResponse.js";
3
- export declare const safehandsRiskReportSchema: z.ZodObject<{
4
- actionType: z.ZodEnum<["send_payment", "approve_token", "execute_swap", "x402_pay_and_fetch", "publish_risk_score", "custom_contract_call"]>;
5
- chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6
- environment: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
- isMainnet: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8
- amount: z.ZodOptional<z.ZodString>;
9
- amountUnit: z.ZodOptional<z.ZodEnum<["PHRS", "USDC", "USD", "TOKEN"]>>;
10
- token: z.ZodOptional<z.ZodString>;
11
- tokenAddress: z.ZodOptional<z.ZodString>;
12
- tokenIn: z.ZodOptional<z.ZodString>;
13
- tokenOut: z.ZodOptional<z.ZodString>;
14
- recipient: z.ZodOptional<z.ZodString>;
15
- spender: z.ZodOptional<z.ZodString>;
16
- approvalAmount: z.ZodOptional<z.ZodString>;
17
- approvalToken: z.ZodOptional<z.ZodString>;
18
- approvalUnlimited: z.ZodOptional<z.ZodBoolean>;
19
- url: z.ZodOptional<z.ZodString>;
20
- paymentAmountUsdc: z.ZodOptional<z.ZodString>;
21
- paymentTokenAddress: z.ZodDefault<z.ZodOptional<z.ZodString>>;
22
- signerAvailable: z.ZodOptional<z.ZodBoolean>;
23
- tokenSecurityStatus: z.ZodOptional<z.ZodEnum<["ok", "unavailable", "unknown"]>>;
24
- recipientVerified: z.ZodOptional<z.ZodBoolean>;
25
- spenderVerified: z.ZodOptional<z.ZodBoolean>;
26
- requiresSigner: z.ZodOptional<z.ZodBoolean>;
27
- } & {
28
- includeChecks: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
29
- }, "strip", z.ZodTypeAny, {
30
- environment: string;
31
- actionType: "send_payment" | "approve_token" | "execute_swap" | "x402_pay_and_fetch" | "publish_risk_score" | "custom_contract_call";
32
- chainId: number;
33
- isMainnet: boolean;
34
- paymentTokenAddress: string;
35
- includeChecks: boolean;
36
- spender?: string | undefined;
37
- amount?: string | undefined;
38
- token?: string | undefined;
39
- tokenAddress?: string | undefined;
40
- amountUnit?: "PHRS" | "USDC" | "USD" | "TOKEN" | undefined;
41
- tokenIn?: string | undefined;
42
- tokenOut?: string | undefined;
43
- recipient?: string | undefined;
44
- approvalAmount?: string | undefined;
45
- approvalToken?: string | undefined;
46
- approvalUnlimited?: boolean | undefined;
47
- url?: string | undefined;
48
- paymentAmountUsdc?: string | undefined;
49
- signerAvailable?: boolean | undefined;
50
- tokenSecurityStatus?: "unknown" | "ok" | "unavailable" | undefined;
51
- recipientVerified?: boolean | undefined;
52
- spenderVerified?: boolean | undefined;
53
- requiresSigner?: boolean | undefined;
54
- }, {
55
- actionType: "send_payment" | "approve_token" | "execute_swap" | "x402_pay_and_fetch" | "publish_risk_score" | "custom_contract_call";
56
- spender?: string | undefined;
57
- amount?: string | undefined;
58
- environment?: string | undefined;
59
- token?: string | undefined;
60
- tokenAddress?: string | undefined;
61
- chainId?: number | undefined;
62
- isMainnet?: boolean | undefined;
63
- amountUnit?: "PHRS" | "USDC" | "USD" | "TOKEN" | undefined;
64
- tokenIn?: string | undefined;
65
- tokenOut?: string | undefined;
66
- recipient?: string | undefined;
67
- approvalAmount?: string | undefined;
68
- approvalToken?: string | undefined;
69
- approvalUnlimited?: boolean | undefined;
70
- url?: string | undefined;
71
- paymentAmountUsdc?: string | undefined;
72
- paymentTokenAddress?: string | undefined;
73
- signerAvailable?: boolean | undefined;
74
- tokenSecurityStatus?: "unknown" | "ok" | "unavailable" | undefined;
75
- recipientVerified?: boolean | undefined;
76
- spenderVerified?: boolean | undefined;
77
- requiresSigner?: boolean | undefined;
78
- includeChecks?: boolean | undefined;
79
- }>;
80
- export type SafeHandsRiskReportInput = z.input<typeof safehandsRiskReportSchema>;
81
- export declare function handleSafeHandsRiskReport(raw: SafeHandsRiskReportInput): Promise<ToolResponse<unknown>>;
1
+ import { z } from "zod";
2
+ import { type ToolResponse } from "../lib/toolResponse.js";
3
+ export declare const safehandsRiskReportSchema: z.ZodObject<{
4
+ actionType: z.ZodEnum<["send_payment", "approve_token", "execute_swap", "x402_pay_and_fetch", "publish_risk_score", "custom_contract_call"]>;
5
+ agentId: z.ZodOptional<z.ZodString>;
6
+ chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7
+ environment: z.ZodDefault<z.ZodOptional<z.ZodString>>;
8
+ isMainnet: z.ZodOptional<z.ZodBoolean>;
9
+ amount: z.ZodOptional<z.ZodString>;
10
+ amountUnit: z.ZodOptional<z.ZodEnum<["PROS", "USDC", "USD", "TOKEN"]>>;
11
+ token: z.ZodOptional<z.ZodString>;
12
+ tokenAddress: z.ZodOptional<z.ZodString>;
13
+ tokenIn: z.ZodOptional<z.ZodString>;
14
+ tokenOut: z.ZodOptional<z.ZodString>;
15
+ recipient: z.ZodOptional<z.ZodString>;
16
+ spender: z.ZodOptional<z.ZodString>;
17
+ approvalAmount: z.ZodOptional<z.ZodString>;
18
+ approvalToken: z.ZodOptional<z.ZodString>;
19
+ approvalUnlimited: z.ZodOptional<z.ZodBoolean>;
20
+ url: z.ZodOptional<z.ZodString>;
21
+ paymentAmountUsdc: z.ZodOptional<z.ZodString>;
22
+ paymentTokenAddress: z.ZodDefault<z.ZodOptional<z.ZodString>>;
23
+ signerAvailable: z.ZodOptional<z.ZodBoolean>;
24
+ tokenSecurityStatus: z.ZodOptional<z.ZodEnum<["ok", "unavailable", "unknown"]>>;
25
+ recipientVerified: z.ZodOptional<z.ZodBoolean>;
26
+ spenderVerified: z.ZodOptional<z.ZodBoolean>;
27
+ requiresSigner: z.ZodOptional<z.ZodBoolean>;
28
+ score: z.ZodOptional<z.ZodNumber>;
29
+ targetContract: z.ZodOptional<z.ZodString>;
30
+ data: z.ZodOptional<z.ZodString>;
31
+ } & {
32
+ includeChecks: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
33
+ walletAddress: z.ZodOptional<z.ZodString>;
34
+ }, "strict", z.ZodTypeAny, {
35
+ chainId: number;
36
+ environment: string;
37
+ actionType: "send_payment" | "approve_token" | "execute_swap" | "x402_pay_and_fetch" | "publish_risk_score" | "custom_contract_call";
38
+ paymentTokenAddress: string;
39
+ includeChecks: boolean;
40
+ token?: string | undefined;
41
+ spender?: string | undefined;
42
+ amount?: string | undefined;
43
+ data?: string | undefined;
44
+ url?: string | undefined;
45
+ score?: number | undefined;
46
+ tokenAddress?: string | undefined;
47
+ agentId?: string | undefined;
48
+ isMainnet?: boolean | undefined;
49
+ amountUnit?: "PROS" | "USDC" | "USD" | "TOKEN" | undefined;
50
+ tokenIn?: string | undefined;
51
+ tokenOut?: string | undefined;
52
+ recipient?: string | undefined;
53
+ approvalAmount?: string | undefined;
54
+ approvalToken?: string | undefined;
55
+ approvalUnlimited?: boolean | undefined;
56
+ paymentAmountUsdc?: string | undefined;
57
+ signerAvailable?: boolean | undefined;
58
+ tokenSecurityStatus?: "ok" | "unavailable" | "unknown" | undefined;
59
+ recipientVerified?: boolean | undefined;
60
+ spenderVerified?: boolean | undefined;
61
+ requiresSigner?: boolean | undefined;
62
+ walletAddress?: string | undefined;
63
+ targetContract?: string | undefined;
64
+ }, {
65
+ actionType: "send_payment" | "approve_token" | "execute_swap" | "x402_pay_and_fetch" | "publish_risk_score" | "custom_contract_call";
66
+ token?: string | undefined;
67
+ spender?: string | undefined;
68
+ amount?: string | undefined;
69
+ data?: string | undefined;
70
+ chainId?: number | undefined;
71
+ url?: string | undefined;
72
+ score?: number | undefined;
73
+ environment?: string | undefined;
74
+ tokenAddress?: string | undefined;
75
+ agentId?: string | undefined;
76
+ isMainnet?: boolean | undefined;
77
+ amountUnit?: "PROS" | "USDC" | "USD" | "TOKEN" | undefined;
78
+ tokenIn?: string | undefined;
79
+ tokenOut?: string | undefined;
80
+ recipient?: string | undefined;
81
+ approvalAmount?: string | undefined;
82
+ approvalToken?: string | undefined;
83
+ approvalUnlimited?: boolean | undefined;
84
+ paymentAmountUsdc?: string | undefined;
85
+ paymentTokenAddress?: string | undefined;
86
+ signerAvailable?: boolean | undefined;
87
+ tokenSecurityStatus?: "ok" | "unavailable" | "unknown" | undefined;
88
+ recipientVerified?: boolean | undefined;
89
+ spenderVerified?: boolean | undefined;
90
+ requiresSigner?: boolean | undefined;
91
+ walletAddress?: string | undefined;
92
+ targetContract?: string | undefined;
93
+ includeChecks?: boolean | undefined;
94
+ }>;
95
+ export type SafeHandsRiskReportInput = z.input<typeof safehandsRiskReportSchema>;
96
+ export declare function handleSafeHandsRiskReport(raw: SafeHandsRiskReportInput): Promise<ToolResponse<unknown>>;
82
97
  //# sourceMappingURL=safehandsRiskReport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safehandsRiskReport.d.ts","sourceRoot":"","sources":["../../src/tools/safehandsRiskReport.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI/D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAkB7G"}
1
+ {"version":3,"file":"safehandsRiskReport.d.ts","sourceRoot":"","sources":["../../src/tools/safehandsRiskReport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK/D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAqC7G"}
@@ -1,29 +1,49 @@
1
- // ─── Tool: safehands_risk_report ───────────────────────────────────────
2
- import { z } from "zod";
3
- import { ok } from "../lib/toolResponse.js";
4
- import { explainPolicyResult } from "../lib/policy/actionPolicyEngine.js";
5
- import { handleSafeHandsPreflightCheck, safehandsPreflightCheckSchema } from "./safehandsPreflightCheck.js";
6
- export const safehandsRiskReportSchema = safehandsPreflightCheckSchema.extend({
7
- includeChecks: z.boolean().optional().default(true),
8
- });
9
- export async function handleSafeHandsRiskReport(raw) {
10
- const input = safehandsRiskReportSchema.parse(raw);
11
- const preflight = await handleSafeHandsPreflightCheck(input);
12
- if (!preflight.success)
13
- return preflight;
14
- const data = preflight.data;
15
- return ok({
16
- decision: data.decision,
17
- riskLevel: data.riskLevel,
18
- safeToExecute: data.safeToExecute,
19
- summary: explainPolicyResult(data),
20
- reasons: data.reasons,
21
- requiredActions: data.requiredActions,
22
- checks: input.includeChecks ? data.checks : undefined,
23
- environment: data.environment,
24
- chainId: data.chainId,
25
- isMainnet: data.isMainnet,
26
- source: "safehands_risk_report",
27
- });
28
- }
1
+ import { z } from "zod";
2
+ import { isAddress } from "viem";
3
+ import { ok } from "../lib/toolResponse.js";
4
+ import { explainPolicyResult } from "../lib/policy/actionPolicyEngine.js";
5
+ import { handleSafeHandsPreflightCheck, safehandsPreflightCheckSchema } from "./safehandsPreflightCheck.js";
6
+ import { queryRegistryForTarget } from "../lib/safeHandsRegistry.js";
7
+ export const safehandsRiskReportSchema = safehandsPreflightCheckSchema.extend({
8
+ includeChecks: z.boolean().optional().default(true),
9
+ walletAddress: z.string().optional(),
10
+ });
11
+ export async function handleSafeHandsRiskReport(raw) {
12
+ const input = safehandsRiskReportSchema.parse(raw);
13
+ // Delegate to the preflight core with only its recognized fields. The preflight
14
+ // schema is strict, so the risk-report-only key (includeChecks) must be stripped
15
+ // before delegation; it is still used below to shape the report.
16
+ const { includeChecks, ...preflightInput } = input;
17
+ const preflight = await handleSafeHandsPreflightCheck(preflightInput);
18
+ if (!preflight.success)
19
+ return preflight;
20
+ const data = preflight.data;
21
+ let riskRegistry = null;
22
+ const walletAddr = input.walletAddress || input.recipient;
23
+ if (walletAddr && isAddress(walletAddr)) {
24
+ try {
25
+ riskRegistry = await queryRegistryForTarget(walletAddr);
26
+ }
27
+ catch {
28
+ riskRegistry = {
29
+ version: "safehands-registry",
30
+ error: "SafeHandsRegistry unavailable; local risk evaluation still completed.",
31
+ };
32
+ }
33
+ }
34
+ return ok({
35
+ decision: data.decision,
36
+ riskLevel: data.riskLevel,
37
+ safeToExecute: data.safeToExecute,
38
+ summary: explainPolicyResult(data),
39
+ reasons: data.reasons,
40
+ requiredActions: data.requiredActions,
41
+ checks: includeChecks ? data.checks : undefined,
42
+ environment: data.environment,
43
+ chainId: data.chainId,
44
+ isMainnet: data.isMainnet,
45
+ riskRegistry,
46
+ source: "safehands_risk_report",
47
+ });
48
+ }
29
49
  //# sourceMappingURL=safehandsRiskReport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safehandsRiskReport.js","sourceRoot":"","sources":["../../src/tools/safehandsRiskReport.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAqB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE5G,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC,MAAM,CAAC;IAC5E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAA6B;IAC3E,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAW,CAAC;IACnC,OAAO,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACrD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"safehandsRiskReport.js","sourceRoot":"","sources":["../../src/tools/safehandsRiskReport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,EAAE,EAAqB,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC,MAAM,CAAC;IAC5E,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,GAA6B;IAC3E,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,gFAAgF;IAChF,iFAAiF;IACjF,iEAAiE;IACjE,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,GAAG,KAAK,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAW,CAAC;IAEnC,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS,CAAC;IAC1D,IAAI,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,sBAAsB,CAAC,UAA2B,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG;gBACb,OAAO,EAAE,oBAAoB;gBAC7B,KAAK,EAAE,uEAAuE;aAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY;QACZ,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -1,21 +1,21 @@
1
- import { z } from "zod";
2
- import { type ToolResponse } from "../lib/toolResponse.js";
3
- export declare const safehandsSafeExecuteSchema: z.ZodObject<{
4
- path: z.ZodEnum<["safe_execute_send_payment", "safe_execute_approve_token", "safe_execute_swap", "safe_x402_pay_and_fetch"]>;
5
- execute: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
6
- confirmExecution: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
- action: z.ZodRecord<z.ZodString, z.ZodAny>;
8
- }, "strip", z.ZodTypeAny, {
9
- path: "safe_execute_send_payment" | "safe_execute_approve_token" | "safe_execute_swap" | "safe_x402_pay_and_fetch";
10
- execute: boolean;
11
- confirmExecution: boolean;
12
- action: Record<string, any>;
13
- }, {
14
- path: "safe_execute_send_payment" | "safe_execute_approve_token" | "safe_execute_swap" | "safe_x402_pay_and_fetch";
15
- action: Record<string, any>;
16
- execute?: boolean | undefined;
17
- confirmExecution?: boolean | undefined;
18
- }>;
19
- export type SafeHandsSafeExecuteInput = z.input<typeof safehandsSafeExecuteSchema>;
20
- export declare function handleSafeHandsSafeExecute(raw: SafeHandsSafeExecuteInput): Promise<ToolResponse<unknown>>;
1
+ import { z } from "zod";
2
+ import { type ToolResponse } from "../lib/toolResponse.js";
3
+ export declare const safehandsSafeExecuteSchema: z.ZodObject<{
4
+ path: z.ZodEnum<["safe_execute_send_payment", "safe_execute_approve_token", "safe_execute_swap", "safe_x402_pay_and_fetch"]>;
5
+ execute: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
6
+ confirmExecution: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ action: z.ZodRecord<z.ZodString, z.ZodAny>;
8
+ }, "strict", z.ZodTypeAny, {
9
+ path: "safe_execute_send_payment" | "safe_execute_approve_token" | "safe_execute_swap" | "safe_x402_pay_and_fetch";
10
+ execute: boolean;
11
+ confirmExecution: boolean;
12
+ action: Record<string, any>;
13
+ }, {
14
+ path: "safe_execute_send_payment" | "safe_execute_approve_token" | "safe_execute_swap" | "safe_x402_pay_and_fetch";
15
+ action: Record<string, any>;
16
+ execute?: boolean | undefined;
17
+ confirmExecution?: boolean | undefined;
18
+ }>;
19
+ export type SafeHandsSafeExecuteInput = z.input<typeof safehandsSafeExecuteSchema>;
20
+ export declare function handleSafeHandsSafeExecute(raw: SafeHandsSafeExecuteInput): Promise<ToolResponse<unknown>>;
21
21
  //# sourceMappingURL=safehandsSafeExecute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safehandsSafeExecute.d.ts","sourceRoot":"","sources":["../../src/tools/safehandsSafeExecute.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ/F,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;EAKrC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAenF,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAyD/G"}
1
+ {"version":3,"file":"safehandsSafeExecute.d.ts","sourceRoot":"","sources":["../../src/tools/safehandsSafeExecute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAW/F,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;EAK5B,CAAC;AAEZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAsBnF,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CA0J/G"}
@@ -1,82 +1,165 @@
1
- // ─── Tool: safehands_safe_execute ──────────────────────────────────────
2
- // Guarded execution wrapper so AI agents cannot bypass preflight checks.
3
- // ───────────────────────────────────────────────────────────────────────
4
- import { z } from "zod";
5
- import { fail, ok, requireWriteToolsEnabled } from "../lib/toolResponse.js";
6
- import { getSigner, isSignerFailure } from "../lib/signer/index.js";
7
- import { handleSafeHandsPreflightCheck } from "./safehandsPreflightCheck.js";
8
- import { handleSendPayment } from "./sendPayment.js";
9
- import { handleApproveToken } from "./approveToken.js";
10
- import { handleExecuteSwap } from "./executeSwap.js";
11
- import { handleX402PayAndFetch } from "./x402PayAndFetch.js";
12
- export const safehandsSafeExecuteSchema = z.object({
13
- path: z.enum(["safe_execute_send_payment", "safe_execute_approve_token", "safe_execute_swap", "safe_x402_pay_and_fetch"]),
14
- execute: z.boolean().optional().default(false).describe("Must be true to execute. false returns dry-run guarded report only."),
15
- confirmExecution: z.boolean().optional().default(false).describe("Additional explicit runtime confirmation."),
16
- action: z.record(z.any()).describe("Underlying tool input object"),
17
- });
18
- function toPreflight(path, action, signerAvailable) {
19
- if (path === "safe_execute_send_payment") {
20
- return { actionType: "send_payment", amount: String(action.amount || ""), amountUnit: "PHRS", recipient: String(action.toAddress || ""), recipientVerified: false, requiresSigner: true, signerAvailable };
21
- }
22
- if (path === "safe_execute_approve_token") {
23
- return { actionType: "approve_token", approvalAmount: String(action.amount || ""), approvalToken: String(action.token || ""), approvalUnlimited: action.amount === "max", requiresSigner: true, signerAvailable };
24
- }
25
- if (path === "safe_execute_swap") {
26
- return { actionType: "execute_swap", amount: String(action.amountIn || ""), tokenIn: String(action.tokenIn || ""), tokenOut: String(action.tokenOut || ""), requiresSigner: true, signerAvailable };
27
- }
28
- return { actionType: "x402_pay_and_fetch", url: String(action.url || ""), paymentAmountUsdc: String(action.maxPaymentUsdc || "0.001"), requiresSigner: true, signerAvailable };
29
- }
30
- export async function handleSafeHandsSafeExecute(raw) {
31
- const input = safehandsSafeExecuteSchema.parse(raw);
32
- const writeGuard = requireWriteToolsEnabled("safehands_safe_execute");
33
- if (writeGuard)
34
- return writeGuard;
35
- // Resolve actual signer availability so the preflight report is truthful
36
- const purpose = input.path === "safe_x402_pay_and_fetch" ? "x402" : "write";
37
- const agentId = typeof input.action.agentId === "string" ? input.action.agentId : undefined;
38
- const signerResult = await getSigner(agentId, { purpose });
39
- const signerAvailable = !isSignerFailure(signerResult);
40
- const preflight = await handleSafeHandsPreflightCheck(toPreflight(input.path, input.action, signerAvailable));
41
- if (!preflight.success)
42
- return preflight;
43
- const report = preflight.data;
44
- if (report.decision === "BLOCK") {
45
- return ok({
46
- executed: false,
47
- blocked: true,
48
- safetyReport: report,
49
- executionResult: null,
50
- source: "safehands_safe_execute",
51
- });
52
- }
53
- if (report.decision !== "ALLOW") {
54
- return fail(report.decision === "REQUIRE_CONFIRMATION" ? "CONFIRMATION_REQUIRED" : "POLICY_BLOCKED", `SafeHands did not execute because policy decision is ${report.decision}.`, false, "safehands_safe_execute");
55
- }
56
- if (!input.execute || !input.confirmExecution) {
57
- return ok({
58
- executed: false,
59
- dryRun: true,
60
- reason: "Set execute=true and confirmExecution=true to execute this allowed testnet action.",
61
- safetyReport: report,
62
- executionResult: null,
63
- source: "safehands_safe_execute",
64
- });
65
- }
66
- let executionResult;
67
- if (input.path === "safe_execute_send_payment")
68
- executionResult = await handleSendPayment(input.action);
69
- else if (input.path === "safe_execute_approve_token")
70
- executionResult = await handleApproveToken(input.action);
71
- else if (input.path === "safe_execute_swap")
72
- executionResult = await handleExecuteSwap(input.action);
73
- else
74
- executionResult = await handleX402PayAndFetch(input.action);
75
- return ok({
76
- executed: true,
77
- safetyReport: report,
78
- executionResult,
79
- source: "safehands_safe_execute",
80
- });
81
- }
1
+ import { z } from "zod";
2
+ import { fail, ok, requireWriteToolsEnabled } from "../lib/toolResponse.js";
3
+ import { getSigner, isSignerFailure } from "../lib/signer/index.js";
4
+ import { handleSafeHandsPreflightCheck } from "./safehandsPreflightCheck.js";
5
+ import { handleSendPayment } from "./sendPayment.js";
6
+ import { handleApproveToken } from "./approveToken.js";
7
+ import { handleExecuteSwap } from "./executeSwap.js";
8
+ import { handleX402PayAndFetch } from "./x402PayAndFetch.js";
9
+ import { REQUIRE_AUTHORIZED_AGENT_FOR_WRITE, CHAIN_ID } from "../lib/constants.js";
10
+ import { checkManagedWalletAuthorization } from "../lib/safeHandsRegistry.js";
11
+ import { publicClient } from "../lib/pharosClient.js";
12
+ export const safehandsSafeExecuteSchema = z.object({
13
+ path: z.enum(["safe_execute_send_payment", "safe_execute_approve_token", "safe_execute_swap", "safe_x402_pay_and_fetch"]),
14
+ execute: z.boolean().optional().default(false).describe("Must be true to execute. false returns dry-run guarded report only."),
15
+ confirmExecution: z.boolean().optional().default(false).describe("Additional explicit runtime confirmation."),
16
+ action: z.record(z.any()).describe("Underlying tool input object"),
17
+ }).strict();
18
+ function toPreflight(path, action, signerAvailable) {
19
+ const agentId = typeof action.agentId === "string" ? action.agentId : undefined;
20
+ if (path === "safe_execute_send_payment") {
21
+ return { actionType: "send_payment", agentId, amount: String(action.amount || ""), amountUnit: "PROS", recipient: String(action.toAddress || ""), recipientVerified: false, requiresSigner: true, signerAvailable };
22
+ }
23
+ if (path === "safe_execute_approve_token") {
24
+ return { actionType: "approve_token", agentId, approvalAmount: String(action.amount || ""), approvalToken: String(action.token || ""), approvalUnlimited: action.amount === "max", spender: String(action.spender || ""), requiresSigner: true, signerAvailable };
25
+ }
26
+ if (path === "safe_execute_swap") {
27
+ return { actionType: "execute_swap", agentId, amount: String(action.amountIn || ""), tokenIn: String(action.tokenIn || ""), tokenOut: String(action.tokenOut || ""), requiresSigner: true, signerAvailable };
28
+ }
29
+ return { actionType: "x402_pay_and_fetch", agentId, url: String(action.url || ""), paymentAmountUsdc: String(action.maxPaymentUsdc || "0.001"), requiresSigner: true, signerAvailable };
30
+ }
31
+ function resolveMode(signerMode) {
32
+ if (signerMode === "managed-mainnet")
33
+ return "managed_execution";
34
+ if (signerMode === "env")
35
+ return "env_wallet";
36
+ return "unknown";
37
+ }
38
+ export async function handleSafeHandsSafeExecute(raw) {
39
+ let input;
40
+ try {
41
+ input = safehandsSafeExecuteSchema.parse(raw);
42
+ }
43
+ catch (err) {
44
+ const msg = err instanceof z.ZodError
45
+ ? err.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ")
46
+ : String(err);
47
+ return fail("VALIDATION_ERROR", `safe_execute input validation failed: ${msg}`, false, "safehands_safe_execute");
48
+ }
49
+ const writeGuard = requireWriteToolsEnabled("safehands_safe_execute");
50
+ if (writeGuard)
51
+ return writeGuard;
52
+ // SAFE_EXECUTE_ENABLED is the documented second gate for the auto-execute path:
53
+ // WRITE_TOOLS_ENABLED opens writes; SAFE_EXECUTE_ENABLED specifically authorizes
54
+ // preflight→execute. Enforced here so it is not a decorative env var. Read-only
55
+ // preflight remains available via safehands_preflight_check (needs neither gate).
56
+ if (process.env.SAFE_EXECUTE_ENABLED !== "true") {
57
+ return fail("SAFE_EXECUTE_DISABLED", "safehands_safe_execute is disabled. Set SAFE_EXECUTE_ENABLED=true (in addition to WRITE_TOOLS_ENABLED=true) to enable the preflight→execute path. Read-only preflight is available via safehands_preflight_check.", false, "safehands_safe_execute");
58
+ }
59
+ const purpose = input.path === "safe_x402_pay_and_fetch" ? "x402" : "write";
60
+ const agentId = typeof input.action.agentId === "string" ? input.action.agentId : undefined;
61
+ const signerResult = await getSigner(agentId, { purpose });
62
+ const signerAvailable = !isSignerFailure(signerResult);
63
+ if (signerAvailable && signerResult.mode === "managed-mainnet" && REQUIRE_AUTHORIZED_AGENT_FOR_WRITE) {
64
+ const authCheck = await checkManagedWalletAuthorization(signerResult.address);
65
+ if (!authCheck.authorized) {
66
+ return fail(authCheck.errorCode || "AGENT_WALLET_NOT_AUTHORIZED", authCheck.errorMessage || "Managed wallet is not authorized in SafeHandsRegistry.", false, "safehands_safe_execute");
67
+ }
68
+ try {
69
+ const balance = await publicClient.getBalance({ address: signerResult.address });
70
+ if (balance === 0n) {
71
+ return ok({
72
+ executed: false,
73
+ decision: "REQUIRE_FUNDING",
74
+ requiresFunding: true,
75
+ walletAddress: signerResult.address,
76
+ network: "Pharos Network",
77
+ chainId: CHAIN_ID,
78
+ mode: "managed_execution",
79
+ source: "safehands_safe_execute",
80
+ });
81
+ }
82
+ }
83
+ catch {
84
+ // RPC failed — continue, let execution attempt surface the real error
85
+ }
86
+ }
87
+ const preflight = await handleSafeHandsPreflightCheck(toPreflight(input.path, input.action, signerAvailable));
88
+ if (!preflight.success)
89
+ return preflight;
90
+ const report = preflight.data;
91
+ const mode = signerAvailable ? resolveMode(signerResult.mode) : "unknown";
92
+ if (report.decision === "BLOCK") {
93
+ return ok({
94
+ executed: false,
95
+ blocked: true,
96
+ safetyReport: report,
97
+ executionResult: null,
98
+ mode,
99
+ source: "safehands_safe_execute",
100
+ });
101
+ }
102
+ // PREPARE_ONLY = execution unavailable (read-only deployment) or a funding
103
+ // shortfall. Never auto-execute; hand back the guarded report.
104
+ if (report.decision === "PREPARE_ONLY") {
105
+ return ok({
106
+ executed: false,
107
+ prepareOnly: true,
108
+ decision: "PREPARE_ONLY",
109
+ safetyReport: report,
110
+ executionResult: null,
111
+ mode,
112
+ source: "safehands_safe_execute",
113
+ });
114
+ }
115
+ // ALLOW executes directly; REQUIRE_CONFIRMATION is executable only when the
116
+ // caller explicitly confirms (confirmExecution IS that confirmation). Any other
117
+ // value is a safety-net refusal.
118
+ const requiresConfirmation = report.decision === "REQUIRE_CONFIRMATION";
119
+ if (report.decision !== "ALLOW" && !requiresConfirmation) {
120
+ return fail("POLICY_BLOCKED", `SafeHands did not execute because policy decision is ${report.decision}.`, false, "safehands_safe_execute");
121
+ }
122
+ if (!input.execute || !input.confirmExecution) {
123
+ return ok({
124
+ executed: false,
125
+ dryRun: true,
126
+ requiresConfirmation,
127
+ reason: requiresConfirmation
128
+ ? "Policy is REQUIRE_CONFIRMATION. Set execute=true and confirmExecution=true to proceed after reviewing the safety report."
129
+ : "Set execute=true and confirmExecution=true to execute this allowed mainnet action.",
130
+ safetyReport: report,
131
+ executionResult: null,
132
+ mode,
133
+ source: "safehands_safe_execute",
134
+ });
135
+ }
136
+ // Reaching here means the operator explicitly set execute=true + confirmExecution=true
137
+ // AND the gated preflight returned ALLOW or REQUIRE_CONFIRMATION. Pass confirm=true
138
+ // to the raw handler so its own (independent) confirmation gate does not re-block.
139
+ const confirmedAction = { ...input.action, confirm: true };
140
+ let executionResult;
141
+ if (input.path === "safe_execute_send_payment")
142
+ executionResult = await handleSendPayment(confirmedAction);
143
+ else if (input.path === "safe_execute_approve_token")
144
+ executionResult = await handleApproveToken(confirmedAction);
145
+ else if (input.path === "safe_execute_swap")
146
+ executionResult = await handleExecuteSwap(confirmedAction);
147
+ else
148
+ executionResult = await handleX402PayAndFetch(confirmedAction);
149
+ const execFailed = executionResult &&
150
+ typeof executionResult === "object" &&
151
+ "success" in executionResult &&
152
+ executionResult.success === false;
153
+ if (execFailed) {
154
+ const execErr = executionResult;
155
+ return fail(execErr.error?.code || "EXECUTION_FAILED", execErr.error?.message || "Underlying execution returned success:false.", false, "safehands_safe_execute");
156
+ }
157
+ return ok({
158
+ executed: true,
159
+ safetyReport: report,
160
+ executionResult,
161
+ mode: signerAvailable ? resolveMode(signerResult.mode) : "unknown",
162
+ source: "safehands_safe_execute",
163
+ });
164
+ }
82
165
  //# sourceMappingURL=safehandsSafeExecute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safehandsSafeExecute.js","sourceRoot":"","sources":["../../src/tools/safehandsSafeExecute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safehandsSafeExecute.js","sourceRoot":"","sources":["../../src/tools/safehandsSafeExecute.ts"],"names":[],"mappings":"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"}