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
@@ -1,70 +1,72 @@
1
1
  // ─── SafeHands Constants ───────────────────────────────────────────────
2
- // Pharos Atlantic Testnet defaults. Values are labeled as testnet-only.
3
- // Official references reviewed during QA:
2
+ // Pharos Pacific Mainnet-first defaults with Atlantic Testnet compatibility.
3
+ // Official references reviewed during QA (USDC re-verified against Circle's
4
+ // contract-addresses page on 2026-07-10):
4
5
  // - Pharos Hardhat guide: Atlantic Testnet chain ID 688689, RPC https://atlantic.dplabs-internal.com
5
6
  // - Official Pharos Skill Engine tokens.json: USDC = 0xE0BE08c77f415F577A1B3A9aD7a1Df1479564ec8
6
- // - Circle USDC contract addresses page: Pharos Testnet = 0xcfC8330f4BCAB529c625D12781b1C19466A9Fc8B
7
- // - For Pharos Skill Engine compatibility, SafeHands defaults to the Skill Engine token list.
7
+ // - Circle USDC contract addresses page (developers.circle.com/stablecoins/usdc-contract-addresses):
8
+ // Pharos (Mainnet) = 0xC879C018dB60520F4355C26eD1a6D572cdAC1815 (= PACIFIC_USDC_ADDRESS)
9
+ // Pharos Testnet = 0xcfC8330f4BCAB529c625D12781b1C19466A9Fc8B (= CIRCLE_USDC_ADDRESS)
10
+ // (An earlier comment here mislabeled 0xcfC8… as mainnet — it is Circle's TESTNET USDC.)
11
+ // - For Pharos Skill Engine testnet compatibility, the Atlantic token list defaults to the
12
+ // Skill Engine list; the mainnet canonical USDC is the Circle/Pharos-docs 0xC879… address.
8
13
  // ────────────────────────────────────────────────────────────────────────
9
14
  // ─── Network ───────────────────────────────────────────────────────────
10
- export const PHAROS_ENVIRONMENT = process.env.PHAROS_ENVIRONMENT || "atlantic-testnet";
11
- export const CHAIN_ID = Number(process.env.PHAROS_CHAIN_ID || "688689");
12
- export const RPC_URL = process.env.PHAROS_RPC_URL || "https://atlantic.dplabs-internal.com/";
13
- export const EXPLORER_BASE = process.env.PHAROS_EXPLORER_BASE || "https://atlantic.pharosscan.xyz/tx/";
14
- export const IS_MAINNET = false;
15
- export const CHAIN_REGISTRY = {
16
- pharosAtlanticTestnet: {
17
- environment: "atlantic-testnet",
18
- chainId: 688689,
19
- isMainnet: false,
20
- rpcUrlEnv: "PHAROS_RPC_URL",
21
- defaultRpcUrl: "https://atlantic.dplabs-internal.com/",
22
- explorerUrl: "https://atlantic.pharosscan.xyz/",
23
- docsSource: "https://docs.pharosnetwork.xyz/developer-guide/hardhat/write-your-first-nft",
24
- },
25
- };
15
+ // Mainnet-first: defaults resolve from the active network in networks.ts
16
+ // (default pacific-mainnet). Existing PHAROS_* env vars still override for
17
+ // backward compatibility and Atlantic testnet selection.
18
+ import { createRequire } from "module";
19
+ import { parseAbi } from "viem";
20
+ import { getActiveNetwork, resolveRpcUrl, explorerTxBase } from "./networks.js";
21
+ import { ECOSYSTEM_REGISTRY_ITEMS } from "../data/ecosystemRegistry.data.js";
22
+ /** Package version, read once from package.json so callers never hardcode it. */
23
+ export const SAFEHANDS_VERSION = createRequire(import.meta.url)("../../package.json").version;
24
+ /** User-agent for outbound HTTP calls (GoPlus etc.), version-synced. */
25
+ export const SAFEHANDS_USER_AGENT = `SafeHands/${SAFEHANDS_VERSION}`;
26
+ const ACTIVE_NETWORK = getActiveNetwork();
27
+ export const PHAROS_ENVIRONMENT = process.env.PHAROS_ENVIRONMENT || ACTIVE_NETWORK.name;
28
+ export const CHAIN_ID = Number(process.env.PHAROS_CHAIN_ID || ACTIVE_NETWORK.chainId);
29
+ export const RPC_URL = process.env.PHAROS_RPC_URL || resolveRpcUrl(ACTIVE_NETWORK);
30
+ export const EXPLORER_BASE = process.env.PHAROS_EXPLORER_BASE || explorerTxBase(ACTIVE_NETWORK);
31
+ export const IS_MAINNET = ACTIVE_NETWORK.isMainnet;
26
32
  // ─── Token Addresses ───────────────────────────────────────────────────
