safehands-pharos 1.5.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 (561) hide show
  1. package/.agents/policies/default.json +15 -0
  2. package/.env.example +81 -64
  3. package/README.md +301 -444
  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 +1 -1
  105. package/dist/cli.d.ts.map +1 -1
  106. package/dist/cli.js +29 -1
  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 +0 -0
  113. package/dist/demo.d.ts.map +1 -1
  114. package/dist/demo.js +43 -8
  115. package/dist/demo.js.map +1 -1
  116. package/dist/index.d.ts +0 -0
  117. package/dist/index.d.ts.map +0 -0
  118. package/dist/index.js +212 -135
  119. package/dist/index.js.map +1 -1
  120. package/dist/init.d.ts +0 -0
  121. package/dist/init.d.ts.map +1 -1
  122. package/dist/init.js +72 -10
  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 +246 -97
  177. package/dist/lib/constants.d.ts.map +1 -1
  178. package/dist/lib/constants.js +334 -127
  179. package/dist/lib/constants.js.map +1 -1
  180. package/dist/lib/dodoApi.d.ts +26 -3
  181. package/dist/lib/dodoApi.d.ts.map +1 -1
  182. package/dist/lib/dodoApi.js +80 -17
  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 +0 -0
  189. package/dist/lib/envLoader.d.ts.map +0 -0
  190. package/dist/lib/envLoader.js +39 -18
  191. package/dist/lib/envLoader.js.map +1 -1
  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 +0 -1
  201. package/dist/lib/http.d.ts.map +1 -1
  202. package/dist/lib/http.js +297 -32
  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 +5 -10
  289. package/dist/lib/pharosClient.d.ts.map +1 -1
  290. package/dist/lib/pharosClient.js +9 -16
  291. package/dist/lib/pharosClient.js.map +1 -1
  292. package/dist/lib/policy/actionPolicyEngine.d.ts +37 -1
  293. package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
  294. package/dist/lib/policy/actionPolicyEngine.js +213 -52
  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 +19 -0
  341. package/dist/lib/riskEngine.d.ts.map +1 -1
  342. package/dist/lib/riskEngine.js +94 -36
  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 +3 -3
  353. package/dist/lib/signer/index.d.ts.map +1 -1
  354. package/dist/lib/signer/index.js +33 -11
  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 +6 -1
  361. package/dist/lib/toolResponse.d.ts.map +1 -1
  362. package/dist/lib/toolResponse.js +13 -9
  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 +8 -12
  369. package/dist/lib/wallet/index.d.ts.map +1 -1
  370. package/dist/lib/wallet/index.js +48 -35
  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 +31 -10
  382. package/dist/tools/approveToken.d.ts.map +1 -1
  383. package/dist/tools/approveToken.js +91 -24
  384. package/dist/tools/approveToken.js.map +1 -1
  385. package/dist/tools/assessRisk.d.ts +13 -26
  386. package/dist/tools/assessRisk.d.ts.map +1 -1
  387. package/dist/tools/assessRisk.js +34 -75
  388. package/dist/tools/assessRisk.js.map +1 -1
  389. package/dist/tools/checkAllowance.d.ts +9 -3
  390. package/dist/tools/checkAllowance.d.ts.map +1 -1
  391. package/dist/tools/checkAllowance.js +27 -5
  392. package/dist/tools/checkAllowance.js.map +1 -1
  393. package/dist/tools/checkTokenSecurity.d.ts +62 -5
  394. package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
  395. package/dist/tools/checkTokenSecurity.js +166 -21
  396. package/dist/tools/checkTokenSecurity.js.map +1 -1
  397. package/dist/tools/createAgentWallet.d.ts +4 -2
  398. package/dist/tools/createAgentWallet.d.ts.map +1 -1
  399. package/dist/tools/createAgentWallet.js +36 -31
  400. package/dist/tools/createAgentWallet.js.map +1 -1
  401. package/dist/tools/estimateGas.d.ts +7 -2
  402. package/dist/tools/estimateGas.d.ts.map +1 -1
  403. package/dist/tools/estimateGas.js +16 -10
  404. package/dist/tools/estimateGas.js.map +1 -1
  405. package/dist/tools/executeSwap.d.ts +56 -8
  406. package/dist/tools/executeSwap.d.ts.map +1 -1
  407. package/dist/tools/executeSwap.js +194 -46
  408. package/dist/tools/executeSwap.js.map +1 -1
  409. package/dist/tools/explainRisk.d.ts +9 -9
  410. package/dist/tools/explainRisk.d.ts.map +1 -1
  411. package/dist/tools/explainRisk.js +5 -4
  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 +1 -1
  422. package/dist/tools/getAgentWallet.d.ts.map +1 -1
  423. package/dist/tools/getAgentWallet.js +11 -1
  424. package/dist/tools/getAgentWallet.js.map +1 -1
  425. package/dist/tools/getAgentWalletBalance.d.ts +1 -1
  426. package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
  427. package/dist/tools/getAgentWalletBalance.js +58 -26
  428. package/dist/tools/getAgentWalletBalance.js.map +1 -1
  429. package/dist/tools/getExecutionHistory.d.ts +1 -1
  430. package/dist/tools/getExecutionHistory.d.ts.map +1 -1
  431. package/dist/tools/getExecutionHistory.js +13 -19
  432. package/dist/tools/getExecutionHistory.js.map +1 -1
  433. package/dist/tools/getGasPrice.d.ts +3 -3
  434. package/dist/tools/getGasPrice.d.ts.map +0 -0
  435. package/dist/tools/getGasPrice.js +7 -7
  436. package/dist/tools/getGasPrice.js.map +1 -1
  437. package/dist/tools/getPoolInfo.d.ts +17 -17
  438. package/dist/tools/getPoolInfo.d.ts.map +1 -1
  439. package/dist/tools/getPoolInfo.js +14 -9
  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 +28 -85
  446. package/dist/tools/getTokenPrice.d.ts.map +1 -1
  447. package/dist/tools/getTokenPrice.js +87 -94
  448. package/dist/tools/getTokenPrice.js.map +1 -1
  449. package/dist/tools/getTransactionStatus.d.ts +2 -2
  450. package/dist/tools/getTransactionStatus.d.ts.map +0 -0
  451. package/dist/tools/getTransactionStatus.js +0 -0
  452. package/dist/tools/getTransactionStatus.js.map +0 -0
  453. package/dist/tools/getWalletBalance.d.ts +38 -3
  454. package/dist/tools/getWalletBalance.d.ts.map +1 -1
  455. package/dist/tools/getWalletBalance.js +92 -52
  456. package/dist/tools/getWalletBalance.js.map +1 -1
  457. package/dist/tools/publishRiskScore.d.ts +36 -14
  458. package/dist/tools/publishRiskScore.d.ts.map +1 -1
  459. package/dist/tools/publishRiskScore.js +80 -32
  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 +14 -14
  466. package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
  467. package/dist/tools/queryRiskRegistry.js +34 -30
  468. package/dist/tools/queryRiskRegistry.js.map +1 -1
  469. package/dist/tools/safehandsPreflightCheck.d.ts +29 -14
  470. package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
  471. package/dist/tools/safehandsPreflightCheck.js +133 -6
  472. package/dist/tools/safehandsPreflightCheck.js.map +1 -1
  473. package/dist/tools/safehandsRiskReport.d.ts +29 -14
  474. package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
  475. package/dist/tools/safehandsRiskReport.js +23 -3
  476. package/dist/tools/safehandsRiskReport.js.map +1 -1
  477. package/dist/tools/safehandsSafeExecute.d.ts +1 -1
  478. package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
  479. package/dist/tools/safehandsSafeExecute.js +100 -17
  480. package/dist/tools/safehandsSafeExecute.js.map +1 -1
  481. package/dist/tools/safehandsWalletHealth.d.ts +15 -1
  482. package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
  483. package/dist/tools/safehandsWalletHealth.js +67 -25
  484. package/dist/tools/safehandsWalletHealth.js.map +1 -1
  485. package/dist/tools/safehandsX402Preflight.d.ts +3 -3
  486. package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
  487. package/dist/tools/safehandsX402Preflight.js +24 -3
  488. package/dist/tools/safehandsX402Preflight.js.map +1 -1
  489. package/dist/tools/sendPayment.d.ts +10 -4
  490. package/dist/tools/sendPayment.d.ts.map +1 -1
  491. package/dist/tools/sendPayment.js +63 -36
  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 +7 -3
  498. package/dist/tools/simulateTransaction.d.ts.map +1 -1
  499. package/dist/tools/simulateTransaction.js +42 -9
  500. package/dist/tools/simulateTransaction.js.map +1 -1
  501. package/dist/tools/tokenRegistryStatus.d.ts +25 -5
  502. package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
  503. package/dist/tools/tokenRegistryStatus.js +61 -31
  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 +15 -9
  510. package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
  511. package/dist/tools/x402PayAndFetch.js +163 -20
  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 +144 -35
  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 -73
  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 -397
  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
