safehands-pharos 1.5.0 → 2.8.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 (566) 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/handsafe.zip +0 -0
  117. package/dist/index.d.ts +0 -0
  118. package/dist/index.d.ts.map +0 -0
  119. package/dist/index.js +212 -135
  120. package/dist/index.js.map +1 -1
  121. package/dist/init.d.ts +0 -0
  122. package/dist/init.d.ts.map +1 -1
  123. package/dist/init.js +72 -10
  124. package/dist/init.js.map +1 -1
  125. package/dist/lib/analysis/abiWords.d.ts +17 -0
  126. package/dist/lib/analysis/abiWords.d.ts.map +1 -0
  127. package/dist/lib/analysis/abiWords.js +48 -0
  128. package/dist/lib/analysis/abiWords.js.map +1 -0
  129. package/dist/lib/analysis/approval.d.ts +29 -0
  130. package/dist/lib/analysis/approval.d.ts.map +1 -0
  131. package/dist/lib/analysis/approval.js +189 -0
  132. package/dist/lib/analysis/approval.js.map +1 -0
  133. package/dist/lib/analysis/calldata.d.ts +60 -0
  134. package/dist/lib/analysis/calldata.d.ts.map +1 -0
  135. package/dist/lib/analysis/calldata.js +464 -0
  136. package/dist/lib/analysis/calldata.js.map +1 -0
  137. package/dist/lib/analysis/contractIntel.d.ts +65 -0
  138. package/dist/lib/analysis/contractIntel.d.ts.map +1 -0
  139. package/dist/lib/analysis/contractIntel.js +320 -0
  140. package/dist/lib/analysis/contractIntel.js.map +1 -0
  141. package/dist/lib/analysis/evm.d.ts +42 -0
  142. package/dist/lib/analysis/evm.d.ts.map +1 -0
  143. package/dist/lib/analysis/evm.js +185 -0
  144. package/dist/lib/analysis/evm.js.map +1 -0
  145. package/dist/lib/analysis/gas.d.ts +4 -0
  146. package/dist/lib/analysis/gas.d.ts.map +1 -0
  147. package/dist/lib/analysis/gas.js +13 -0
  148. package/dist/lib/analysis/gas.js.map +1 -0
  149. package/dist/lib/analysis/index.d.ts +11 -0
  150. package/dist/lib/analysis/index.d.ts.map +1 -0
  151. package/dist/lib/analysis/index.js +16 -0
  152. package/dist/lib/analysis/index.js.map +1 -0
  153. package/dist/lib/analysis/pharosTokens.d.ts +31 -0
  154. package/dist/lib/analysis/pharosTokens.d.ts.map +1 -0
  155. package/dist/lib/analysis/pharosTokens.js +78 -0
  156. package/dist/lib/analysis/pharosTokens.js.map +1 -0
  157. package/dist/lib/analysis/safeTx.d.ts +27 -0
  158. package/dist/lib/analysis/safeTx.d.ts.map +1 -0
  159. package/dist/lib/analysis/safeTx.js +118 -0
  160. package/dist/lib/analysis/safeTx.js.map +1 -0
  161. package/dist/lib/analysis/token.d.ts +21 -0
  162. package/dist/lib/analysis/token.d.ts.map +1 -0
  163. package/dist/lib/analysis/token.js +151 -0
  164. package/dist/lib/analysis/token.js.map +1 -0
  165. package/dist/lib/analysis/types.d.ts +49 -0
  166. package/dist/lib/analysis/types.d.ts.map +1 -0
  167. package/dist/lib/analysis/types.js +10 -0
  168. package/dist/lib/analysis/types.js.map +1 -0
  169. package/dist/lib/analysis/x402.d.ts +24 -0
  170. package/dist/lib/analysis/x402.d.ts.map +1 -0
  171. package/dist/lib/analysis/x402.js +60 -0
  172. package/dist/lib/analysis/x402.js.map +1 -0
  173. package/dist/lib/auditLog.d.ts +1 -0
  174. package/dist/lib/auditLog.d.ts.map +1 -1
  175. package/dist/lib/auditLog.js +0 -0
  176. package/dist/lib/auditLog.js.map +1 -1
  177. package/dist/lib/config.d.ts +77 -0
  178. package/dist/lib/config.d.ts.map +1 -0
  179. package/dist/lib/config.js +120 -0
  180. package/dist/lib/config.js.map +1 -0
  181. package/dist/lib/constants.d.ts +246 -97
  182. package/dist/lib/constants.d.ts.map +1 -1
  183. package/dist/lib/constants.js +334 -127
  184. package/dist/lib/constants.js.map +1 -1
  185. package/dist/lib/dodoApi.d.ts +26 -3
  186. package/dist/lib/dodoApi.d.ts.map +1 -1
  187. package/dist/lib/dodoApi.js +80 -17
  188. package/dist/lib/dodoApi.js.map +1 -1
  189. package/dist/lib/ecosystemRegistry.d.ts +126 -0
  190. package/dist/lib/ecosystemRegistry.d.ts.map +1 -0
  191. package/dist/lib/ecosystemRegistry.js +178 -0
  192. package/dist/lib/ecosystemRegistry.js.map +1 -0
  193. package/dist/lib/envLoader.d.ts +0 -0
  194. package/dist/lib/envLoader.d.ts.map +0 -0
  195. package/dist/lib/envLoader.js +39 -18
  196. package/dist/lib/envLoader.js.map +1 -1
  197. package/dist/lib/goldsky.d.ts +58 -0
  198. package/dist/lib/goldsky.d.ts.map +1 -0
  199. package/dist/lib/goldsky.js +275 -0
  200. package/dist/lib/goldsky.js.map +1 -0
  201. package/dist/lib/guardian/decision.d.ts +23 -0
  202. package/dist/lib/guardian/decision.d.ts.map +1 -0
  203. package/dist/lib/guardian/decision.js +40 -0
  204. package/dist/lib/guardian/decision.js.map +1 -0
  205. package/dist/lib/http.d.ts +0 -1
  206. package/dist/lib/http.d.ts.map +1 -1
  207. package/dist/lib/http.js +297 -32
  208. package/dist/lib/http.js.map +1 -1
  209. package/dist/lib/managedExecution.d.ts +19 -0
  210. package/dist/lib/managedExecution.d.ts.map +1 -0
  211. package/dist/lib/managedExecution.js +64 -0
  212. package/dist/lib/managedExecution.js.map +1 -0
  213. package/dist/lib/merkleBatcher.d.ts +23 -0
  214. package/dist/lib/merkleBatcher.d.ts.map +1 -0
  215. package/dist/lib/merkleBatcher.js +62 -0
  216. package/dist/lib/merkleBatcher.js.map +1 -0
  217. package/dist/lib/networks.d.ts +48 -0
  218. package/dist/lib/networks.d.ts.map +1 -0
  219. package/dist/lib/networks.js +103 -0
  220. package/dist/lib/networks.js.map +1 -0
  221. package/dist/lib/observability/accessContext.d.ts +29 -0
  222. package/dist/lib/observability/accessContext.d.ts.map +1 -0
  223. package/dist/lib/observability/accessContext.js +50 -0
  224. package/dist/lib/observability/accessContext.js.map +1 -0
  225. package/dist/lib/observability/activityStore.d.ts +70 -0
  226. package/dist/lib/observability/activityStore.d.ts.map +1 -0
  227. package/dist/lib/observability/activityStore.js +149 -0
  228. package/dist/lib/observability/activityStore.js.map +1 -0
  229. package/dist/lib/observability/apiKey.d.ts +55 -0
  230. package/dist/lib/observability/apiKey.d.ts.map +1 -0
  231. package/dist/lib/observability/apiKey.js +141 -0
  232. package/dist/lib/observability/apiKey.js.map +1 -0
  233. package/dist/lib/observability/logger.d.ts +30 -0
  234. package/dist/lib/observability/logger.d.ts.map +1 -0
  235. package/dist/lib/observability/logger.js +30 -0
  236. package/dist/lib/observability/logger.js.map +1 -0
  237. package/dist/lib/observability/quota.d.ts +33 -0
  238. package/dist/lib/observability/quota.d.ts.map +1 -0
  239. package/dist/lib/observability/quota.js +49 -0
  240. package/dist/lib/observability/quota.js.map +1 -0
  241. package/dist/lib/observability/requestId.d.ts +8 -0
  242. package/dist/lib/observability/requestId.d.ts.map +1 -0
  243. package/dist/lib/observability/requestId.js +24 -0
  244. package/dist/lib/observability/requestId.js.map +1 -0
  245. package/dist/lib/observability/sanitize.d.ts +77 -0
  246. package/dist/lib/observability/sanitize.d.ts.map +1 -0
  247. package/dist/lib/observability/sanitize.js +228 -0
  248. package/dist/lib/observability/sanitize.js.map +1 -0
  249. package/dist/lib/observability/scopes.d.ts +20 -0
  250. package/dist/lib/observability/scopes.d.ts.map +1 -0
  251. package/dist/lib/observability/scopes.js +77 -0
  252. package/dist/lib/observability/scopes.js.map +1 -0
  253. package/dist/lib/okxDexApi.d.ts +106 -0
  254. package/dist/lib/okxDexApi.d.ts.map +1 -0
  255. package/dist/lib/okxDexApi.js +221 -0
  256. package/dist/lib/okxDexApi.js.map +1 -0
  257. package/dist/lib/persistentJsonStore.d.ts +5 -0
  258. package/dist/lib/persistentJsonStore.d.ts.map +1 -0
  259. package/dist/lib/persistentJsonStore.js +39 -0
  260. package/dist/lib/persistentJsonStore.js.map +1 -0
  261. package/dist/lib/pharos/attestationPublisher.d.ts +50 -0
  262. package/dist/lib/pharos/attestationPublisher.d.ts.map +1 -0
  263. package/dist/lib/pharos/attestationPublisher.js +262 -0
  264. package/dist/lib/pharos/attestationPublisher.js.map +1 -0
  265. package/dist/lib/pharos/ecosystem.d.ts +52 -0
  266. package/dist/lib/pharos/ecosystem.d.ts.map +1 -0
  267. package/dist/lib/pharos/ecosystem.js +431 -0
  268. package/dist/lib/pharos/ecosystem.js.map +1 -0
  269. package/dist/lib/pharos/ecosystemEvidence.d.ts +53 -0
  270. package/dist/lib/pharos/ecosystemEvidence.d.ts.map +1 -0
  271. package/dist/lib/pharos/ecosystemEvidence.js +133 -0
  272. package/dist/lib/pharos/ecosystemEvidence.js.map +1 -0
  273. package/dist/lib/pharos/rpc.d.ts +44 -0
  274. package/dist/lib/pharos/rpc.d.ts.map +1 -0
  275. package/dist/lib/pharos/rpc.js +90 -0
  276. package/dist/lib/pharos/rpc.js.map +1 -0
  277. package/dist/lib/pharos/rpcEvidence.d.ts +49 -0
  278. package/dist/lib/pharos/rpcEvidence.d.ts.map +1 -0
  279. package/dist/lib/pharos/rpcEvidence.js +46 -0
  280. package/dist/lib/pharos/rpcEvidence.js.map +1 -0
  281. package/dist/lib/pharos/rpcMethods.d.ts +46 -0
  282. package/dist/lib/pharos/rpcMethods.d.ts.map +1 -0
  283. package/dist/lib/pharos/rpcMethods.js +176 -0
  284. package/dist/lib/pharos/rpcMethods.js.map +1 -0
  285. package/dist/lib/pharos/spvVerifier.d.ts +47 -0
  286. package/dist/lib/pharos/spvVerifier.d.ts.map +1 -0
  287. package/dist/lib/pharos/spvVerifier.js +105 -0
  288. package/dist/lib/pharos/spvVerifier.js.map +1 -0
  289. package/dist/lib/pharos/userSignedBroadcaster.d.ts +10 -0
  290. package/dist/lib/pharos/userSignedBroadcaster.d.ts.map +1 -0
  291. package/dist/lib/pharos/userSignedBroadcaster.js +50 -0
  292. package/dist/lib/pharos/userSignedBroadcaster.js.map +1 -0
  293. package/dist/lib/pharosClient.d.ts +5 -10
  294. package/dist/lib/pharosClient.d.ts.map +1 -1
  295. package/dist/lib/pharosClient.js +9 -16
  296. package/dist/lib/pharosClient.js.map +1 -1
  297. package/dist/lib/policy/actionPolicyEngine.d.ts +37 -1
  298. package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
  299. package/dist/lib/policy/actionPolicyEngine.js +213 -52
  300. package/dist/lib/policy/actionPolicyEngine.js.map +1 -1
  301. package/dist/lib/policy/agentPolicy.d.ts +29 -0
  302. package/dist/lib/policy/agentPolicy.d.ts.map +1 -0
  303. package/dist/lib/policy/agentPolicy.js +154 -0
  304. package/dist/lib/policy/agentPolicy.js.map +1 -0
  305. package/dist/lib/policy/policyPresets.d.ts +30 -0
  306. package/dist/lib/policy/policyPresets.d.ts.map +1 -0
  307. package/dist/lib/policy/policyPresets.js +124 -0
  308. package/dist/lib/policy/policyPresets.js.map +1 -0
  309. package/dist/lib/policy/writeExecutionGate.d.ts +23 -0
  310. package/dist/lib/policy/writeExecutionGate.d.ts.map +1 -0
  311. package/dist/lib/policy/writeExecutionGate.js +65 -0
  312. package/dist/lib/policy/writeExecutionGate.js.map +1 -0
  313. package/dist/lib/preparedTxStore.d.ts +21 -0
  314. package/dist/lib/preparedTxStore.d.ts.map +1 -0
  315. package/dist/lib/preparedTxStore.js +90 -0
  316. package/dist/lib/preparedTxStore.js.map +1 -0
  317. package/dist/lib/price/chainlinkPushProvider.d.ts +34 -0
  318. package/dist/lib/price/chainlinkPushProvider.d.ts.map +1 -0
  319. package/dist/lib/price/chainlinkPushProvider.js +36 -0
  320. package/dist/lib/price/chainlinkPushProvider.js.map +1 -0
  321. package/dist/lib/price/feedRegistry.d.ts +26 -0
  322. package/dist/lib/price/feedRegistry.d.ts.map +1 -0
  323. package/dist/lib/price/feedRegistry.js +67 -0
  324. package/dist/lib/price/feedRegistry.js.map +1 -0
  325. package/dist/lib/price/priceResolver.d.ts +35 -0
  326. package/dist/lib/price/priceResolver.d.ts.map +1 -0
  327. package/dist/lib/price/priceResolver.js +246 -0
  328. package/dist/lib/price/priceResolver.js.map +1 -0
  329. package/dist/lib/price/supraProvider.d.ts +9 -0
  330. package/dist/lib/price/supraProvider.d.ts.map +1 -0
  331. package/dist/lib/price/supraProvider.js +17 -0
  332. package/dist/lib/price/supraProvider.js.map +1 -0
  333. package/dist/lib/price/types.d.ts +67 -0
  334. package/dist/lib/price/types.d.ts.map +1 -0
  335. package/dist/lib/price/types.js +7 -0
  336. package/dist/lib/price/types.js.map +1 -0
  337. package/dist/lib/productionGuards.d.ts +16 -0
  338. package/dist/lib/productionGuards.d.ts.map +1 -0
  339. package/dist/lib/productionGuards.js +93 -0
  340. package/dist/lib/productionGuards.js.map +1 -0
  341. package/dist/lib/recipientSafety.d.ts +5 -0
  342. package/dist/lib/recipientSafety.d.ts.map +1 -0
  343. package/dist/lib/recipientSafety.js +28 -0
  344. package/dist/lib/recipientSafety.js.map +1 -0
  345. package/dist/lib/riskEngine.d.ts +19 -0
  346. package/dist/lib/riskEngine.d.ts.map +1 -1
  347. package/dist/lib/riskEngine.js +107 -38
  348. package/dist/lib/riskEngine.js.map +1 -1
  349. package/dist/lib/riskInclusion.d.ts +72 -0
  350. package/dist/lib/riskInclusion.d.ts.map +1 -0
  351. package/dist/lib/riskInclusion.js +252 -0
  352. package/dist/lib/riskInclusion.js.map +1 -0
  353. package/dist/lib/safeHandsRegistry.d.ts +32 -0
  354. package/dist/lib/safeHandsRegistry.d.ts.map +1 -0
  355. package/dist/lib/safeHandsRegistry.js +151 -0
  356. package/dist/lib/safeHandsRegistry.js.map +1 -0
  357. package/dist/lib/signer/index.d.ts +3 -3
  358. package/dist/lib/signer/index.d.ts.map +1 -1
  359. package/dist/lib/signer/index.js +33 -11
  360. package/dist/lib/signer/index.js.map +1 -1
  361. package/dist/lib/spendAccumulator.d.ts +24 -1
  362. package/dist/lib/spendAccumulator.d.ts.map +1 -1
  363. package/dist/lib/spendAccumulator.js +76 -6
  364. package/dist/lib/spendAccumulator.js.map +1 -1
  365. package/dist/lib/toolResponse.d.ts +6 -1
  366. package/dist/lib/toolResponse.d.ts.map +1 -1
  367. package/dist/lib/toolResponse.js +13 -9
  368. package/dist/lib/toolResponse.js.map +1 -1
  369. package/dist/lib/validation.d.ts +7 -0
  370. package/dist/lib/validation.d.ts.map +1 -0
  371. package/dist/lib/validation.js +62 -0
  372. package/dist/lib/validation.js.map +1 -0
  373. package/dist/lib/wallet/index.d.ts +8 -12
  374. package/dist/lib/wallet/index.d.ts.map +1 -1
  375. package/dist/lib/wallet/index.js +48 -35
  376. package/dist/lib/wallet/index.js.map +1 -1
  377. package/dist/lib/x402ReplayStore.d.ts +6 -0
  378. package/dist/lib/x402ReplayStore.d.ts.map +1 -0
  379. package/dist/lib/x402ReplayStore.js +79 -0
  380. package/dist/lib/x402ReplayStore.js.map +1 -0
  381. package/dist/safehands.zip +0 -0
  382. package/dist/sdk.d.ts +14 -0
  383. package/dist/sdk.d.ts.map +1 -0
  384. package/dist/sdk.js +25 -0
  385. package/dist/sdk.js.map +1 -0
  386. package/dist/tools/approveToken.d.ts +31 -10
  387. package/dist/tools/approveToken.d.ts.map +1 -1
  388. package/dist/tools/approveToken.js +91 -24
  389. package/dist/tools/approveToken.js.map +1 -1
  390. package/dist/tools/assessRisk.d.ts +13 -26
  391. package/dist/tools/assessRisk.d.ts.map +1 -1
  392. package/dist/tools/assessRisk.js +34 -75
  393. package/dist/tools/assessRisk.js.map +1 -1
  394. package/dist/tools/checkAllowance.d.ts +9 -3
  395. package/dist/tools/checkAllowance.d.ts.map +1 -1
  396. package/dist/tools/checkAllowance.js +27 -5
  397. package/dist/tools/checkAllowance.js.map +1 -1
  398. package/dist/tools/checkTokenSecurity.d.ts +62 -5
  399. package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
  400. package/dist/tools/checkTokenSecurity.js +166 -21
  401. package/dist/tools/checkTokenSecurity.js.map +1 -1
  402. package/dist/tools/createAgentWallet.d.ts +4 -2
  403. package/dist/tools/createAgentWallet.d.ts.map +1 -1
  404. package/dist/tools/createAgentWallet.js +36 -31
  405. package/dist/tools/createAgentWallet.js.map +1 -1
  406. package/dist/tools/estimateGas.d.ts +7 -2
  407. package/dist/tools/estimateGas.d.ts.map +1 -1
  408. package/dist/tools/estimateGas.js +16 -10
  409. package/dist/tools/estimateGas.js.map +1 -1
  410. package/dist/tools/executeSwap.d.ts +56 -8
  411. package/dist/tools/executeSwap.d.ts.map +1 -1
  412. package/dist/tools/executeSwap.js +194 -46
  413. package/dist/tools/executeSwap.js.map +1 -1
  414. package/dist/tools/explainRisk.d.ts +9 -9
  415. package/dist/tools/explainRisk.d.ts.map +1 -1
  416. package/dist/tools/explainRisk.js +5 -4
  417. package/dist/tools/explainRisk.js.map +1 -1
  418. package/dist/tools/getAgentPolicy.d.ts +15 -0
  419. package/dist/tools/getAgentPolicy.d.ts.map +1 -0
  420. package/dist/tools/getAgentPolicy.js +16 -0
  421. package/dist/tools/getAgentPolicy.js.map +1 -0
  422. package/dist/tools/getAgentReputation.d.ts +31 -0
  423. package/dist/tools/getAgentReputation.d.ts.map +1 -0
  424. package/dist/tools/getAgentReputation.js +44 -0
  425. package/dist/tools/getAgentReputation.js.map +1 -0
  426. package/dist/tools/getAgentWallet.d.ts +1 -1
  427. package/dist/tools/getAgentWallet.d.ts.map +1 -1
  428. package/dist/tools/getAgentWallet.js +11 -1
  429. package/dist/tools/getAgentWallet.js.map +1 -1
  430. package/dist/tools/getAgentWalletBalance.d.ts +1 -1
  431. package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
  432. package/dist/tools/getAgentWalletBalance.js +58 -26
  433. package/dist/tools/getAgentWalletBalance.js.map +1 -1
  434. package/dist/tools/getExecutionHistory.d.ts +1 -1
  435. package/dist/tools/getExecutionHistory.d.ts.map +1 -1
  436. package/dist/tools/getExecutionHistory.js +13 -19
  437. package/dist/tools/getExecutionHistory.js.map +1 -1
  438. package/dist/tools/getGasPrice.d.ts +3 -3
  439. package/dist/tools/getGasPrice.d.ts.map +0 -0
  440. package/dist/tools/getGasPrice.js +7 -7
  441. package/dist/tools/getGasPrice.js.map +1 -1
  442. package/dist/tools/getPoolInfo.d.ts +17 -17
  443. package/dist/tools/getPoolInfo.d.ts.map +1 -1
  444. package/dist/tools/getPoolInfo.js +14 -9
  445. package/dist/tools/getPoolInfo.js.map +1 -1
  446. package/dist/tools/getSpvProof.d.ts +24 -0
  447. package/dist/tools/getSpvProof.d.ts.map +1 -0
  448. package/dist/tools/getSpvProof.js +64 -0
  449. package/dist/tools/getSpvProof.js.map +1 -0
  450. package/dist/tools/getTokenPrice.d.ts +28 -85
  451. package/dist/tools/getTokenPrice.d.ts.map +1 -1
  452. package/dist/tools/getTokenPrice.js +87 -94
  453. package/dist/tools/getTokenPrice.js.map +1 -1
  454. package/dist/tools/getTransactionStatus.d.ts +2 -2
  455. package/dist/tools/getTransactionStatus.d.ts.map +0 -0
  456. package/dist/tools/getTransactionStatus.js +0 -0
  457. package/dist/tools/getTransactionStatus.js.map +0 -0
  458. package/dist/tools/getWalletBalance.d.ts +38 -3
  459. package/dist/tools/getWalletBalance.d.ts.map +1 -1
  460. package/dist/tools/getWalletBalance.js +92 -52
  461. package/dist/tools/getWalletBalance.js.map +1 -1
  462. package/dist/tools/publishRiskScore.d.ts +36 -14
  463. package/dist/tools/publishRiskScore.d.ts.map +1 -1
  464. package/dist/tools/publishRiskScore.js +80 -32
  465. package/dist/tools/publishRiskScore.js.map +1 -1
  466. package/dist/tools/queryGoldsky.d.ts +20 -0
  467. package/dist/tools/queryGoldsky.d.ts.map +1 -0
  468. package/dist/tools/queryGoldsky.js +29 -0
  469. package/dist/tools/queryGoldsky.js.map +1 -0
  470. package/dist/tools/queryRiskRegistry.d.ts +14 -14
  471. package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
  472. package/dist/tools/queryRiskRegistry.js +34 -30
  473. package/dist/tools/queryRiskRegistry.js.map +1 -1
  474. package/dist/tools/safehandsPreflightCheck.d.ts +29 -14
  475. package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
  476. package/dist/tools/safehandsPreflightCheck.js +133 -6
  477. package/dist/tools/safehandsPreflightCheck.js.map +1 -1
  478. package/dist/tools/safehandsRiskReport.d.ts +29 -14
  479. package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
  480. package/dist/tools/safehandsRiskReport.js +23 -3
  481. package/dist/tools/safehandsRiskReport.js.map +1 -1
  482. package/dist/tools/safehandsSafeExecute.d.ts +1 -1
  483. package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
  484. package/dist/tools/safehandsSafeExecute.js +100 -17
  485. package/dist/tools/safehandsSafeExecute.js.map +1 -1
  486. package/dist/tools/safehandsWalletHealth.d.ts +15 -1
  487. package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
  488. package/dist/tools/safehandsWalletHealth.js +67 -25
  489. package/dist/tools/safehandsWalletHealth.js.map +1 -1
  490. package/dist/tools/safehandsX402Preflight.d.ts +3 -3
  491. package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
  492. package/dist/tools/safehandsX402Preflight.js +24 -3
  493. package/dist/tools/safehandsX402Preflight.js.map +1 -1
  494. package/dist/tools/sendPayment.d.ts +10 -4
  495. package/dist/tools/sendPayment.d.ts.map +1 -1
  496. package/dist/tools/sendPayment.js +63 -36
  497. package/dist/tools/sendPayment.js.map +1 -1
  498. package/dist/tools/setAgentPolicy.d.ts +75 -0
  499. package/dist/tools/setAgentPolicy.d.ts.map +1 -0
  500. package/dist/tools/setAgentPolicy.js +80 -0
  501. package/dist/tools/setAgentPolicy.js.map +1 -0
  502. package/dist/tools/simulateTransaction.d.ts +7 -3
  503. package/dist/tools/simulateTransaction.d.ts.map +1 -1
  504. package/dist/tools/simulateTransaction.js +42 -9
  505. package/dist/tools/simulateTransaction.js.map +1 -1
  506. package/dist/tools/tokenRegistryStatus.d.ts +25 -5
  507. package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
  508. package/dist/tools/tokenRegistryStatus.js +61 -31
  509. package/dist/tools/tokenRegistryStatus.js.map +1 -1
  510. package/dist/tools/verifyRiskInclusion.d.ts +59 -0
  511. package/dist/tools/verifyRiskInclusion.d.ts.map +1 -0
  512. package/dist/tools/verifyRiskInclusion.js +40 -0
  513. package/dist/tools/verifyRiskInclusion.js.map +1 -0
  514. package/dist/tools/x402PayAndFetch.d.ts +15 -9
  515. package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
  516. package/dist/tools/x402PayAndFetch.js +163 -20
  517. package/dist/tools/x402PayAndFetch.js.map +1 -1
  518. package/dist/worker.d.ts +3 -0
  519. package/dist/worker.d.ts.map +1 -0
  520. package/dist/worker.js +39 -0
  521. package/dist/worker.js.map +1 -0
  522. package/dist/x402Server.d.ts +1 -1
  523. package/dist/x402Server.d.ts.map +1 -1
  524. package/dist/x402Server.js +144 -35
  525. package/dist/x402Server.js.map +1 -1
  526. package/docs/REVIEWER_QUICKSTART.md +113 -0
  527. package/docs/SAFEHANDS_REVIEWER_DEMO_SCRIPT.md +228 -0
  528. package/package.json +131 -73
  529. package/contracts/RiskRegistry.json +0 -223
  530. package/contracts/RiskRegistry.sol +0 -58
  531. package/dist/lib/testDodoLive.d.ts +0 -2
  532. package/dist/lib/testDodoLive.d.ts.map +0 -1
  533. package/dist/lib/testDodoLive.js +0 -105
  534. package/dist/lib/testDodoLive.js.map +0 -1
  535. package/dist/lib/testLiveSafehands.d.ts +0 -2
  536. package/dist/lib/testLiveSafehands.d.ts.map +0 -1
  537. package/dist/lib/testLiveSafehands.js +0 -93
  538. package/dist/lib/testLiveSafehands.js.map +0 -1
  539. package/dist/lib/testRpc.d.ts +0 -2
  540. package/dist/lib/testRpc.d.ts.map +0 -1
  541. package/dist/lib/testRpc.js +0 -30
  542. package/dist/lib/testRpc.js.map +0 -1
  543. package/dist/lib/testRpcLive.d.ts +0 -2
  544. package/dist/lib/testRpcLive.d.ts.map +0 -1
  545. package/dist/lib/testRpcLive.js +0 -89
  546. package/dist/lib/testRpcLive.js.map +0 -1
  547. package/dist/lib/testTools.d.ts +0 -2
  548. package/dist/lib/testTools.d.ts.map +0 -1
  549. package/dist/lib/testTools.js +0 -397
  550. package/dist/lib/testTools.js.map +0 -1
  551. package/dist/lib/testX402Live.d.ts +0 -2
  552. package/dist/lib/testX402Live.d.ts.map +0 -1
  553. package/dist/lib/testX402Live.js +0 -160
  554. package/dist/lib/testX402Live.js.map +0 -1
  555. package/dist/scripts/checkDeploy.d.ts +0 -2
  556. package/dist/scripts/checkDeploy.d.ts.map +0 -1
  557. package/dist/scripts/checkDeploy.js +0 -25
  558. package/dist/scripts/checkDeploy.js.map +0 -1
  559. package/dist/scripts/deployRegistry.d.ts +0 -2
  560. package/dist/scripts/deployRegistry.d.ts.map +0 -1
  561. package/dist/scripts/deployRegistry.js +0 -101
  562. package/dist/scripts/deployRegistry.js.map +0 -1
  563. package/dist/scripts/testRegistry.d.ts +0 -2
  564. package/dist/scripts/testRegistry.d.ts.map +0 -1
  565. package/dist/scripts/testRegistry.js +0 -44
  566. package/dist/scripts/testRegistry.js.map +0 -1