27
- // The official Pharos Skill Engine (pharos-skill-engine-0.1.0) assets/tokens.json
28
- // lists 0xE0BE... as USDC for atlantic-testnet.
29
- // Circle's USDC contract addresses page lists 0xcfC8... for Pharos Testnet.
30
- // For Skill Engine hackathon compatibility, SafeHands defaults to the Skill Engine list.
31
- // Both addresses are documented; neither is deleted.
32
- /** Native PHRS sentinel address used by DODO API for native token */
33
- export const PHRS_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
33
+ // These are the ATLANTIC-TESTNET / Skill-Engine-compat addresses (activeTokenMap
34
+ // switches to the Pacific registry on mainnet). The one evidenced canonical
35
+ // mainnet USDC is PACIFIC_USDC_ADDRESS (0xC879…), confirmed by BOTH the Pharos
36
+ // docs token registry AND Circle's contract-addresses page (re-checked 2026-07-10).
37
+ /** Native PROS sentinel address used by DODO API for native token */
38
+ export const PROS_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
34
39
  export const USDT_ADDRESS = "0xE7E84B8B4f39C507499c40B4ac199B050e2882d5";
35
- /** Primary USDC for Pharos Skill Engine (from official tokens.json) */
40
+ /** Skill-Engine-compat USDC (official pharos-skill-engine tokens.json); testnet compat list only. */
36
41
  export const USDC_ADDRESS = "0xE0BE08c77f415F577A1B3A9aD7a1Df1479564ec8";
37
- /** Alternate USDC listed by Circle's contract addresses page (not in Skill Engine tokens.json) */
42
+ /** Circle's Pharos TESTNET USDC (per Circle's contract-addresses page). Used only as the Atlantic alt-USDC route fallback — never a mainnet claim. */
38
43
  export const CIRCLE_USDC_ADDRESS = "0xcfC8330f4BCAB529c625D12781b1C19466A9Fc8B";
39
- /** @deprecated Use USDC_ADDRESS instead. Kept for backward compatibility. */
40
- export const X402_DEMO_USDC_ADDRESS = USDC_ADDRESS;
41
- export const TEST_USDC_ADDRESS = USDC_ADDRESS;
42
44
  export const WBTC_ADDRESS = "0x0c64F03EEa5c30946D5c55B4b532D08ad74638a4";
43
45
  export const WETH_ADDRESS = "0x7d211F77525ea39A0592794f793cC1036eEaccD5";