@@ -3,8 +3,8 @@ export declare const checkTokenSecuritySchema: z.ZodObject<{
3
3
  tokenAddress: z.ZodString;
4
4
  chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
5
5
  }, "strip", z.ZodTypeAny, {
6
- tokenAddress: string;
7
6
  chainId: number;
7
+ tokenAddress: string;
8
8
  }, {
9
9
  tokenAddress: string;
10
10
  chainId?: number | undefined;
@@ -17,18 +17,62 @@ export declare const checkTokenSecurityTool: {
17
17
  tokenAddress: z.ZodString;
18
18
  chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
19
19
  }, "strip", z.ZodTypeAny, {
20
- tokenAddress: string;
21
20
  chainId: number;
21
+ tokenAddress: string;
22
22
  }, {
23
23
  tokenAddress: string;
24
24
  chainId?: number | undefined;
25
25
  }>;
26
26
  };
27
- export declare function handleCheckTokenSecurity(raw: CheckTokenSecurityInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
27
+ export interface GoplusTokenProfile {
28
+ /** Display-only identity metadata — never used in scoring or policy decisions. */
29
+ tokenName?: string;
30
+ tokenSymbol?: string;
31
+ isHoneypot: boolean;
32
+ buyTaxPercent: number;
33
+ sellTaxPercent: number;
34
+ isMintable: boolean;
35
+ transferPausable: boolean;
36
+ isProxy: boolean;
37
+ ownerAddress: string;
38
+ creatorAddress: string;
39
+ }
40
+ /**
41
+ * Parse a GoPlus token_security result entry into a normalized profile, or return
42
+ * `null` when the schema is unrecognized (the honeypot decision field is missing or
43
+ * not a boolean-ish value). Pure + synchronous so the fail-open guard is unit-testable
44
+ * with no network. Callers MUST treat null as "data unavailable" and fail closed.
45
+ */
46
+ export declare function interpretGoplusTokenResult(details: unknown): GoplusTokenProfile | null;
47
+ /**
48
+ * Best-effort, DISPLAY-ONLY token identity from GoPlus. Reads ONLY token_name /
49
+ * token_symbol and deliberately ignores the security schema: a payload that
50
+ * check_token_security fails closed on (e.g. is_honeypot missing) can still carry
51
+ * identity metadata. Never throws — returns {} on any timeout/network/parse failure.
52
+ * Unlike the security check (which keeps the stronger fetchGoplus retry path),
53
+ * this is optional enrichment: a single attempt with a short 3s timeout so it
54
+ * cannot make token_registry_status slow.
55
+ * MUST NOT be used for risk scoring, policy decisions, write gates, or
56
+ * allow/block logic; it does not verify anything about the token.
57
+ */
58
+ export declare function fetchGoplusTokenIdentity(tokenAddress: string, chainId?: number): Promise<{
59
+ tokenName?: string;
60
+ tokenSymbol?: string;
61
+ }>;
62
+ /**
63
+ * Network metadata for the tool response, derived from the ACTIVE network
64
+ * instead of a hardcoded `isMainnet: true` (which misreported on
65
+ * atlantic-testnet). Unknown chains report false. Pure + exported for tests.
66
+ */
67
+ export declare function tokenSecurityNetworkMetadata(chainId: number): {
28
68
  chainId: number;
29
69
  environment: string;
30
70
  isMainnet: boolean;
71
+ };
72
+ export declare function handleCheckTokenSecurity(raw: CheckTokenSecurityInput): Promise<import("../sdk.js").ToolFailure | import("../sdk.js").ToolSuccess<{
31
73
  tokenAddress: `0x${string}`;
74
+ tokenName: string | undefined;
75
+ tokenSymbol: string | undefined;
32
76
  securityProfile: {
33
77
  safetyScore: number;
34
78
  isHoneypot: boolean;
@@ -37,11 +81,24 @@ export declare function handleCheckTokenSecurity(raw: CheckTokenSecurityInput):
37
81
  isMintable: boolean;
38
82
  transferPausable: boolean;
39
83
  isProxy: boolean;
40
- ownerAddress: any;
41
- creatorAddress: any;
84
+ ownerAddress: string;
85
+ creatorAddress: string;
42
86
  };
43
87
  flags: string[];
44
88
  source: string;
45
89
  sourceStatus: string;
90
+ chainId: number;
91
+ environment: string;
92
+ isMainnet: boolean;
46
93
  }>>;
94
+ export type TokenSecurityVerdict = "ok" | "review" | "block";
95
+ export interface TokenSecurityGateResult {
96
+ verdict: TokenSecurityVerdict;
97
+ /** Value to pass as evaluateActionPolicy input.tokenSecurityStatus. */
98
+ policyStatus: "ok" | "unknown" | "unavailable";
99
+ flags: string[];
100
+ safetyScore?: number;
101
+ detail?: string;
102
+ }
103
+ export declare function evaluateTokenSecurityGate(tokenAddress: string, chainId?: number): Promise<TokenSecurityGateResult>;
47
104
  //# sourceMappingURL=checkTokenSecurity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkTokenSecurity.d.ts","sourceRoot":"","sources":["../../src/tools/checkTokenSecurity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAKlC,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;IAkG1E"}
1
+ {"version":3,"file":"checkTokenSecurity.d.ts","sourceRoot":"","sources":["../../src/tools/checkTokenSecurity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAKlC,CAAC;AA+CF,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAiBtF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,EACpB,OAAO,SAAW,GACjB,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BvD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAMA;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;aAXhE,MAAM;iBACF,MAAM;eACR,OAAO;IAuGnB;AAgBD,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,uEAAuE;IACvE,YAAY,EAAE,IAAI,GAAG,SAAS,GAAG,aAAa,CAAC;IAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,SAAW,GACjB,OAAO,CAAC,uBAAuB,CAAC,CA8BlC"}
@@ -3,7 +3,7 @@
3
3
  // ────────────────────────────────────────────────────────────────────────
4
4
  import { z } from "zod";
5
5
  import { isAddress } from "viem";
6
- import { CHAIN_ID, PHAROS_ENVIRONMENT } from "../lib/constants.js";
6
+ import { CHAIN_ID, IS_MAINNET, PHAROS_ENVIRONMENT, SAFEHANDS_USER_AGENT, activeTokenMap } from "../lib/constants.js";
7
7
  import { fetchWithTimeoutAndRetry } from "../lib/http.js";
8
8
  import { classifyExternalError, fail, ok } from "../lib/toolResponse.js";
9
9
  export const checkTokenSecuritySchema = z.object({
@@ -15,6 +15,124 @@ export const checkTokenSecurityTool = {
15
15
  description: "Check token contract security (honeypot, mintable, ownership privileges, tax) via GoPlus Security API.",
16
16
  inputSchema: checkTokenSecuritySchema,
17
17
  };
18
+ /**
19
+ * GoPlus base URL — env-configurable via GOPLUS_API_BASE (same variable the
20
+ * hosted Anvita engine honors), defaulting to the keyless public API. Read at
21
+ * call time so tests/operators can repoint it without a process restart.
22
+ */
23
+ function goplusApiBase() {
24
+ return (process.env.GOPLUS_API_BASE || "https://api.gopluslabs.io").replace(/\/+$/, "");
25
+ }
26
+ // GOPLUS_API_BASE is operator-controlled, so both GoPlus call sites go through the
27
+ // SSRF-safe layer (DNS-pinned, blocklist-enforcing) instead of bare fetch. The
28
+ // security check keeps the stronger retry budget; identity enrichment stays
29
+ // single-attempt with a short timeout (see fetchGoplusTokenIdentity).
30
+ function fetchGoplus(url) {
31
+ return fetchWithTimeoutAndRetry(url, {
32
+ timeoutMs: 10_000,
33
+ retries: 2,
34
+ retryDelayMs: 300,
35
+ headers: {
36
+ accept: "application/json",
37
+ "user-agent": SAFEHANDS_USER_AGENT,
38
+ },
39
+ });
40
+ }
41
+ // ─── GoPlus schema parsing (fail-closed) ───────────────────────────────
42
+ // GoPlus's Pharos (chain 1672) support is new and its response schema is still
43
+ // maturing. GoPlus encodes booleans as "1"/"0" strings; we tolerate numeric/boolean
44
+ // drift too, so a retyped value can't make a real honeypot read as false. Crucially,
45
+ // if the honeypot decision field is absent or in an unrecognized shape,
46
+ // interpretGoplusTokenResult returns null so the caller FAILS CLOSED — it never scores
47
+ // an unreadable response as safetyScore=100 (an effective ALLOW on data never assessed).
48
+ function goplusTruthy(v) {
49
+ return v === "1" || v === 1 || v === true;
50
+ }
51
+ function goplusFlagKnown(v) {
52
+ return v === "1" || v === "0" || v === 1 || v === 0 || v === true || v === false;
53
+ }
54
+ // Untrusted external strings, display-only: trim + cap; absent/non-string → undefined.
55
+ // Identity metadata never influences any fail-closed decision.
56
+ function optionalString(v) {
57
+ return typeof v === "string" && v.trim() ? v.trim().slice(0, 128) : undefined;
58
+ }
59
+ /**
60
+ * Parse a GoPlus token_security result entry into a normalized profile, or return
61
+ * `null` when the schema is unrecognized (the honeypot decision field is missing or
62
+ * not a boolean-ish value). Pure + synchronous so the fail-open guard is unit-testable
63
+ * with no network. Callers MUST treat null as "data unavailable" and fail closed.
64
+ */
65
+ export function interpretGoplusTokenResult(details) {
66
+ if (!details || typeof details !== "object")
67
+ return null;
68
+ const d = details;
69
+ if (!goplusFlagKnown(d.is_honeypot))
70
+ return null; // schema drift → fail closed, never "safe"
71
+ const zero = "0x0000000000000000000000000000000000000000";
72
+ return {
73
+ tokenName: optionalString(d.token_name),
74
+ tokenSymbol: optionalString(d.token_symbol),
75
+ isHoneypot: goplusTruthy(d.is_honeypot),
76
+ buyTaxPercent: (parseFloat(String(d.buy_tax ?? "")) || 0) * 100,
77
+ sellTaxPercent: (parseFloat(String(d.sell_tax ?? "")) || 0) * 100,
78
+ isMintable: goplusTruthy(d.is_mintable),
79
+ transferPausable: goplusTruthy(d.transfer_pausable),
80
+ isProxy: goplusTruthy(d.is_proxy),
81
+ ownerAddress: (typeof d.owner_address === "string" && d.owner_address) || zero,
82
+ creatorAddress: (typeof d.creator_address === "string" && d.creator_address) || zero,
83
+ };
84
+ }
85
+ /**
86
+ * Best-effort, DISPLAY-ONLY token identity from GoPlus. Reads ONLY token_name /
87
+ * token_symbol and deliberately ignores the security schema: a payload that
88
+ * check_token_security fails closed on (e.g. is_honeypot missing) can still carry
89
+ * identity metadata. Never throws — returns {} on any timeout/network/parse failure.
90
+ * Unlike the security check (which keeps the stronger fetchGoplus retry path),
91
+ * this is optional enrichment: a single attempt with a short 3s timeout so it
92
+ * cannot make token_registry_status slow.
93
+ * MUST NOT be used for risk scoring, policy decisions, write gates, or
94
+ * allow/block logic; it does not verify anything about the token.
95
+ */
96
+ export async function fetchGoplusTokenIdentity(tokenAddress, chainId = CHAIN_ID) {
97
+ const address = tokenAddress.toLowerCase().trim();
98
+ if (!isAddress(address))
99
+ return {};
100
+ try {
101
+ const res = await fetchWithTimeoutAndRetry(`${goplusApiBase()}/api/v1/token_security/${chainId}?contract_addresses=${address}`, {
102
+ timeoutMs: 3_000,
103
+ retries: 0,
104
+ headers: {
105
+ accept: "application/json",
106
+ "user-agent": SAFEHANDS_USER_AGENT,
107
+ },
108
+ });
109
+ if (!res.ok)
110
+ return {};
111
+ const data = (await res.json());
112
+ const d = data?.result?.[address];
113
+ if (!d || typeof d !== "object")
114
+ return {};
115
+ return {
116
+ tokenName: optionalString(d.token_name),
117
+ tokenSymbol: optionalString(d.token_symbol),
118
+ };
119
+ }
120
+ catch {
121
+ return {};
122
+ }
123
+ }
124
+ /**
125
+ * Network metadata for the tool response, derived from the ACTIVE network
126
+ * instead of a hardcoded `isMainnet: true` (which misreported on
127
+ * atlantic-testnet). Unknown chains report false. Pure + exported for tests.
128
+ */
129
+ export function tokenSecurityNetworkMetadata(chainId) {
130
+ return {
131
+ chainId,
132
+ environment: chainId === CHAIN_ID ? PHAROS_ENVIRONMENT : "custom-chain",
133
+ isMainnet: chainId === CHAIN_ID ? IS_MAINNET : false,
134
+ };
135
+ }
18
136
  export async function handleCheckTokenSecurity(raw) {
19
137
  const input = checkTokenSecuritySchema.parse(raw);
20
138
  const address = input.tokenAddress.toLowerCase().trim();
@@ -22,16 +140,12 @@ export async function handleCheckTokenSecurity(raw) {
22
140
  if (!isAddress(address)) {
23
141
  return fail("INVALID_TOKEN_ADDRESS", `Invalid token address: ${input.tokenAddress}`, false, "check_token_security");
24
142
  }
25
- // GoPlus does not index Pharos Atlantic Testnet (chain 688689). Return a clear diagnostic
26
- // rather than a confusing empty result from the API.
27
- if (chainId === CHAIN_ID) {
28
- return fail("CHAIN_NOT_SUPPORTED_BY_GOPLUS", `GoPlus Security API does not support Pharos Atlantic Testnet (chain ${CHAIN_ID}). ` +
29
- "Token security data is unavailable for this chain. Use token_registry_status to check " +
30
- "whether a token address is canonical, custom, or unknown on Pharos.", false, "check_token_security");
31
- }
32
- const url = `https://api.gopluslabs.io/api/v1/token_security/${chainId}?contract_addresses=${address}`;
143
+ // GoPlus supports Pharos Mainnet (chain 1672) a third-party claim; results are
144
+ // risk intel, never identity. Base URL honors GOPLUS_API_BASE like the hosted
145
+ // Anvita engine, so both runtimes point at the same configurable truth source.
146
+ const url = `${goplusApiBase()}/api/v1/token_security/${chainId}?contract_addresses=${address}`;
33
147
  try {
34
- const res = await fetchWithTimeoutAndRetry(url, { timeoutMs: 10_000, retries: 2, retryDelayMs: 300 });
148
+ const res = await fetchGoplus(url);
35
149
  if (!res.ok) {
36
150
  throw new Error(`GoPlus API returned status ${res.status}`);
37
151
  }
@@ -40,11 +154,12 @@ export async function handleCheckTokenSecurity(raw) {
40
154
  return fail("TOKEN_SECURITY_DATA_UNAVAILABLE", data.message || "Token security data is not available for this contract on the specified chain.", true, "goplus_api");
41
155
  }
42
156
  const details = data.result[address];
43
- const isHoneypot = details.is_honeypot === "1";
44
- const buyTax = parseFloat(details.buy_tax || "0") * 100;
45
- const sellTax = parseFloat(details.sell_tax || "0") * 100;
46
- const isMintable = details.is_mintable === "1";
47
- const transferPausable = details.transfer_pausable === "1";
157
+ // Refuse to score an unrecognized GoPlus schema as "safe" — fail closed.
158
+ const profile = interpretGoplusTokenResult(details);
159
+ if (!profile) {
160
+ return fail("TOKEN_SECURITY_DATA_UNAVAILABLE", "GoPlus returned an unrecognized token-security schema for this contract (honeypot signal missing or not boolean). Failing closed: token treated as unreviewed, not safe.", true, "goplus_api");
161
+ }
162
+ const { isHoneypot, buyTaxPercent: buyTax, sellTaxPercent: sellTax, isMintable, transferPausable } = profile;
48
163
  let riskScore = 0;
49
164
  const flags = [];
50
165
  if (isHoneypot) {
@@ -69,10 +184,10 @@ export async function handleCheckTokenSecurity(raw) {
69
184
  }
70
185
  const safetyScore = Math.max(0, 100 - riskScore);
71
186
  return ok({
72
- chainId,
73
- environment: chainId === CHAIN_ID ? PHAROS_ENVIRONMENT : "custom-chain",
74
- isMainnet: false,
187
+ ...tokenSecurityNetworkMetadata(chainId),
75
188
  tokenAddress: address,
189
+ tokenName: profile.tokenName,
190
+ tokenSymbol: profile.tokenSymbol,
76
191
  securityProfile: {
77
192
  safetyScore,
78
193
  isHoneypot,
@@ -80,9 +195,9 @@ export async function handleCheckTokenSecurity(raw) {
80
195
  sellTaxPercent: sellTax,
81
196
  isMintable,
82
197
  transferPausable,
83
- isProxy: details.is_proxy === "1",
84
- ownerAddress: details.owner_address || "0x0000000000000000000000000000000000000000",
85
- creatorAddress: details.creator_address || "0x0000000000000000000000000000000000000000",
198
+ isProxy: profile.isProxy,
199
+ ownerAddress: profile.ownerAddress,
200
+ creatorAddress: profile.creatorAddress,
86
201
  },
87
202
  flags,
88
203
  source: "goplus_api",
@@ -93,4 +208,34 @@ export async function handleCheckTokenSecurity(raw) {
93
208
  return classifyExternalError("goplus_api", err);
94
209
  }
95
210
  }
211
+ /** Address is a canonical token in the active-network registry (identity verified). */
212
+ function isRegistryToken(address) {
213
+ const a = address.toLowerCase();
214
+ return Object.values(activeTokenMap()).some((v) => typeof v === "string" && v.toLowerCase() === a);
215
+ }
216
+ export async function evaluateTokenSecurityGate(tokenAddress, chainId = CHAIN_ID) {
217
+ if (!isAddress(tokenAddress)) {
218
+ // Unresolvable token → nothing reviewable → fail closed (not caller-confirmable).
219
+ return { verdict: "review", policyStatus: "unavailable", flags: [], detail: "Token address could not be resolved for security review." };
220
+ }
221
+ const res = await handleCheckTokenSecurity({ tokenAddress, chainId });
222
+ if (!res.success) {
223
+ // GoPlus unavailable / token not indexed → nothing was reviewed. Registry-canonical
224
+ // tokens stay caller-confirmable (identity verified on the official token registry);
225
+ // everything else is "unavailable" and the write gate fails closed on it.
226
+ if (isRegistryToken(tokenAddress)) {
227
+ return { verdict: "review", policyStatus: "unknown", flags: [], detail: `${res.error.message} Token address matches the official active-network token registry: identity verified; GoPlus intel unavailable.` };
228
+ }
229
+ return { verdict: "review", policyStatus: "unavailable", flags: [], detail: res.error.message };
230
+ }
231
+ const data = res.data;
232
+ const p = data.securityProfile;
233
+ if (p.isHoneypot || p.sellTaxPercent >= 25 || p.buyTaxPercent >= 25) {
234
+ return { verdict: "block", policyStatus: "unknown", flags: data.flags, safetyScore: p.safetyScore, detail: "Token flagged as honeypot or extreme-tax by GoPlus." };
235
+ }
236
+ if (p.safetyScore < 70 || p.transferPausable || data.flags.length > 0) {
237
+ return { verdict: "review", policyStatus: "unknown", flags: data.flags, safetyScore: p.safetyScore };
238
+ }
239
+ return { verdict: "ok", policyStatus: "ok", flags: data.flags, safetyScore: p.safetyScore };
240
+ }
96
241
  //# sourceMappingURL=checkTokenSecurity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkTokenSecurity.js","sourceRoot":"","sources":["../../src/tools/checkTokenSecurity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkTokenSecurity.js","sourceRoot":"","sources":["../../src/tools/checkTokenSecurity.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gEAAgE;AAChE,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;CACjD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,wGAAwG;IAC1G,WAAW,EAAE,wBAAwB;CACtC,CAAC;AAEF;;;;GAIG;AACH,SAAS,aAAa;IACpB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,mFAAmF;AACnF,+EAA+E;AAC/E,4EAA4E;AAC5E,sEAAsE;AACtE,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,wBAAwB,CAAC,GAAG,EAAE;QACnC,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,CAAC;QACV,YAAY,EAAE,GAAG;QACjB,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,oBAAoB;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,+EAA+E;AAC/E,oFAAoF;AACpF,qFAAqF;AACrF,wEAAwE;AACxE,uFAAuF;AACvF,yFAAyF;AACzF,SAAS,YAAY,CAAC,CAAU;IAC9B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AAC5C,CAAC;AACD,SAAS,eAAe,CAAC,CAAU;IACjC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;AACnF,CAAC;AAED,uFAAuF;AACvF,+DAA+D;AAC/D,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,CAAC,GAAG,OAAkC,CAAC;IAC7C,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,2CAA2C;IAC7F,MAAM,IAAI,GAAG,4CAA4C,CAAC;IAC1D,OAAO;QACL,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;QACvC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;QAC3C,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QACvC,aAAa,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG;QAC/D,cAAc,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG;QACjE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QACvC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACnD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI;QAC9E,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI;KACrF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,YAAoB,EACpB,OAAO,GAAG,QAAQ;IAElB,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,wBAAwB,CACxC,GAAG,aAAa,EAAE,0BAA0B,OAAO,uBAAuB,OAAO,EAAE,EACnF;YACE,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,oBAAoB;aACnC;SACF,CACF,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC3C,OAAO;YACL,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;YACvC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;SAC5C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAK1D,OAAO;QACL,OAAO;QACP,WAAW,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc;QACvE,SAAS,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,GAA4B;IACzE,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,uBAAuB,EAAE,0BAA0B,KAAK,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACtH,CAAC;IAED,iFAAiF;IACjF,8EAA8E;IAC9E,+EAA+E;IAC/E,MAAM,GAAG,GAAG,GAAG,aAAa,EAAE,0BAA0B,OAAO,uBAAuB,OAAO,EAAE,CAAC;IAEhG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CACT,iCAAiC,EACjC,IAAI,CAAC,OAAO,IAAI,gFAAgF,EAChG,IAAI,EACJ,YAAY,CACb,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAErC,yEAAyE;QACzE,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CACT,iCAAiC,EACjC,0KAA0K,EAC1K,IAAI,EACJ,YAAY,CACb,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;QAE7G,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;YAChB,SAAS,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;YACjB,SAAS,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,SAAS,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,SAAS,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC;QAEjD,OAAO,EAAE,CAAC;YACR,GAAG,4BAA4B,CAAC,OAAO,CAAC;YACxC,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE;gBACf,WAAW;gBACX,UAAU;gBACV,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,OAAO;gBACvB,UAAU;gBACV,gBAAgB;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC;YACD,KAAK;YACL,MAAM,EAAE,YAAY;YACpB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,qBAAqB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AA2BD,uFAAuF;AACvF,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CACtD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,YAAoB,EACpB,OAAO,GAAG,QAAQ;IAElB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,kFAAkF;QAClF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,0DAA0D,EAAE,CAAC;IAC3I,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,oFAAoF;QACpF,qFAAqF;QACrF,0EAA0E;QAC1E,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,iHAAiH,EAAE,CAAC;QAClN,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAGhB,CAAC;IACF,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;IAE/B,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,cAAc,IAAI,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QACpE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,qDAAqD,EAAE,CAAC;IACrK,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,GAAG,EAAE,IAAI,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9F,CAAC"}
@@ -17,13 +17,15 @@ interface CreateAgentWalletData {
17
17
  environment: string;
18
18
  chainId: number;
19
19
  isMainnet: boolean;
20
- isTestnet: boolean;
21
20
  createdAt: string;
22
21
  warning: string;
23
22
  instructions: string;
23
+ riskRegistryVersion: "safehands-registry";
24
+ riskRegistryAddress: string;
24
25
  riskRegistryAuthorized: boolean;
25
26
  riskRegistryAuthTxHash: string | null;
27
+ riskRegistryMessage: string;
26
28
  }
27
- export declare function handleCreateAgentWallet(params: CreateAgentWalletParams): Promise<ToolResponse<CreateAgentWalletData>>;
29
+ export declare function handleCreateAgentWallet(params: unknown): Promise<ToolResponse<CreateAgentWalletData>>;
28
30
  export {};
29
31
  //# sourceMappingURL=createAgentWallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAgentWallet.d.ts","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKrE,eAAO,MAAM,uBAAuB;;;;;;;;;EAWlC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CA6E9C"}
1
+ {"version":3,"file":"createAgentWallet.d.ts","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKrE,eAAO,MAAM,uBAAuB;;;;;;;;;EAWlC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAiF9C"}
@@ -6,8 +6,8 @@ import { z } from "zod";
6
6
  import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
7
7
  import { ok, fail } from "../lib/toolResponse.js";
8
8
  import { walletStore, encryptKey, usesPersistentWalletStore, getEffectiveEncryptionKey } from "../lib/wallet/index.js";
9
- import { CHAIN_ID, PHAROS_ENVIRONMENT, IS_MAINNET, RISK_REGISTRY_ADDRESS, RISK_REGISTRY_ABI } from "../lib/constants.js";
10
- import { createPharosWalletClientFromAccount } from "../lib/pharosClient.js";
9
+ import { CHAIN_ID, PHAROS_ENVIRONMENT, IS_MAINNET, SAFEHANDS_REGISTRY_ADDRESS } from "../lib/constants.js";
10
+ import { tryAutoAuthorize } from "../lib/safeHandsRegistry.js";
11
11
  export const createAgentWalletSchema = z.object({
12
12
  agentId: z
13
13
  .string()
@@ -21,14 +21,24 @@ export const createAgentWalletSchema = z.object({
21
21
  .describe("If true, overwrite existing wallet for this agentId"),
22
22
  });
23
23
  export async function handleCreateAgentWallet(params) {
24
- const { agentId, overwrite } = params;
24
+ let parsed;
25
+ try {
26
+ parsed = createAgentWalletSchema.parse(params);
27
+ }
28
+ catch (err) {
29
+ const msg = err instanceof Error && "issues" in err
30
+ ? err.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ")
31
+ : String(err);
32
+ return fail("VALIDATION_ERROR", `create_agent_wallet input validation failed: ${msg}`, false, "create_agent_wallet");
33
+ }
34
+ const { agentId, overwrite } = parsed;
25
35
  // Check if wallet already exists
26
36
  const existing = await walletStore.get(agentId);
27
37
  if (existing && !overwrite) {
28
38
  return fail("WALLET_ALREADY_EXISTS", `A wallet for agentId '${agentId}' already exists. Use overwrite:true to replace it, or use get_agent_wallet to retrieve it.`, false, "wallet_store");
29
39
  }
30
40
  if (usesPersistentWalletStore() && !process.env.WALLET_ENCRYPTION_KEY) {
31
- return fail("WALLET_ENCRYPTION_KEY_REQUIRED", "WALLET_ENCRYPTION_KEY is required when WALLET_STORE_PATH is used. Use in-memory store for local tests or provide a testnet-only encryption key.", false, "wallet_store");
41
+ return fail("WALLET_ENCRYPTION_KEY_REQUIRED", "WALLET_ENCRYPTION_KEY is required when WALLET_STORE_PATH is used. Use in-memory store for local tests or provide a mainnet-only encryption key.", false, "wallet_store");
32
42
  }
33
43
  // Generate new wallet
34
44
  const privateKey = generatePrivateKey();
@@ -40,44 +50,39 @@ export async function handleCreateAgentWallet(params) {
40
50
  agentId,
41
51
  address: account.address,
42
52
  encryptedKey,
43
- environment: "atlantic-testnet",
44
- chainId: 688689,
45
- isMainnet: false,
53
+ environment: "pacific-mainnet",
54
+ chainId: 1672,
55
+ isMainnet: true,
46
56
  createdAt: new Date().toISOString(),
47
57
  });
48
- // Auto-authorize new wallet in RiskRegistry if deployer key is available
49
- let riskRegistryAuthorized = false;
50
- let riskRegistryAuthTxHash = null;
51
- const deployerKey = process.env.PRIVATE_KEY;
52
- if (deployerKey && process.env.WRITE_TOOLS_ENABLED === "true") {
53
- try {
54
- const deployerAccount = privateKeyToAccount(deployerKey);
55
- const deployerWallet = createPharosWalletClientFromAccount(deployerAccount);
56
- const txHash = await deployerWallet.writeContract({
57
- address: RISK_REGISTRY_ADDRESS,
58
- abi: RISK_REGISTRY_ABI,
59
- functionName: "setAuthorizedAgent",
60
- args: [account.address, true],
61
- });
62
- riskRegistryAuthorized = true;
63
- riskRegistryAuthTxHash = txHash;
64
- }
65
- catch {
66
- // Authorization failed — wallet still created, just not authorized for publish
67
- }
68
- }
58
+ // Optional auto-authorization in SafeHandsRegistry.
59
+ // Gated by AUTO_AUTHORIZE_AGENT_WALLET + RISK_REGISTRY_OWNER_PRIVATE_KEY (handled
60
+ // inside tryAutoAuthorize). Wallet creation always succeeds even if this is
61
+ // disabled or fails — the wallet is simply not yet authorized for managed execution.
62
+ const auth = await tryAutoAuthorize(account.address);
63
+ const riskRegistryAuthorized = auth.riskRegistryAuthorized;
64
+ const riskRegistryAuthTxHash = auth.authorizationTxHash ?? null;
65
+ const riskRegistryMessage = riskRegistryAuthorized
66
+ ? (auth.autoAuthorized
67
+ ? "Wallet auto-authorized in SafeHandsRegistry and ready for managed execution once funded."
68
+ : "Wallet is already authorized in SafeHandsRegistry.")
69
+ : `Wallet is NOT yet authorized for managed execution. ${auth.authorizationReason ?? ""} ` +
70
+ `The SafeHandsRegistry owner must call setAuthorizedAgent(${account.address}, true), ` +
71
+ `or set AUTO_AUTHORIZE_AGENT_WALLET=true with RISK_REGISTRY_OWNER_PRIVATE_KEY.`;
69
72
  return ok({
70
73
  agentId,
71
74
  address: account.address,
72
75
  environment: PHAROS_ENVIRONMENT,
73
76
  chainId: CHAIN_ID,
74
77
  isMainnet: IS_MAINNET,
75
- isTestnet: true,
76
78
  createdAt: new Date().toISOString(),
77
- warning: "This is a TESTNET wallet only. Never use for mainnet funds. Private key is AES-256-GCM encrypted locally — testnet-grade, not KMS/Vault.",
78
- instructions: `Fund this wallet with testnet PHRS from https://testnet.pharosnetwork.xyz/ before executing write operations. Set WRITE_TOOLS_ENABLED=true to enable transactions.`,
79
+ warning: "Managed mainnet wallet. Use a DEDICATED low-value operator wallet, never a primary wallet. Private key is AES-256-GCM encrypted locally, not KMS/HSM-grade.",
80
+ instructions: `Fund this wallet with PROS for gas. Managed execution stays disabled until you opt in with WRITE_TOOLS_ENABLED=true and MANAGED_WALLET_ENABLED=true.`,
81
+ riskRegistryVersion: "safehands-registry",
82
+ riskRegistryAddress: SAFEHANDS_REGISTRY_ADDRESS,
79
83
  riskRegistryAuthorized,
80
84
  riskRegistryAuthTxHash,
85
+ riskRegistryMessage,
81
86
  });
82
87
  }
83
88
  //# sourceMappingURL=createAgentWallet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAgentWallet.js","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createAgentWallet.js","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"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"}
@@ -48,17 +48,22 @@ export declare const estimateGasTool: {
48
48
  toAddress?: string | undefined;
49
49
  }>;
50
50
  };
51
- export declare function handleEstimateGas(raw: EstimateGasInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
51
+ export declare function handleEstimateGas(raw: EstimateGasInput): Promise<import("../sdk.js").ToolFailure | import("../sdk.js").ToolSuccess<{
52
52
  action: "transfer" | "swap";
53
53
  gasEstimate: {
54
54
  value: string;
55
55
  unit: string;
56
56
  };
57
+ recommendedGas: {
58
+ value: string;
59
+ unit: string;
60
+ bufferPct: number;
61
+ };
57
62
  gasPrice: {
58
63
  value: string;
59
64
  unit: string;
60
65
  };
61
- gasCostPHRS: {
66
+ gasCostPROS: {
62
67
  value: string;
63
68
  unit: string;
64
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"estimateGas.d.ts","sourceRoot":"","sources":["../../src/tools/estimateGas.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAK3B,CAAC;AAIF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4G5D"}
1
+ {"version":3,"file":"estimateGas.d.ts","sourceRoot":"","sources":["../../src/tools/estimateGas.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAK3B,CAAC;AAIF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiH5D"}