@@ -0,0 +1,228 @@
1
+ // ─── Activity Sanitization ─────────────────────────────────────────────
2
+ // Builds a PUBLIC, sanitized activity item from a decision/analysis request +
3
+ // its response payload. The cardinal rule: a strict field WHITELIST — we never
4
+ // spread a request body or response into the item. Only coarse, non-sensitive
5
+ // derivatives are kept:
6
+ // • decision / riskLevel / network / chainId / readOnly / executionAvailable
7
+ // • a short reason summary (with any long hex redacted)
8
+ // • a coarse target (type + shortened address + 4-byte selector + short txHash)
9
+ // • evidence TYPE names only (never their values)
10
+ // Never stored: full payloads, full addresses, full calldata, full URLs, full
11
+ // x402 payment requests, private keys, signatures, raw signed txs, API keys,
12
+ // secret RPC URLs, sensitive headers, wallet secrets.
13
+ // Pure + offline. No signing/wallet/write primitives anywhere in this file.
14
+ // ────────────────────────────────────────────────────────────────────────
15
+ import { randomBytes } from "node:crypto";
16
+ import { getActiveNetwork, getActiveNetworkName } from "../networks.js";
17
+ const ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
18
+ const TXHASH_RE = /^0x[0-9a-fA-F]{64}$/;
19
+ // Any 0x hex run of 8+ nibbles (addresses, hashes, calldata) embedded in text.
20
+ const LONG_HEX_RE = /0x[0-9a-fA-F]{8,}/g;
21
+ const REASON_MAX = 160;
22
+ /** Names of evidence blocks we may report as PRESENT (never their contents). */
23
+ const EVIDENCE_KEYS = [
24
+ "ecosystemEvidence",
25
+ "rpcEvidence",
26
+ "gasEvidence",
27
+ "pharosEvidence",
28
+ "canonicalContractEvidence",
29
+ "tokenRegistryEvidence",
30
+ ];
31
+ function shortenHex(value) {
32
+ return `${value.slice(0, 6)}…${value.slice(-4)}`;
33
+ }
34
+ /** `0x1234…cdef` for a valid 20-byte address, else null. */
35
+ export function shortenAddress(value) {
36
+ return typeof value === "string" && ADDRESS_RE.test(value) ? shortenHex(value) : null;
37
+ }
38
+ /** `0x1234…cdef` for a valid 32-byte tx hash, else null. */
39
+ export function shortenTxHash(value) {
40
+ return typeof value === "string" && TXHASH_RE.test(value) ? shortenHex(value) : null;
41
+ }
42
+ /** 4-byte selector `0x########` from calldata, else null. */
43
+ export function selectorOf(data) {
44
+ if (typeof data !== "string" || !data.startsWith("0x") || data.length < 10)
45
+ return null;
46
+ return data.slice(0, 10).toLowerCase();
47
+ }
48
+ /** Replace any long 0x hex run with a shortened form so no full hex leaks via text. */
49
+ export function redactLongHex(text) {
50
+ return text.replace(LONG_HEX_RE, (m) => shortenHex(m));
51
+ }
52
+ // Pull a candidate value from common request shapes (direct, or nested under the
53
+ // agent/a2a action keys), reading ONLY whitelisted scalar fields.
54
+ function pickNested(body, key) {
55
+ if (!body || typeof body !== "object")
56
+ return undefined;
57
+ const b = body;
58
+ if (typeof b[key] === "string")
59
+ return b[key];
60
+ for (const wrap of ["intent", "requestedAction", "action"]) {
61
+ const inner = b[wrap];
62
+ if (inner && typeof inner === "object" && typeof inner[key] === "string") {
63
+ return inner[key];
64
+ }
65
+ }
66
+ return undefined;
67
+ }
68
+ function pickAddress(body) {
69
+ return (pickNested(body, "to") ?? pickNested(body, "address") ?? pickNested(body, "spender"));
70
+ }
71
+ function pickData(body) {
72
+ return pickNested(body, "data");
73
+ }
74
+ function pickTxHash(body) {
75
+ return pickNested(body, "txHash");
76
+ }
77
+ function hasUrl(body) {
78
+ return typeof pickNested(body, "url") === "string" || typeof pickNested(body, "paymentAmountUsdc") === "string";
79
+ }
80
+ function hasText(body) {
81
+ return typeof pickNested(body, "text") === "string";
82
+ }
83
+ function evidenceTypesOf(payload) {
84
+ const found = new Set();
85
+ const scan = (obj) => {
86
+ if (!obj || typeof obj !== "object")
87
+ return;
88
+ const o = obj;
89
+ for (const k of EVIDENCE_KEYS)
90
+ if (o[k] != null)
91
+ found.add(k);
92
+ };
93
+ scan(payload);
94
+ if (payload && typeof payload === "object") {
95
+ const p = payload;
96
+ scan(p.details);
97
+ scan(p.evidence);
98
+ if (Array.isArray(p.analyzers)) {
99
+ for (const a of p.analyzers) {
100
+ scan(a);
101
+ if (a && typeof a === "object")
102
+ scan(a.details);
103
+ }
104
+ }
105
+ }
106
+ return [...found];
107
+ }
108
+ function reportedTargetType(payload) {
109
+ if (!payload || typeof payload !== "object")
110
+ return null;
111
+ const p = payload;
112
+ const fromDetails = (d) => {
113
+ if (d && typeof d === "object") {
114
+ const t = d.targetType;
115
+ if (t === "contract" || t === "eoa")
116
+ return t;
117
+ }
118
+ return null;
119
+ };
120
+ if (Array.isArray(p.analyzers)) {
121
+ for (const a of p.analyzers) {
122
+ if (a && typeof a === "object") {
123
+ const t = fromDetails(a.details);
124
+ if (t)
125
+ return t;
126
+ }
127
+ }
128
+ }
129
+ return fromDetails(p.details);
130
+ }
131
+ function deriveTargetType(body, payload) {
132
+ const reported = reportedTargetType(payload);
133
+ if (reported === "contract" || reported === "eoa")
134
+ return reported;
135
+ if (typeof pickNested(body, "address") === "string")
136
+ return "contract";
137
+ if (pickTxHash(body))
138
+ return "tx";
139
+ if (hasUrl(body))
140
+ return "url";
141
+ if (hasText(body))
142
+ return "text";
143
+ const data = pickData(body);
144
+ if (typeof data === "string" && data.length > 2)
145
+ return "contract";
146
+ if (pickAddress(body))
147
+ return "address";
148
+ return "none";
149
+ }
150
+ function str(value) {
151
+ return typeof value === "string" && value.length > 0 ? value : null;
152
+ }
153
+ function firstReason(payload) {
154
+ if (!payload || typeof payload !== "object")
155
+ return "";
156
+ const p = payload;
157
+ if (typeof p.summary === "string")
158
+ return p.summary;
159
+ if (Array.isArray(p.reasons) && typeof p.reasons[0] === "string")
160
+ return p.reasons[0];
161
+ if (p.details && typeof p.details === "object") {
162
+ const d = p.details;
163
+ if (typeof d.reason === "string")
164
+ return d.reason;
165
+ }
166
+ return "";
167
+ }
168
+ /**
169
+ * Build a sanitized {@link ActivityItem}. Reads only whitelisted derivatives —
170
+ * the raw body/payload are NEVER copied into the result.
171
+ */
172
+ export function toActivityItem(input) {
173
+ const { endpoint, callerType, requestId, body, payload } = input;
174
+ const p = (payload && typeof payload === "object" ? payload : {});
175
+ const network = str(p.network) ?? getActiveNetworkName();
176
+ const chainId = typeof p.chainId === "number" ? p.chainId : getActiveNetwork().chainId;
177
+ const checkType = endpoint.startsWith("/analyze/")
178
+ ? endpoint.slice("/analyze/".length)
179
+ : endpoint === "/guardian/check"
180
+ ? str(pickNested(body, "inputType")) ?? "evm"
181
+ : null;
182
+ const target = {
183
+ type: deriveTargetType(body, payload),
184
+ addressShort: shortenAddress(pickAddress(body)),
185
+ selector: selectorOf(pickData(body)),
186
+ txHashShort: shortenTxHash(pickTxHash(body) ?? payload?.txHash),
187
+ };
188
+ const access = input.access;
189
+ return {
190
+ id: randomBytes(8).toString("hex"),
191
+ ts: new Date().toISOString(),
192
+ requestId,
193
+ endpoint,
194
+ callerType,
195
+ accessTier: access?.callerType ?? "anonymous",
196
+ keyId: access?.keyId ?? null,
197
+ agentId: access?.agentId ?? null,
198
+ a2aPeerId: access?.a2aPeerId ?? null,
199
+ policyPreset: str(p.policyPreset),
200
+ network,
201
+ chainId,
202
+ checkType,
203
+ intentType: str(p.intent),
204
+ decision: str(p.decision),
205
+ riskLevel: str(p.riskLevel),
206
+ reasonSummary: redactLongHex(firstReason(payload)).slice(0, REASON_MAX),
207
+ evidenceTypes: evidenceTypesOf(payload),
208
+ readOnly: p.readOnly === false ? false : true,
209
+ executionAvailable: p.executionAvailable === true,
210
+ target,
211
+ preparedTransactionId: str(pickNested(body, "preparedTransactionId")),
212
+ preparedTransactionHashShort: shortenTxHash(pickNested(body, "preparedTransactionHash")),
213
+ broadcastStatus: str(p.broadcastStatus),
214
+ attestationStatus: str(p.attestationStatus),
215
+ executionStatus: str(p.executionStatus),
216
+ };
217
+ }
218
+ /** Map an endpoint path to its caller category for activity/logging. */
219
+ export function callerTypeForEndpoint(endpoint) {
220
+ if (endpoint === "/agent/a2a/check")
221
+ return "a2a";
222
+ if (endpoint === "/agent/check")
223
+ return "agent";
224
+ if (endpoint === "/guardian/check" || endpoint === "/prepare/tx" || endpoint === "/wallet/prepare" || endpoint === "/broadcast/signed" || endpoint.startsWith("/analyze/"))
225
+ return "api";
226
+ return "unknown";
227
+ }
228
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/lib/observability/sanitize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type Scope = "guardian:check" | "agent:check" | "a2a:check" | "analyze:read" | "activity:read" | "metrics:read" | "prepare:tx" | "wallet:prepare" | "broadcast:signed" | "future:attest" | "future:premium";
2
+ export declare const ALL_SCOPES: readonly Scope[];
3
+ /** Default read bundle a bare API key receives (backward-compatible). No future:* scopes.
4
+ * `prepare:tx` and `wallet:prepare` are read-only (build UNSIGNED / wallet-ready requests
5
+ * only — never sign or broadcast). */
6
+ export declare const DEFAULT_READ_SCOPES: readonly Scope[];
7
+ /** Reserved future scopes — defined only; never granted by default; no live endpoint. */
8
+ export declare const FUTURE_SCOPES: readonly Scope[];
9
+ /** Endpoint path → the scope it requires (only enforced in require-key mode). */
10
+ export declare const ENDPOINT_SCOPES: Readonly<Record<string, Scope>>;
11
+ export declare function isScope(value: string): value is Scope;
12
+ /** The required scope for a path, or null if the path has no scope mapping. */
13
+ export declare function scopeForPath(path: string): Scope | null;
14
+ export declare function hasScope(scopes: ReadonlySet<Scope> | null | undefined, scope: Scope): boolean;
15
+ /**
16
+ * Parse a `scopeA|scopeB` string into a Set of known scopes. Unknown tokens are
17
+ * dropped (fail-closed: an unrecognized scope grants nothing).
18
+ */
19
+ export declare function parseScopes(raw: string): Set<Scope>;
20
+ //# sourceMappingURL=scopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/lib/observability/scopes.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,KAAK,GACb,gBAAgB,GAChB,aAAa,GACb,WAAW,GACX,cAAc,GACd,eAAe,GACf,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,gBAAgB,CAAC;AAErB,eAAO,MAAM,UAAU,EAAE,SAAS,KAAK,EAYtC,CAAC;AAEF;;uCAEuC;AACvC,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAS/C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,aAAa,EAAE,SAAS,KAAK,EAAwC,CAAC;AAEnF,iFAAiF;AACjF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAiB3D,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,KAAK,CAErD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAEvD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAE7F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAOnD"}
@@ -0,0 +1,77 @@
1
+ // ─── API Key Scopes ──────────────────────────────────────────────
2
+ // Scope vocabulary for the optional API-key access-control layer. Scopes are
3
+ // identity/access-control only — never payment. `future:*` scopes are DEFINED
4
+ // here for forward-compatibility but are NOT granted by default and have NO live
5
+ // endpoint behind scoped API keys. Pure constants + helpers; no I/O, no secrets.
6
+ // ────────────────────────────────────────────────────────────────────────
7
+ export const ALL_SCOPES = [
8
+ "guardian:check",
9
+ "agent:check",
10
+ "a2a:check",
11
+ "analyze:read",
12
+ "activity:read",
13
+ "metrics:read",
14
+ "prepare:tx",
15
+ "wallet:prepare",
16
+ "broadcast:signed",
17
+ "future:attest",
18
+ "future:premium",
19
+ ];
20
+ /** Default read bundle a bare API key receives (backward-compatible). No future:* scopes.
21
+ * `prepare:tx` and `wallet:prepare` are read-only (build UNSIGNED / wallet-ready requests
22
+ * only — never sign or broadcast). */
23
+ export const DEFAULT_READ_SCOPES = [
24
+ "guardian:check",
25
+ "agent:check",
26
+ "a2a:check",
27
+ "analyze:read",
28
+ "activity:read",
29
+ "metrics:read",
30
+ "prepare:tx",
31
+ "wallet:prepare",
32
+ ];
33
+ /** Reserved future scopes — defined only; never granted by default; no live endpoint. */
34
+ export const FUTURE_SCOPES = ["future:attest", "future:premium"];
35
+ /** Endpoint path → the scope it requires (only enforced in require-key mode). */
36
+ export const ENDPOINT_SCOPES = {
37
+ "/guardian/check": "guardian:check",
38
+ "/prepare/tx": "prepare:tx",
39
+ "/wallet/prepare": "wallet:prepare",
40
+ "/broadcast/signed": "broadcast:signed",
41
+ "/agent/check": "agent:check",
42
+ "/agent/a2a/check": "a2a:check",
43
+ "/analyze/tx": "analyze:read",
44
+ "/analyze/contract": "analyze:read",
45
+ "/analyze/approval": "analyze:read",
46
+ "/analyze/safe": "analyze:read",
47
+ "/analyze/x402": "analyze:read",
48
+ "/activity/summary": "activity:read",
49
+ "/activity/recent": "activity:read",
50
+ "/metrics/public": "metrics:read",
51
+ "/infra/status": "metrics:read",
52
+ "/public-config": "metrics:read",
53
+ };
54
+ export function isScope(value) {
55
+ return ALL_SCOPES.includes(value);
56
+ }
57
+ /** The required scope for a path, or null if the path has no scope mapping. */
58
+ export function scopeForPath(path) {
59
+ return ENDPOINT_SCOPES[path] ?? null;
60
+ }
61
+ export function hasScope(scopes, scope) {
62
+ return scopes != null && scopes.has(scope);
63
+ }
64
+ /**
65
+ * Parse a `scopeA|scopeB` string into a Set of known scopes. Unknown tokens are
66
+ * dropped (fail-closed: an unrecognized scope grants nothing).
67
+ */
68
+ export function parseScopes(raw) {
69
+ const out = new Set();
70
+ for (const token of raw.split("|")) {
71
+ const t = token.trim();
72
+ if (t && isScope(t))
73
+ out.add(t);
74
+ }
75
+ return out;
76
+ }
77
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/lib/observability/scopes.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,6EAA6E;AAC7E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,2EAA2E;AAe3E,MAAM,CAAC,MAAM,UAAU,GAAqB;IAC1C,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,cAAc;IACd,eAAe;IACf,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,gBAAgB;CACjB,CAAC;AAEF;;uCAEuC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,cAAc;IACd,eAAe;IACf,cAAc;IACd,YAAY;IACZ,gBAAgB;CACjB,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,aAAa,GAAqB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAEnF,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC9D,iBAAiB,EAAE,gBAAgB;IACnC,aAAa,EAAE,YAAY;IAC3B,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,kBAAkB;IACvC,cAAc,EAAE,aAAa;IAC7B,kBAAkB,EAAE,WAAW;IAC/B,aAAa,EAAE,cAAc;IAC7B,mBAAmB,EAAE,cAAc;IACnC,mBAAmB,EAAE,cAAc;IACnC,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,mBAAmB,EAAE,eAAe;IACpC,kBAAkB,EAAE,eAAe;IACnC,iBAAiB,EAAE,cAAc;IACjC,eAAe,EAAE,cAAc;IAC/B,gBAAgB,EAAE,cAAc;CACjC,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAA6C,EAAE,KAAY;IAClF,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAS,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,106 @@
1
+ export interface OkxSwapApiResponse {
2
+ code: string;
3
+ msg?: string;
4
+ data: Array<{
5
+ routerResult?: {
6
+ fromTokenAmount?: string | number;
7
+ toTokenAmount?: string | number;
8
+ priceImpactPercent?: string | number;
9
+ estimateGasFee?: string | number;
10
+ };
11
+ tx?: {
12
+ to?: string;
13
+ data?: string;
14
+ value?: string | number;
15
+ gas?: string | number;
16
+ minReceiveAmount?: string | number;
17
+ };
18
+ }> | null;
19
+ }
20
+ /** Structurally compatible with DodoQuote for every field execute_swap reads. */
21
+ export interface OkxQuote {
22
+ amountOut: string;
23
+ amountOutWei: string;
24
+ priceImpact: number;
25
+ gasLimit: string;
26
+ value: string;
27
+ calldata: string;
28
+ to: string;
29
+ approveAddress: string;
30
+ routeAvailable: boolean;
31
+ sourceStatus: "ok" | "no_route_available" | "auth_required" | "unavailable";
32
+ usedFromToken: string;
33
+ usedToToken: string;
34
+ wasSubstituted: boolean;
35
+ substitutionNote?: string;
36
+ /** Aggregator-enforced minimum output after slippage, in smallest units. */
37
+ minReceiveAmountWei: string;
38
+ rawResponse: OkxSwapApiResponse;
39
+ }
40
+ /**
41
+ * Structured "provider not configured for this chain" failure. Callers must
42
+ * surface this as SWAP_LIQUIDITY_NOT_CONFIGURED: a permanent configuration
43
+ * state, not a transient provider outage.
44
+ */
45
+ export declare class OkxNotConfiguredError extends Error {
46
+ readonly code: "SWAP_LIQUIDITY_NOT_CONFIGURED";
47
+ constructor(chainId: number);
48
+ }
49
+ /**
50
+ * Structured "credentials not configured" failure raised BEFORE any network
51
+ * call. Lists only the missing env var NAMES, never any credential value.
52
+ */
53
+ export declare class OkxCredentialsMissingError extends Error {
54
+ readonly code: "OKX_API_CREDENTIALS_MISSING";
55
+ readonly missing: string[];
56
+ constructor(missing: string[]);
57
+ }
58
+ /**
59
+ * Chains the OKX DEX aggregator API is treated as configured for. Defaults to
60
+ * Pacific Mainnet (1672) only: OKX's supported-chains docs list Pharos with
61
+ * chainIndex 1672, and no Pharos testnet is listed. Any other chain fails
62
+ * closed until an operator opts in via OKX_API_SUPPORTED_CHAIN_IDS with
63
+ * evidence the API supports it.
64
+ */
65
+ export declare function okxApiSupportedChainIds(): number[];
66
+ export declare function isOkxApiConfiguredForChain(chainId?: number): boolean;
67
+ /**
68
+ * Computes the OK-ACCESS-SIGN header value: Base64(HMAC-SHA256(prehash, secret))
69
+ * with prehash = timestamp + method + requestPath (+ body for POST). The
70
+ * requestPath must include the query string.
71
+ */
72
+ export declare function signOkxRequest(params: {
73
+ timestamp: string;
74
+ method: "GET" | "POST";
75
+ requestPath: string;
76
+ body?: string;
77
+ secret: string;
78
+ }): string;
79
+ /**
80
+ * Builds the v6 swap request path (endpoint + query string) in a fixed
81
+ * parameter order so the signed string is deterministic and testable.
82
+ */
83
+ export declare function buildOkxSwapRequestPath(params: {
84
+ chainId: number;
85
+ fromTokenAddress: string;
86
+ toTokenAddress: string;
87
+ amountWei: string;
88
+ userWalletAddress: string;
89
+ slippagePercent: number;
90
+ }): string;
91
+ /**
92
+ * Fetches an executable swap quote from the OKX DEX aggregator. The returned
93
+ * `to`/`calldata` come from the aggregator and MUST still be contained by the
94
+ * caller against the OKX router allowlist; the approve address is the
95
+ * registry-verified OKX token-approve contract (OKX's approval model always
96
+ * targets that dedicated contract; the swap response itself does not carry a
97
+ * spender field).
98
+ */
99
+ export declare function getOkxSwapQuote(params: {
100
+ fromToken: string;
101
+ toToken: string;
102
+ amountHuman: string;
103
+ walletAddress: string;
104
+ slippage?: number;
105
+ }): Promise<OkxQuote>;
106
+ //# sourceMappingURL=okxDexApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"okxDexApi.d.ts","sourceRoot":"","sources":["../../src/lib/okxDexApi.ts"],"names":[],"mappings":"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"}