44
- export const WPHRS_ADDRESS = "0x838800b758277CC111B2d48Ab01e5E164f8E9471";
46
+ export const WPROS_ADDRESS = "0x838800b758277CC111B2d48Ab01e5E164f8E9471";
45
47
  export const TOKEN_REGISTRY = {
46
- PHRS: {
47
- symbol: "PHRS",
48
- address: PHRS_ADDRESS,
48
+ PROS: {
49
+ symbol: "PROS",
50
+ address: PROS_ADDRESS,
49
51
  decimals: 18,
50
- chainId: CHAIN_ID,
51
- environment: PHAROS_ENVIRONMENT,
52
+ chainId: 688689,
53
+ environment: "atlantic-testnet",
52
54
  isMainnet: false,
53
55
  isCanonical: true,
54
56
  isTestToken: true,
55
- purpose: "native PHRS sentinel address for DODO route API",
57
+ purpose: "native PROS sentinel address for DODO route API",
56
58
  docsSource: "https://docs.pharos.xyz/",
57
59
  },
58
60
  USDC: {
59
61
  symbol: "USDC",
60
62
  address: USDC_ADDRESS,
61
63
  decimals: 6,
62
- chainId: CHAIN_ID,
63
- environment: PHAROS_ENVIRONMENT,
64
+ chainId: 688689,
65
+ environment: "atlantic-testnet",
64
66
  isMainnet: false,
65
67
  isCanonical: true,
66
68
  isTestToken: true,
67
- purpose: "Pharos Skill Engine USDC the USDC listed in the official pharos-skill-engine-0.1.0 assets/tokens.json for atlantic-testnet",
69
+ purpose: "Pharos Skill Engine USDC: the USDC listed in the official pharos-skill-engine-0.1.0 assets/tokens.json for pacific-mainnet",
68
70
  docsSource: "pharos-skill-engine-0.1.0/assets/tokens.json",
69
71
  verificationStatus: "DOCS_VERIFIED_FROM_PHAROS_SKILL_ENGINE",
70
72
  },
@@ -72,21 +74,21 @@ export const TOKEN_REGISTRY = {
72
74
  symbol: "CIRCLE_USDC",
73
75
  address: CIRCLE_USDC_ADDRESS,
74
76
  decimals: 6,
75
- chainId: CHAIN_ID,
76
- environment: PHAROS_ENVIRONMENT,
77
+ chainId: 688689,
78
+ environment: "atlantic-testnet",
77
79
  isMainnet: false,
78
80
  isCanonical: true,
79
81
  isTestToken: true,
80
- purpose: "Alternate USDC listed by Circle contract addresses page and Pharos docs token registry; not the primary token in Skill Engine tokens.json",
81
- docsSource: "https://developers.circle.com/stablecoins/usdc-contract-addresses and https://docs.pharos.xyz/getting-started/token-registry",
82
- verificationStatus: "CIRCLE_REFERENCED_USDC",
82
+ purpose: "Circle's Pharos TESTNET USDC (Circle contract-addresses page, re-checked 2026-07-10); Atlantic alt-USDC route fallback, not the primary Skill-Engine token",
83
+ docsSource: "https://developers.circle.com/stablecoins/usdc-contract-addresses",
84
+ verificationStatus: "CIRCLE_DOCS_VERIFIED_TESTNET",
83
85
  },
84
86
  USDT: {
85
87
  symbol: "USDT",
86
88
  address: USDT_ADDRESS,
87
89
  decimals: 6,
88
- chainId: CHAIN_ID,
89
- environment: PHAROS_ENVIRONMENT,
90
+ chainId: 688689,
91
+ environment: "atlantic-testnet",
90
92
  isMainnet: false,
91
93
  isCanonical: true,
92
94
  isTestToken: true,
@@ -98,8 +100,8 @@ export const TOKEN_REGISTRY = {
98
100
  symbol: "WBTC",
99
101
  address: WBTC_ADDRESS,
100
102
  decimals: 18,
101
- chainId: CHAIN_ID,
102
- environment: PHAROS_ENVIRONMENT,
103
+ chainId: 688689,
104
+ environment: "atlantic-testnet",
103
105
  isMainnet: false,
104
106
  isCanonical: true,
105
107
  isTestToken: true,
@@ -111,8 +113,8 @@ export const TOKEN_REGISTRY = {
111
113
  symbol: "WETH",
112
114
  address: WETH_ADDRESS,
113
115
  decimals: 18,
114
- chainId: CHAIN_ID,
115
- environment: PHAROS_ENVIRONMENT,
116
+ chainId: 688689,
117
+ environment: "atlantic-testnet",
116
118
  isMainnet: false,
117
119
  isCanonical: true,
118
120
  isTestToken: true,
@@ -120,67 +122,250 @@ export const TOKEN_REGISTRY = {
120
122
  docsSource: "https://docs.pharos.xyz/getting-started/token-registry",
121
123
  verificationStatus: "DOCS_VERIFIED",
122
124
  },
123
- WPHRS: {
124
- symbol: "WPHRS",
125
- address: WPHRS_ADDRESS,
125
+ WPROS: {
126
+ symbol: "WPROS",
127
+ address: WPROS_ADDRESS,
126
128
  decimals: 18,
127
- chainId: CHAIN_ID,
128
- environment: PHAROS_ENVIRONMENT,
129
+ chainId: 688689,
130
+ environment: "atlantic-testnet",
129
131
  isMainnet: false,
130
132
  isCanonical: true,
131
133
  isTestToken: true,
132
- purpose: "canonical Pharos Atlantic Testnet WPHRS (Wrapped PHRS)",
134
+ purpose: "canonical Pharos Atlantic Testnet WPROS (Wrapped PROS)",
135
+ docsSource: "https://docs.pharos.xyz/getting-started/token-registry",
136
+ verificationStatus: "DOCS_VERIFIED",
137
+ },
138
+ };
139
+ // ─── Pharos Pacific Mainnet token registry (chain 1672) ────────────────
140
+ // Official addresses from docs.pharos.xyz/getting-started/token-registry,
141
+ // recorded from the Phase 5A Pharos docs audit. Read-only metadata only —
142
+ // recognition is by registry address; it is NOT a safety guarantee for an action.
143
+ // Decimals follow the ERC-20 standard for each token type (USDC = 6; wrapped = 18).
144
+ export const PACIFIC_WPROS_ADDRESS = "0x52c48d4213107b20bc583832b0d951fb9ca8f0b0";
145
+ // Circle-deployed — dual-evidenced: Pharos docs token registry AND Circle's own
146
+ // contract-addresses page list this address for Pharos (Mainnet). Re-checked 2026-07-10.
147
+ export const PACIFIC_USDC_ADDRESS = "0xc879c018db60520f4355c26ed1a6d572cdac1815";
148
+ export const PACIFIC_LINK_ADDRESS = "0x51e2A24742Db77604B881d6781Ee16B5b8fcBE29";
149
+ export const PACIFIC_WETH_ADDRESS = "0x1f4b7011Ee3d53969bb67F59428a9ec0477856E9";
150
+ export const PACIFIC_MAINNET_TOKEN_REGISTRY = {
151
+ WPROS: {
152
+ symbol: "WPROS",
153
+ name: "Wrapped PROS",
154
+ address: PACIFIC_WPROS_ADDRESS,
155
+ decimals: 18,
156
+ chainId: 1672,
157
+ environment: "pacific-mainnet",
158
+ isMainnet: true,
159
+ isCanonical: true,
160
+ docsSource: "https://docs.pharos.xyz/getting-started/token-registry",
161
+ verificationStatus: "DOCS_VERIFIED",
162
+ },
163
+ USDC: {
164
+ symbol: "USDC",
165
+ name: "USD Coin (Circle-deployed)",
166
+ address: PACIFIC_USDC_ADDRESS,
167
+ decimals: 6,
168
+ chainId: 1672,
169
+ environment: "pacific-mainnet",
170
+ isMainnet: true,
171
+ isCanonical: true,
172
+ docsSource: "https://docs.pharos.xyz/getting-started/token-registry and https://developers.circle.com/stablecoins/usdc-contract-addresses",
173
+ verificationStatus: "DOCS_VERIFIED",
174
+ },
175
+ LINK: {
176
+ symbol: "LINK",
177
+ name: "ChainLink Token",
178
+ address: PACIFIC_LINK_ADDRESS,
179
+ decimals: 18,
180
+ chainId: 1672,
181
+ environment: "pacific-mainnet",
182
+ isMainnet: true,
183
+ isCanonical: true,
184
+ docsSource: "https://docs.pharos.xyz/getting-started/token-registry",
185
+ verificationStatus: "DOCS_VERIFIED",
186
+ },
187
+ WETH: {
188
+ symbol: "WETH",
189
+ name: "Wrapped Ether",
190
+ address: PACIFIC_WETH_ADDRESS,
191
+ decimals: 18,
192
+ chainId: 1672,
193
+ environment: "pacific-mainnet",
194
+ isMainnet: true,
195
+ isCanonical: true,
133
196
  docsSource: "https://docs.pharos.xyz/getting-started/token-registry",
134
197
  verificationStatus: "DOCS_VERIFIED",
135
198
  },
136
199
  };
137
200
  // ─── Token Decimals ────────────────────────────────────────────────────
138
201
  export const TOKEN_DECIMALS = {
139
- PHRS: 18,
202
+ PROS: 18,
140
203
  USDT: 6,
141
204
  USDC: 6,
142
205
  CIRCLE_USDC: 6,
143
206
  WBTC: 18,
144
207
  WETH: 18,
145
- WPHRS: 18,
146
- [PHRS_ADDRESS.toLowerCase()]: 18,
208
+ WPROS: 18,
209
+ [PROS_ADDRESS.toLowerCase()]: 18,
147
210
  [USDT_ADDRESS.toLowerCase()]: 6,
148
211
  [USDC_ADDRESS.toLowerCase()]: 6,
149
212
  [CIRCLE_USDC_ADDRESS.toLowerCase()]: 6,
150
213
  [WBTC_ADDRESS.toLowerCase()]: 18,
151
214
  [WETH_ADDRESS.toLowerCase()]: 18,
152
- [WPHRS_ADDRESS.toLowerCase()]: 18,
215
+ [WPROS_ADDRESS.toLowerCase()]: 18,
153
216
  };
154
217
  // ─── Token Symbol → Address Mapping ────────────────────────────────────
155
218
  export const TOKEN_MAP = {
156
- PHRS: PHRS_ADDRESS,
219
+ PROS: PROS_ADDRESS,
157
220
  USDT: USDT_ADDRESS,
158
221
  USDC: USDC_ADDRESS,
159
222
  CIRCLE_USDC: CIRCLE_USDC_ADDRESS,
160
223
  WBTC: WBTC_ADDRESS,
161
224
  WETH: WETH_ADDRESS,
162
- WPHRS: WPHRS_ADDRESS,
225
+ WPROS: WPROS_ADDRESS,
226
+ };
227
+ // ─── Pacific Mainnet token map (chain 1672) ────────────────────────────
228
+ // Used for swaps / market data on mainnet. PROS/PROS share the native sentinel
229
+ // that DODO expects; canonical ERC-20s come from PACIFIC_MAINNET_TOKEN_REGISTRY.
230
+ export const PACIFIC_TOKEN_MAP = {
231
+ PROS: PROS_ADDRESS,
232
+ WPROS: PACIFIC_WPROS_ADDRESS,
233
+ USDC: PACIFIC_USDC_ADDRESS,
234
+ WETH: PACIFIC_WETH_ADDRESS,
235
+ LINK: PACIFIC_LINK_ADDRESS,
163
236
  };
237
+ export const PACIFIC_TOKEN_DECIMALS = {
238
+ PROS: 18,
239
+ WPROS: 18,
240
+ USDC: 6,
241
+ WETH: 18,
242
+ LINK: 18,
243
+ [PROS_ADDRESS.toLowerCase()]: 18,
244
+ [PACIFIC_WPROS_ADDRESS.toLowerCase()]: 18,
245
+ [PACIFIC_USDC_ADDRESS.toLowerCase()]: 6,
246
+ [PACIFIC_WETH_ADDRESS.toLowerCase()]: 18,
247
+ [PACIFIC_LINK_ADDRESS.toLowerCase()]: 18,
248
+ };
249
+ /** Network-aware token symbol→address map (mainnet-first). */
250
+ export function activeTokenMap() {
251
+ return getActiveNetwork().isMainnet ? PACIFIC_TOKEN_MAP : TOKEN_MAP;
252
+ }
253
+ /** Network-aware token decimals (mainnet-first). */
254
+ export function activeTokenDecimals() {
255
+ return getActiveNetwork().isMainnet ? PACIFIC_TOKEN_DECIMALS : TOKEN_DECIMALS;
256
+ }
257
+ /** Active canonical USDC address (mainnet 0xc879…, else Skill-Engine USDC). */
258
+ export function activeUsdcAddress() {
259
+ return getActiveNetwork().isMainnet ? PACIFIC_USDC_ADDRESS : USDC_ADDRESS;
260
+ }
261
+ /** Active network token registry metadata (mainnet-first). */
262
+ export function activeTokenRegistry() {
263
+ return getActiveNetwork().isMainnet
264
+ ? PACIFIC_MAINNET_TOKEN_REGISTRY
265
+ : TOKEN_REGISTRY;
266
+ }
267
+ /** x402 payment assets SafeHands recognizes for the active network. */
268
+ export function activeX402AllowedTokenAddresses() {
269
+ return getActiveNetwork().isMainnet
270
+ ? [PACIFIC_USDC_ADDRESS, PACIFIC_WPROS_ADDRESS]
271
+ : [USDC_ADDRESS, WPROS_ADDRESS];
272
+ }
164
273
  // ─── FaroSwap / DODO Protocol ──────────────────────────────────────────
274
+ // PROVENANCE: these addresses originate from the pre-registry Atlantic-testnet
275
+ // FaroSwap integration and are NOT in the canonical ecosystem registry — the
276
+ // registry's FaroSwap mainnet entry (protocol:pacific-mainnet:faroswap) is
277
+ // UNVERIFIED with no bundled contracts. They are RESTRICTION-ONLY values: the
278
+ // write path uses them as allowlists that constrain which router/spender a DODO
279
+ // quote may execute against (fail-closed containment). They must NEVER be used
280
+ // as trust/"known"/verified signals — spender/counterparty trust comes only from
281
+ // addressTrustEvidence() in lib/ecosystemRegistry.ts.
165
282
  export const DODO_APPROVE_ADDRESS = "0x4Cf317b8918FbE8A890c01eDAb7d548555Ac2cE9";
166
283
  export const DODO_ROUTE_PROXY_ADDRESS = "0x819829e5CF6e19F9fED92F6b4CC1edF45a2cC4A2";
167
- export const POSITION_MANAGER_ADDRESS = "0x1c430d84DD6185b1Ea2d4693e0033799d193542f";
284
+ function parseAddressCsv(value, fallback) {
285
+ const source = value && value.trim().length > 0 ? value.split(",") : [...fallback];
286
+ return source
287
+ .map((item) => item.trim())
288
+ .filter((item) => /^0x[0-9a-fA-F]{40}$/.test(item));
289
+ }
290
+ export function activeDodoSpenderAllowlist() {
291
+ return parseAddressCsv(process.env.DODO_SPENDER_ALLOWLIST || process.env.SAFEHANDS_DODO_SPENDER_ALLOWLIST, [DODO_APPROVE_ADDRESS]);
292
+ }
293
+ export function activeDodoRouterAllowlist() {
294
+ return parseAddressCsv(process.env.DODO_ROUTER_ALLOWLIST || process.env.SAFEHANDS_DODO_ROUTER_ALLOWLIST, [DODO_ROUTE_PROXY_ADDRESS]);
295
+ }
296
+ export function isAllowedDodoSpender(address) {
297
+ return activeDodoSpenderAllowlist().some((allowed) => allowed.toLowerCase() === address.toLowerCase());
298
+ }
299
+ export function isAllowedDodoRouter(address) {
300
+ return activeDodoRouterAllowlist().some((allowed) => allowed.toLowerCase() === address.toLowerCase());
301
+ }
168
302
  // ─── DODO API ──────────────────────────────────────────────────────────
169
303
  export const DODO_API_BASE = process.env.DODO_API_BASE || "https://api.dodoex.io";
170
304
  export const DODO_API_KEY = process.env.DODO_API_KEY;
171
- export const DODO_DEFAULT_SLIPPAGE = 3.225;
305
+ export const DODO_DEFAULT_SLIPPAGE = 3;
172
306
  export const DODO_ROUTE_ENDPOINT = "/route-service/v2/widget/getdodoroute";
307
+ // ─── OKX DEX Aggregator ────────────────────────────────────────────────
308
+ // PROVENANCE: unlike the DODO/FaroSwap allowlists above, both OKX addresses
309
+ // ARE registry-verified (protocol:pacific-mainnet:okx-dex — OKX's own dev-docs
310
+ // Pharos row plus on-chain eth_getCode on 1672, 2026-07-13). The allowlist
311
+ // checks below are still containment only: spender/counterparty trust flows
312
+ // exclusively from addressTrustEvidence(), which recognizes these addresses as
313
+ // verified independently of this list.
314
+ export const OKX_DEX_ROUTER_ADDRESS = "0x75f21a97bd89a9a5683a9f46b5d5b4a080708dea";
315
+ export const OKX_DEX_APPROVE_ADDRESS = "0x78466A1488f1883d71cFddd1c621351572dE0a1C";
316
+ export function activeOkxSpenderAllowlist() {
317
+ return parseAddressCsv(process.env.OKX_SPENDER_ALLOWLIST || process.env.SAFEHANDS_OKX_SPENDER_ALLOWLIST, [OKX_DEX_APPROVE_ADDRESS]);
318
+ }
319
+ export function activeOkxRouterAllowlist() {
320
+ return parseAddressCsv(process.env.OKX_ROUTER_ALLOWLIST || process.env.SAFEHANDS_OKX_ROUTER_ALLOWLIST, [OKX_DEX_ROUTER_ADDRESS]);
321
+ }
322
+ export function isAllowedOkxSpender(address) {
323
+ return activeOkxSpenderAllowlist().some((allowed) => allowed.toLowerCase() === address.toLowerCase());
324
+ }
325
+ export function isAllowedOkxRouter(address) {
326
+ return activeOkxRouterAllowlist().some((allowed) => allowed.toLowerCase() === address.toLowerCase());
327
+ }
328
+ // ─── OKX DEX API ───────────────────────────────────────────────────────
329
+ // Credentials are resolved at call time (not module-load constants) so tests
330
+ // can pin them per process and operators can rotate them without a rebuild.
331
+ // They are used only to sign outbound requests to the OKX API and must never
332
+ // be logged, echoed into errors, or included in tool responses.
333
+ export const OKX_API_BASE = process.env.OKX_API_BASE || "https://web3.okx.com";
334
+ export const OKX_SWAP_ENDPOINT = "/api/v6/dex/aggregator/swap";
335
+ export function okxApiCredentials() {
336
+ const apiKey = process.env.OKX_API_KEY?.trim();
337
+ const apiSecret = process.env.OKX_API_SECRET?.trim();
338
+ const passphrase = process.env.OKX_API_PASSPHRASE?.trim();
339
+ const projectId = process.env.OKX_API_PROJECT_ID?.trim();
340
+ const missing = [];
341
+ if (!apiKey)
342
+ missing.push("OKX_API_KEY");
343
+ if (!apiSecret)
344
+ missing.push("OKX_API_SECRET");
345
+ if (!passphrase)
346
+ missing.push("OKX_API_PASSPHRASE");
347
+ if (missing.length > 0)
348
+ return { ok: false, missing };
349
+ return { ok: true, credentials: { apiKey: apiKey, apiSecret: apiSecret, passphrase: passphrase, projectId: projectId || undefined } };
350
+ }
173
351
  // ─── Risk Engine Thresholds ────────────────────────────────────────────
352
+ // Weighted risk-engine block boundary (block when score > 80). NOTE: the hosted
353
+ // Anvita engine deliberately blocks earlier (score ≥ 70) — see
354
+ // docs/DECISION_CONTRACT.md §Thresholds for the documented divergence.
174
355
  export const RISK_BLOCK_THRESHOLD = 80;
175
- export const RISK_WARN_THRESHOLD = 60;
356
+ // A counterparty dimension at/above this is critical (missing/invalid/zero
357
+ // recipient). Shared by the policy engine's `risk_counterparty` check (the
358
+ // decider) and the risk engine's advisory recommendation escalation — the two
359
+ // must never drift apart, so both read this single constant.
360
+ export const COUNTERPARTY_CRITICAL_THRESHOLD = 90;
176
361
  export const MAX_SLIPPAGE_PCT = 5;
177
362
  export const MAX_BALANCE_USAGE_PCT = 90;
178
363
  // ─── Safety Limits ─────────────────────────────────────────────────────
179
- export const MAX_TX_AMOUNT_PHRS = process.env.MAX_TX_AMOUNT_PHRS || "0.1";
364
+ export const MAX_TX_AMOUNT_PROS = process.env.MAX_TX_AMOUNT_PROS || "0.1";
180
365
  export const MAX_APPROVAL_AMOUNT_USDC = process.env.MAX_APPROVAL_AMOUNT_USDC || "10";
181
366
  export const MAX_DAILY_SPEND_USD = process.env.MAX_DAILY_SPEND_USD || "10";
182
367
  export const MAX_X402_PAYMENT_USDC = process.env.MAX_X402_PAYMENT_USDC || "0.01";
183
- export const X402_PAYMENT_TOKEN_ADDRESS = (process.env.X402_PAYMENT_TOKEN_ADDRESS || USDC_ADDRESS);
368
+ export const X402_PAYMENT_TOKEN_ADDRESS = (process.env.X402_PAYMENT_TOKEN_ADDRESS || activeUsdcAddress());
184
369
  // ─── Risk Weights ──────────────────────────────────────────────────────
185
370
  export const RISK_WEIGHTS = {
186
371
  liquidityRisk: 0.25,
@@ -243,61 +428,83 @@ export const ERC20_ABI = [
243
428
  outputs: [{ name: "", type: "bool" }],
244
429
  },
245
430
  ];
246
- // ─── Risk Registry Contract ────────────────────────────────────────────
247
- export const RISK_REGISTRY_ADDRESS = (process.env.RISK_REGISTRY_ADDRESS ||
248
- "0x61962a6c812ee9f57b207e1ea47c19ae70bb7141");
249
- export const RISK_REGISTRY_ABI = [
250
- {
251
- name: "publish",
252
- type: "function",
253
- stateMutability: "nonpayable",
254
- inputs: [
255
- { name: "wallet", type: "address" },
256
- { name: "score", type: "uint256" },
257
- { name: "riskLevel", type: "string" },
258
- { name: "recommendation", type: "string" },
259
- ],
260
- outputs: [],
261
- },
262
- {
263
- name: "query",
264
- type: "function",
265
- stateMutability: "view",
266
- inputs: [{ name: "wallet", type: "address" }],
267
- outputs: [
268
- {
269
- name: "",
270
- type: "tuple",
271
- components: [
272
- { name: "score", type: "uint256" },
273
- { name: "riskLevel", type: "string" },
274
- { name: "recommendation", type: "string" },
275
- { name: "timestamp", type: "uint256" },
276
- { name: "assessedBy", type: "address" },
277
- ],
278
- },
279
- ],
280
- },
281
- {
282
- name: "setAuthorizedAgent",
283
- type: "function",
284
- stateMutability: "nonpayable",
285
- inputs: [
286
- { name: "agent", type: "address" },
287
- { name: "authorized", type: "bool" },
288
- ],
289
- outputs: [],
290
- },
291
- {
292
- anonymous: false,
293
- name: "RiskPublished",
294
- type: "event",
295
- inputs: [
296
- { indexed: true, name: "wallet", type: "address" },
297
- { indexed: false, name: "score", type: "uint256" },
298
- { indexed: false, name: "riskLevel", type: "string" },
299
- { indexed: false, name: "assessedBy", type: "address" },
300
- ],
301
- },
302
- ];
431
+ // ─── Managed-execution authorization gates ─────────────────────────
432
+ // NOTE: RiskRegistryV2 was retired in the P12 two-contract refactor. Managed-wallet
433
+ // authorization now reads from SafeHandsRegistry (see lib/safeHandsRegistry.ts);
434
+ // the former RISK_REGISTRY_V2_ADDRESS / RISK_REGISTRY_V2_ABI / DEFAULT_RISK_REGISTRY_VERSION
435
+ // exports were dead (unreferenced) and have been removed.
436
+ export const REQUIRE_AUTHORIZED_AGENT_FOR_WRITE = (process.env.REQUIRE_AUTHORIZED_AGENT_FOR_WRITE ?? "true") === "true";
437
+ // x402 is permissionless-first: self-signed x402 (the agent's own key) never needed
438
+ // registry authorization, and a managed/custodial x402 payment is allowlist-gated
439
+ // ONLY when this is explicitly opted in. Default OFF so x402 stays frictionless;
440
+ // the heavier managed write paths (swap/payment/approve) keep the default-on
441
+ // REQUIRE_AUTHORIZED_AGENT_FOR_WRITE gate above.
442
+ export const REQUIRE_AUTHORIZED_AGENT_FOR_X402 = process.env.REQUIRE_AUTHORIZED_AGENT_FOR_X402 === "true";
443
+ export const AUTO_AUTHORIZE_AGENT_WALLET = process.env.AUTO_AUTHORIZE_AGENT_WALLET === "true";
444
+ // ─── SafeHands on-chain layer (2-contract architecture) ────────────────
445
+ // SafeHandsRegistry — trust + reputation oracle
446
+ // SafeHandsAttestation — immutable proof ledger (see pharos/attestationPublisher.ts)
447
+ // Deployed on Pharos Pacific mainnet (chainId 1672) and baked as READ-path
448
+ // defaults below. Env vars still override; a chainId guard keeps the baked
449
+ // defaults Pacific-only (any other chain resolves to "" → fail-closed). Write
450
+ // availability is gated separately (WRITE_TOOLS_ENABLED + attester key) via
451
+ // process.env reads, so baking these read defaults never enables a write.
452
+ const SAFEHANDS_REGISTRY_ADDRESS_PACIFIC = "0x428e02bf85412e7242d991cd6725ec59e8b06c8d";
453
+ const SAFEHANDS_ATTESTATION_ADDRESS_PACIFIC = "0x71a7a87b3b1ab6d86204cad691bb32fd75b4588c";
454
+ const PACIFIC_MAINNET_CHAIN_ID = 1672;
455
+ /** Read-path resolver: env override → Pacific-mainnet baked default → "" (chainId-guarded, fail-closed). */
456
+ export function resolveSafeHandsRegistryAddress(chainId = CHAIN_ID) {
457
+ const env = process.env.SAFEHANDS_REGISTRY_ADDRESS || process.env.SAFEHANDS_RISK_REGISTRY_ADDRESS || "";
458
+ if (env)
459
+ return env;
460
+ return chainId === PACIFIC_MAINNET_CHAIN_ID ? SAFEHANDS_REGISTRY_ADDRESS_PACIFIC : "";
461
+ }
462
+ /**
463
+ * Read-path resolver: env override → Pacific-mainnet baked default → "" (chainId-guarded, fail-closed).
464
+ * NOTE: the legacy SAFEHANDS_RISK_REGISTRY_ADDRESS var aliases the REGISTRY contract only and is
465
+ * deliberately NOT accepted here — the attestation ledger is a different contract, and aliasing
466
+ * both to one address produced ABI-mismatch reads.
467
+ */
468
+ export function resolveSafeHandsAttestationAddress(chainId = CHAIN_ID) {
469
+ const env = process.env.SAFEHANDS_ATTESTATION_ADDRESS || "";
470
+ if (env)
471
+ return env;
472
+ return chainId === PACIFIC_MAINNET_CHAIN_ID ? SAFEHANDS_ATTESTATION_ADDRESS_PACIFIC : "";
473
+ }
474
+ // Back-compat consts — existing reporting consumers keep importing these unchanged.
475
+ export const SAFEHANDS_REGISTRY_ADDRESS = resolveSafeHandsRegistryAddress();
476
+ export const SAFEHANDS_ATTESTATION_ADDRESS = resolveSafeHandsAttestationAddress();
477
+ // NOTE: the former NO_RISK_SCORE = 255 sentinel was removed — the Merkle-batched
478
+ // SafeHandsRegistry has no per-record riskScoreOf read, and no code path consumed
479
+ // the sentinel (its last import in agentEnrich.ts was dead).
480
+ export const SAFEHANDS_REGISTRY_ABI = parseAbi([
481
+ "function owner() view returns (address)",
482
+ "function isAuthorizedOperator(address) view returns (bool)",
483
+ "function isAuthorizedAgent(address) view returns (bool)",
484
+ "function setAuthorizedAgent(address agent, bool authorized)",
485
+ "function setAuthorizedAgents(address[] agents, bool authorized)",
486
+ "function setOperator(address operator, bool authorized)",
487
+ "function currentMerkleRoot() view returns (bytes32)",
488
+ "function currentDataURI() view returns (string)",
489
+ "function commitRiskRoot(bytes32 root, string dataURI)",
490
+ "function verifyRiskRecord(address target, bytes32 actionHash, uint8 score, uint8 level, uint8 recommendation, bytes32 policyVersionHash, bytes32 evidenceHash, uint64 expiresAt, bytes32[] proof) view returns (bool)",
491
+ ]);
492
+ // ─── Canonical Infrastructure Contracts ─────────────────────────────────
493
+ // Recognized as safe by the SafeHands Policy Engine to reduce false positives.
494
+ // Derived from the canonical ecosystem registry (src/data/ecosystemRegistry.data.ts)
495
+ // so the policy engine, the read-API analyzer (contractIntel), and the Anvita
496
+ // hosted-skill assets all recognize the same set — the registry is the single
497
+ // source of truth for these addresses.
498
+ function canonicalRegistryAddresses(itemId) {
499
+ const item = ECOSYSTEM_REGISTRY_ITEMS.find((i) => i.id === itemId);
500
+ return (item?.contracts ?? []).map((c) => c.address.toLowerCase());
501
+ }
502
+ export const PACIFIC_CANONICAL_CONTRACTS = canonicalRegistryAddresses("infrastructure:pacific-mainnet:canonical-contracts");
503
+ export const ATLANTIC_CANONICAL_CONTRACTS = canonicalRegistryAddresses("infrastructure:atlantic-testnet:canonical-contracts");
504
+ export function isCanonicalInfrastructure(address, isMainnet) {
505
+ if (!address)
506
+ return false;
507
+ const list = isMainnet ? PACIFIC_CANONICAL_CONTRACTS : ATLANTIC_CANONICAL_CONTRACTS;
508
+ return list.includes(address.toLowerCase());
509
+ }
303
510
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,0CAA0C;AAC1C,qGAAqG;AACrG,gGAAgG;AAChG,qGAAqG;AACrG,8FAA8F;AAC9F,2EAA2E;AAE3E,0EAA0E;AAE1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;AACvF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,QAAQ,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uCAAuC,CAAC;AAC7F,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,qCAAqC,CAAC;AACvG,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB,EAAE;QACrB,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,uCAAuC;QACtD,WAAW,EAAE,kCAAkC;QAC/C,UAAU,EAAE,6EAA6E;KAC1F;CACO,CAAC;AAEX,0EAA0E;AAC1E,kFAAkF;AAClF,gDAAgD;AAChD,4EAA4E;AAC5E,yFAAyF;AACzF,qDAAqD;AAErD,uEAAuE;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAElF,uEAAuE;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAElF,kGAAkG;AAClG,MAAM,CAAC,MAAM,mBAAmB,GAAG,4CAAqD,CAAC;AAEzF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,4CAAqD,CAAC;AAEnF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,iDAAiD;QAC1D,UAAU,EAAE,0BAA0B;KACvC;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,8HAA8H;QACvI,UAAU,EAAE,8CAA8C;QAC1D,kBAAkB,EAAE,wCAAwC;KAC7D;IACD,WAAW,EAAE;QACX,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,2IAA2I;QACpJ,UAAU,EAAE,8HAA8H;QAC1I,kBAAkB,EAAE,wBAAwB;KAC7C;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,qDAAqD;QAC9D,UAAU,EAAE,wDAAwD;QACpE,kBAAkB,EAAE,eAAe;KACpC;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,sDAAsD;QAC/D,UAAU,EAAE,wDAAwD;QACpE,kBAAkB,EAAE,eAAe;KACpC;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,sDAAsD;QAC/D,UAAU,EAAE,wDAAwD;QACpE,kBAAkB,EAAE,eAAe;KACpC;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,wDAAwD;QACjE,UAAU,EAAE,wDAAwD;QACpE,kBAAkB,EAAE,eAAe;KACpC;CACO,CAAC;AAEX,0EAA0E;AAE1E,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;IAChC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IAC/B,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IAC/B,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IACtC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;IAChC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;IAChC,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;CAClC,CAAC;AAEF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,SAAS,GAAkC;IACtD,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,mBAAmB;IAChC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;CACrB,CAAC;AAEF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,4CAAqD,CAAC;AAC1F,MAAM,CAAC,MAAM,wBAAwB,GAAG,4CAAqD,CAAC;AAC9F,MAAM,CAAC,MAAM,wBAAwB,GAAG,4CAAqD,CAAC;AAE9F,0EAA0E;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,uBAAuB,CAAC;AAClF,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,0EAA0E;AAE1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC,0EAA0E;AAE1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,IAAI,CAAC;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,MAAM,CAAC;AACjF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,YAAY,CAAkB,CAAC;AAEpH,0EAA0E;AAE1E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,IAAI;IACtB,WAAW,EAAE,IAAI;IACjB,mBAAmB,EAAE,IAAI;CACjB,CAAC;AAEX,0EAA0E;AAE1E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SACrC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KACzC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KACvC;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACxC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;CACO,CAAC;AAEX,0EAA0E;AAE1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACrE,4CAA4C,CAAkB,CAAC;AAEjE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3C;QACD,OAAO,EAAE,EAAE;KACZ;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1C,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;iBACxC;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;SACrC;QACD,OAAO,EAAE,EAAE;KACZ;IACD;QACE,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE;YACN,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YAClD,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClD,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrD,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;SACxD;KACF;CACO,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"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"}