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.
- package/.agents/policies/default.json +15 -0
- package/.env.example +81 -64
- package/README.md +301 -444
- package/SECURITY.md +112 -0
- package/SKILL.md +59 -0
- package/contracts/SafeHandsAttestation.sol +182 -0
- package/contracts/SafeHandsRegistry.sol +149 -0
- package/dist/agent/SafeHandsGuardianAgent.d.ts +39 -0
- package/dist/agent/SafeHandsGuardianAgent.d.ts.map +1 -0
- package/dist/agent/SafeHandsGuardianAgent.js +98 -0
- package/dist/agent/SafeHandsGuardianAgent.js.map +1 -0
- package/dist/agent/agentDecisionFormatter.d.ts +43 -0
- package/dist/agent/agentDecisionFormatter.d.ts.map +1 -0
- package/dist/agent/agentDecisionFormatter.js +96 -0
- package/dist/agent/agentDecisionFormatter.js.map +1 -0
- package/dist/agent/agentEnrich.d.ts +28 -0
- package/dist/agent/agentEnrich.d.ts.map +1 -0
- package/dist/agent/agentEnrich.js +99 -0
- package/dist/agent/agentEnrich.js.map +1 -0
- package/dist/agent/agentIntentClassifier.d.ts +44 -0
- package/dist/agent/agentIntentClassifier.d.ts.map +1 -0
- package/dist/agent/agentIntentClassifier.js +77 -0
- package/dist/agent/agentIntentClassifier.js.map +1 -0
- package/dist/agent/agentPolicyResolver.d.ts +44 -0
- package/dist/agent/agentPolicyResolver.d.ts.map +1 -0
- package/dist/agent/agentPolicyResolver.js +94 -0
- package/dist/agent/agentPolicyResolver.js.map +1 -0
- package/dist/agent/agentRuntime.d.ts +12 -0
- package/dist/agent/agentRuntime.d.ts.map +1 -0
- package/dist/agent/agentRuntime.js +31 -0
- package/dist/agent/agentRuntime.js.map +1 -0
- package/dist/agent/agentToolRouter.d.ts +24 -0
- package/dist/agent/agentToolRouter.d.ts.map +1 -0
- package/dist/agent/agentToolRouter.js +89 -0
- package/dist/agent/agentToolRouter.js.map +1 -0
- package/dist/agent/guardianOperator.d.ts +35 -0
- package/dist/agent/guardianOperator.d.ts.map +1 -0
- package/dist/agent/guardianOperator.js +65 -0
- package/dist/agent/guardianOperator.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +14 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/api/activityRoutes.d.ts +70 -0
- package/dist/api/activityRoutes.d.ts.map +1 -0
- package/dist/api/activityRoutes.js +100 -0
- package/dist/api/activityRoutes.js.map +1 -0
- package/dist/api/agentRoutes.d.ts +16 -0
- package/dist/api/agentRoutes.d.ts.map +1 -0
- package/dist/api/agentRoutes.js +37 -0
- package/dist/api/agentRoutes.js.map +1 -0
- package/dist/api/broadcastRoutes.d.ts +34 -0
- package/dist/api/broadcastRoutes.d.ts.map +1 -0
- package/dist/api/broadcastRoutes.js +147 -0
- package/dist/api/broadcastRoutes.js.map +1 -0
- package/dist/api/consolePage.d.ts +2 -0
- package/dist/api/consolePage.d.ts.map +1 -0
- package/dist/api/consolePage.js +206 -0
- package/dist/api/consolePage.js.map +1 -0
- package/dist/api/httpHardening.d.ts +75 -0
- package/dist/api/httpHardening.d.ts.map +1 -0
- package/dist/api/httpHardening.js +122 -0
- package/dist/api/httpHardening.js.map +1 -0
- package/dist/api/indexerRoutes.d.ts +46 -0
- package/dist/api/indexerRoutes.d.ts.map +1 -0
- package/dist/api/indexerRoutes.js +75 -0
- package/dist/api/indexerRoutes.js.map +1 -0
- package/dist/api/paidRoutes.d.ts +8 -0
- package/dist/api/paidRoutes.d.ts.map +1 -0
- package/dist/api/paidRoutes.js +175 -0
- package/dist/api/paidRoutes.js.map +1 -0
- package/dist/api/prepareRoutes.d.ts +58 -0
- package/dist/api/prepareRoutes.d.ts.map +1 -0
- package/dist/api/prepareRoutes.js +90 -0
- package/dist/api/prepareRoutes.js.map +1 -0
- package/dist/api/response.d.ts +39 -0
- package/dist/api/response.d.ts.map +1 -0
- package/dist/api/response.js +53 -0
- package/dist/api/response.js.map +1 -0
- package/dist/api/routes.d.ts +175 -0
- package/dist/api/routes.d.ts.map +1 -0
- package/dist/api/routes.js +276 -0
- package/dist/api/routes.js.map +1 -0
- package/dist/api/schemas.d.ts +147 -0
- package/dist/api/schemas.d.ts.map +1 -0
- package/dist/api/schemas.js +81 -0
- package/dist/api/schemas.js.map +1 -0
- package/dist/api/server.d.ts +11 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +505 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/toolRoutes.d.ts +14 -0
- package/dist/api/toolRoutes.d.ts.map +1 -0
- package/dist/api/toolRoutes.js +138 -0
- package/dist/api/toolRoutes.js.map +1 -0
- package/dist/api/walletPrepareRoutes.d.ts +74 -0
- package/dist/api/walletPrepareRoutes.d.ts.map +1 -0
- package/dist/api/walletPrepareRoutes.js +127 -0
- package/dist/api/walletPrepareRoutes.js.map +1 -0
- package/dist/api/x402Gate.d.ts +51 -0
- package/dist/api/x402Gate.d.ts.map +1 -0
- package/dist/api/x402Gate.js +184 -0
- package/dist/api/x402Gate.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +29 -1
- package/dist/cli.js.map +1 -1
- package/dist/data/ecosystemRegistry.data.d.ts +3 -0
- package/dist/data/ecosystemRegistry.data.d.ts.map +1 -0
- package/dist/data/ecosystemRegistry.data.js +582 -0
- package/dist/data/ecosystemRegistry.data.js.map +1 -0
- package/dist/demo.d.ts +0 -0
- package/dist/demo.d.ts.map +1 -1
- package/dist/demo.js +43 -8
- package/dist/demo.js.map +1 -1
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +212 -135
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +0 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +72 -10
- package/dist/init.js.map +1 -1
- package/dist/lib/analysis/approval.d.ts +29 -0
- package/dist/lib/analysis/approval.d.ts.map +1 -0
- package/dist/lib/analysis/approval.js +162 -0
- package/dist/lib/analysis/approval.js.map +1 -0
- package/dist/lib/analysis/calldata.d.ts +60 -0
- package/dist/lib/analysis/calldata.d.ts.map +1 -0
- package/dist/lib/analysis/calldata.js +349 -0
- package/dist/lib/analysis/calldata.js.map +1 -0
- package/dist/lib/analysis/contractIntel.d.ts +65 -0
- package/dist/lib/analysis/contractIntel.d.ts.map +1 -0
- package/dist/lib/analysis/contractIntel.js +320 -0
- package/dist/lib/analysis/contractIntel.js.map +1 -0
- package/dist/lib/analysis/evm.d.ts +42 -0
- package/dist/lib/analysis/evm.d.ts.map +1 -0
- package/dist/lib/analysis/evm.js +185 -0
- package/dist/lib/analysis/evm.js.map +1 -0
- package/dist/lib/analysis/gas.d.ts +4 -0
- package/dist/lib/analysis/gas.d.ts.map +1 -0
- package/dist/lib/analysis/gas.js +13 -0
- package/dist/lib/analysis/gas.js.map +1 -0
- package/dist/lib/analysis/index.d.ts +11 -0
- package/dist/lib/analysis/index.d.ts.map +1 -0
- package/dist/lib/analysis/index.js +16 -0
- package/dist/lib/analysis/index.js.map +1 -0
- package/dist/lib/analysis/pharosTokens.d.ts +31 -0
- package/dist/lib/analysis/pharosTokens.d.ts.map +1 -0
- package/dist/lib/analysis/pharosTokens.js +78 -0
- package/dist/lib/analysis/pharosTokens.js.map +1 -0
- package/dist/lib/analysis/safeTx.d.ts +27 -0
- package/dist/lib/analysis/safeTx.d.ts.map +1 -0
- package/dist/lib/analysis/safeTx.js +118 -0
- package/dist/lib/analysis/safeTx.js.map +1 -0
- package/dist/lib/analysis/token.d.ts +21 -0
- package/dist/lib/analysis/token.d.ts.map +1 -0
- package/dist/lib/analysis/token.js +151 -0
- package/dist/lib/analysis/token.js.map +1 -0
- package/dist/lib/analysis/types.d.ts +49 -0
- package/dist/lib/analysis/types.d.ts.map +1 -0
- package/dist/lib/analysis/types.js +10 -0
- package/dist/lib/analysis/types.js.map +1 -0
- package/dist/lib/analysis/x402.d.ts +24 -0
- package/dist/lib/analysis/x402.d.ts.map +1 -0
- package/dist/lib/analysis/x402.js +60 -0
- package/dist/lib/analysis/x402.js.map +1 -0
- package/dist/lib/auditLog.d.ts +1 -0
- package/dist/lib/auditLog.d.ts.map +1 -1
- package/dist/lib/auditLog.js +0 -0
- package/dist/lib/auditLog.js.map +1 -1
- package/dist/lib/config.d.ts +77 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +120 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +246 -97
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +334 -127
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/dodoApi.d.ts +26 -3
- package/dist/lib/dodoApi.d.ts.map +1 -1
- package/dist/lib/dodoApi.js +80 -17
- package/dist/lib/dodoApi.js.map +1 -1
- package/dist/lib/ecosystemRegistry.d.ts +116 -0
- package/dist/lib/ecosystemRegistry.d.ts.map +1 -0
- package/dist/lib/ecosystemRegistry.js +178 -0
- package/dist/lib/ecosystemRegistry.js.map +1 -0
- package/dist/lib/envLoader.d.ts +0 -0
- package/dist/lib/envLoader.d.ts.map +0 -0
- package/dist/lib/envLoader.js +39 -18
- package/dist/lib/envLoader.js.map +1 -1
- package/dist/lib/goldsky.d.ts +58 -0
- package/dist/lib/goldsky.d.ts.map +1 -0
- package/dist/lib/goldsky.js +275 -0
- package/dist/lib/goldsky.js.map +1 -0
- package/dist/lib/guardian/decision.d.ts +23 -0
- package/dist/lib/guardian/decision.d.ts.map +1 -0
- package/dist/lib/guardian/decision.js +40 -0
- package/dist/lib/guardian/decision.js.map +1 -0
- package/dist/lib/http.d.ts +0 -1
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +297 -32
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/managedExecution.d.ts +19 -0
- package/dist/lib/managedExecution.d.ts.map +1 -0
- package/dist/lib/managedExecution.js +64 -0
- package/dist/lib/managedExecution.js.map +1 -0
- package/dist/lib/merkleBatcher.d.ts +23 -0
- package/dist/lib/merkleBatcher.d.ts.map +1 -0
- package/dist/lib/merkleBatcher.js +62 -0
- package/dist/lib/merkleBatcher.js.map +1 -0
- package/dist/lib/networks.d.ts +48 -0
- package/dist/lib/networks.d.ts.map +1 -0
- package/dist/lib/networks.js +103 -0
- package/dist/lib/networks.js.map +1 -0
- package/dist/lib/observability/accessContext.d.ts +29 -0
- package/dist/lib/observability/accessContext.d.ts.map +1 -0
- package/dist/lib/observability/accessContext.js +50 -0
- package/dist/lib/observability/accessContext.js.map +1 -0
- package/dist/lib/observability/activityStore.d.ts +70 -0
- package/dist/lib/observability/activityStore.d.ts.map +1 -0
- package/dist/lib/observability/activityStore.js +149 -0
- package/dist/lib/observability/activityStore.js.map +1 -0
- package/dist/lib/observability/apiKey.d.ts +55 -0
- package/dist/lib/observability/apiKey.d.ts.map +1 -0
- package/dist/lib/observability/apiKey.js +141 -0
- package/dist/lib/observability/apiKey.js.map +1 -0
- package/dist/lib/observability/logger.d.ts +30 -0
- package/dist/lib/observability/logger.d.ts.map +1 -0
- package/dist/lib/observability/logger.js +30 -0
- package/dist/lib/observability/logger.js.map +1 -0
- package/dist/lib/observability/quota.d.ts +33 -0
- package/dist/lib/observability/quota.d.ts.map +1 -0
- package/dist/lib/observability/quota.js +49 -0
- package/dist/lib/observability/quota.js.map +1 -0
- package/dist/lib/observability/requestId.d.ts +8 -0
- package/dist/lib/observability/requestId.d.ts.map +1 -0
- package/dist/lib/observability/requestId.js +24 -0
- package/dist/lib/observability/requestId.js.map +1 -0
- package/dist/lib/observability/sanitize.d.ts +77 -0
- package/dist/lib/observability/sanitize.d.ts.map +1 -0
- package/dist/lib/observability/sanitize.js +228 -0
- package/dist/lib/observability/sanitize.js.map +1 -0
- package/dist/lib/observability/scopes.d.ts +20 -0
- package/dist/lib/observability/scopes.d.ts.map +1 -0
- package/dist/lib/observability/scopes.js +77 -0
- package/dist/lib/observability/scopes.js.map +1 -0
- package/dist/lib/okxDexApi.d.ts +106 -0
- package/dist/lib/okxDexApi.d.ts.map +1 -0
- package/dist/lib/okxDexApi.js +221 -0
- package/dist/lib/okxDexApi.js.map +1 -0
- package/dist/lib/persistentJsonStore.d.ts +5 -0
- package/dist/lib/persistentJsonStore.d.ts.map +1 -0
- package/dist/lib/persistentJsonStore.js +39 -0
- package/dist/lib/persistentJsonStore.js.map +1 -0
- package/dist/lib/pharos/attestationPublisher.d.ts +50 -0
- package/dist/lib/pharos/attestationPublisher.d.ts.map +1 -0
- package/dist/lib/pharos/attestationPublisher.js +262 -0
- package/dist/lib/pharos/attestationPublisher.js.map +1 -0
- package/dist/lib/pharos/ecosystem.d.ts +52 -0
- package/dist/lib/pharos/ecosystem.d.ts.map +1 -0
- package/dist/lib/pharos/ecosystem.js +431 -0
- package/dist/lib/pharos/ecosystem.js.map +1 -0
- package/dist/lib/pharos/ecosystemEvidence.d.ts +53 -0
- package/dist/lib/pharos/ecosystemEvidence.d.ts.map +1 -0
- package/dist/lib/pharos/ecosystemEvidence.js +133 -0
- package/dist/lib/pharos/ecosystemEvidence.js.map +1 -0
- package/dist/lib/pharos/rpc.d.ts +44 -0
- package/dist/lib/pharos/rpc.d.ts.map +1 -0
- package/dist/lib/pharos/rpc.js +90 -0
- package/dist/lib/pharos/rpc.js.map +1 -0
- package/dist/lib/pharos/rpcEvidence.d.ts +49 -0
- package/dist/lib/pharos/rpcEvidence.d.ts.map +1 -0
- package/dist/lib/pharos/rpcEvidence.js +46 -0
- package/dist/lib/pharos/rpcEvidence.js.map +1 -0
- package/dist/lib/pharos/rpcMethods.d.ts +46 -0
- package/dist/lib/pharos/rpcMethods.d.ts.map +1 -0
- package/dist/lib/pharos/rpcMethods.js +176 -0
- package/dist/lib/pharos/rpcMethods.js.map +1 -0
- package/dist/lib/pharos/spvVerifier.d.ts +47 -0
- package/dist/lib/pharos/spvVerifier.d.ts.map +1 -0
- package/dist/lib/pharos/spvVerifier.js +105 -0
- package/dist/lib/pharos/spvVerifier.js.map +1 -0
- package/dist/lib/pharos/userSignedBroadcaster.d.ts +10 -0
- package/dist/lib/pharos/userSignedBroadcaster.d.ts.map +1 -0
- package/dist/lib/pharos/userSignedBroadcaster.js +50 -0
- package/dist/lib/pharos/userSignedBroadcaster.js.map +1 -0
- package/dist/lib/pharosClient.d.ts +5 -10
- package/dist/lib/pharosClient.d.ts.map +1 -1
- package/dist/lib/pharosClient.js +9 -16
- package/dist/lib/pharosClient.js.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts +37 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.js +213 -52
- package/dist/lib/policy/actionPolicyEngine.js.map +1 -1
- package/dist/lib/policy/agentPolicy.d.ts +29 -0
- package/dist/lib/policy/agentPolicy.d.ts.map +1 -0
- package/dist/lib/policy/agentPolicy.js +154 -0
- package/dist/lib/policy/agentPolicy.js.map +1 -0
- package/dist/lib/policy/policyPresets.d.ts +30 -0
- package/dist/lib/policy/policyPresets.d.ts.map +1 -0
- package/dist/lib/policy/policyPresets.js +124 -0
- package/dist/lib/policy/policyPresets.js.map +1 -0
- package/dist/lib/policy/writeExecutionGate.d.ts +23 -0
- package/dist/lib/policy/writeExecutionGate.d.ts.map +1 -0
- package/dist/lib/policy/writeExecutionGate.js +65 -0
- package/dist/lib/policy/writeExecutionGate.js.map +1 -0
- package/dist/lib/preparedTxStore.d.ts +21 -0
- package/dist/lib/preparedTxStore.d.ts.map +1 -0
- package/dist/lib/preparedTxStore.js +90 -0
- package/dist/lib/preparedTxStore.js.map +1 -0
- package/dist/lib/price/chainlinkPushProvider.d.ts +34 -0
- package/dist/lib/price/chainlinkPushProvider.d.ts.map +1 -0
- package/dist/lib/price/chainlinkPushProvider.js +36 -0
- package/dist/lib/price/chainlinkPushProvider.js.map +1 -0
- package/dist/lib/price/feedRegistry.d.ts +26 -0
- package/dist/lib/price/feedRegistry.d.ts.map +1 -0
- package/dist/lib/price/feedRegistry.js +67 -0
- package/dist/lib/price/feedRegistry.js.map +1 -0
- package/dist/lib/price/priceResolver.d.ts +35 -0
- package/dist/lib/price/priceResolver.d.ts.map +1 -0
- package/dist/lib/price/priceResolver.js +246 -0
- package/dist/lib/price/priceResolver.js.map +1 -0
- package/dist/lib/price/supraProvider.d.ts +9 -0
- package/dist/lib/price/supraProvider.d.ts.map +1 -0
- package/dist/lib/price/supraProvider.js +17 -0
- package/dist/lib/price/supraProvider.js.map +1 -0
- package/dist/lib/price/types.d.ts +67 -0
- package/dist/lib/price/types.d.ts.map +1 -0
- package/dist/lib/price/types.js +7 -0
- package/dist/lib/price/types.js.map +1 -0
- package/dist/lib/productionGuards.d.ts +16 -0
- package/dist/lib/productionGuards.d.ts.map +1 -0
- package/dist/lib/productionGuards.js +93 -0
- package/dist/lib/productionGuards.js.map +1 -0
- package/dist/lib/recipientSafety.d.ts +5 -0
- package/dist/lib/recipientSafety.d.ts.map +1 -0
- package/dist/lib/recipientSafety.js +28 -0
- package/dist/lib/recipientSafety.js.map +1 -0
- package/dist/lib/riskEngine.d.ts +19 -0
- package/dist/lib/riskEngine.d.ts.map +1 -1
- package/dist/lib/riskEngine.js +94 -36
- package/dist/lib/riskEngine.js.map +1 -1
- package/dist/lib/riskInclusion.d.ts +72 -0
- package/dist/lib/riskInclusion.d.ts.map +1 -0
- package/dist/lib/riskInclusion.js +252 -0
- package/dist/lib/riskInclusion.js.map +1 -0
- package/dist/lib/safeHandsRegistry.d.ts +32 -0
- package/dist/lib/safeHandsRegistry.d.ts.map +1 -0
- package/dist/lib/safeHandsRegistry.js +151 -0
- package/dist/lib/safeHandsRegistry.js.map +1 -0
- package/dist/lib/signer/index.d.ts +3 -3
- package/dist/lib/signer/index.d.ts.map +1 -1
- package/dist/lib/signer/index.js +33 -11
- package/dist/lib/signer/index.js.map +1 -1
- package/dist/lib/spendAccumulator.d.ts +24 -1
- package/dist/lib/spendAccumulator.d.ts.map +1 -1
- package/dist/lib/spendAccumulator.js +76 -6
- package/dist/lib/spendAccumulator.js.map +1 -1
- package/dist/lib/toolResponse.d.ts +6 -1
- package/dist/lib/toolResponse.d.ts.map +1 -1
- package/dist/lib/toolResponse.js +13 -9
- package/dist/lib/toolResponse.js.map +1 -1
- package/dist/lib/validation.d.ts +7 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +62 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/wallet/index.d.ts +8 -12
- package/dist/lib/wallet/index.d.ts.map +1 -1
- package/dist/lib/wallet/index.js +48 -35
- package/dist/lib/wallet/index.js.map +1 -1
- package/dist/lib/x402ReplayStore.d.ts +6 -0
- package/dist/lib/x402ReplayStore.d.ts.map +1 -0
- package/dist/lib/x402ReplayStore.js +79 -0
- package/dist/lib/x402ReplayStore.js.map +1 -0
- package/dist/safehands.zip +0 -0
- package/dist/sdk.d.ts +14 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +25 -0
- package/dist/sdk.js.map +1 -0
- package/dist/tools/approveToken.d.ts +31 -10
- package/dist/tools/approveToken.d.ts.map +1 -1
- package/dist/tools/approveToken.js +91 -24
- package/dist/tools/approveToken.js.map +1 -1
- package/dist/tools/assessRisk.d.ts +13 -26
- package/dist/tools/assessRisk.d.ts.map +1 -1
- package/dist/tools/assessRisk.js +34 -75
- package/dist/tools/assessRisk.js.map +1 -1
- package/dist/tools/checkAllowance.d.ts +9 -3
- package/dist/tools/checkAllowance.d.ts.map +1 -1
- package/dist/tools/checkAllowance.js +27 -5
- package/dist/tools/checkAllowance.js.map +1 -1
- package/dist/tools/checkTokenSecurity.d.ts +62 -5
- package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
- package/dist/tools/checkTokenSecurity.js +166 -21
- package/dist/tools/checkTokenSecurity.js.map +1 -1
- package/dist/tools/createAgentWallet.d.ts +4 -2
- package/dist/tools/createAgentWallet.d.ts.map +1 -1
- package/dist/tools/createAgentWallet.js +36 -31
- package/dist/tools/createAgentWallet.js.map +1 -1
- package/dist/tools/estimateGas.d.ts +7 -2
- package/dist/tools/estimateGas.d.ts.map +1 -1
- package/dist/tools/estimateGas.js +16 -10
- package/dist/tools/estimateGas.js.map +1 -1
- package/dist/tools/executeSwap.d.ts +56 -8
- package/dist/tools/executeSwap.d.ts.map +1 -1
- package/dist/tools/executeSwap.js +194 -46
- package/dist/tools/executeSwap.js.map +1 -1
- package/dist/tools/explainRisk.d.ts +9 -9
- package/dist/tools/explainRisk.d.ts.map +1 -1
- package/dist/tools/explainRisk.js +5 -4
- package/dist/tools/explainRisk.js.map +1 -1
- package/dist/tools/getAgentPolicy.d.ts +15 -0
- package/dist/tools/getAgentPolicy.d.ts.map +1 -0
- package/dist/tools/getAgentPolicy.js +16 -0
- package/dist/tools/getAgentPolicy.js.map +1 -0
- package/dist/tools/getAgentReputation.d.ts +31 -0
- package/dist/tools/getAgentReputation.d.ts.map +1 -0
- package/dist/tools/getAgentReputation.js +44 -0
- package/dist/tools/getAgentReputation.js.map +1 -0
- package/dist/tools/getAgentWallet.d.ts +1 -1
- package/dist/tools/getAgentWallet.d.ts.map +1 -1
- package/dist/tools/getAgentWallet.js +11 -1
- package/dist/tools/getAgentWallet.js.map +1 -1
- package/dist/tools/getAgentWalletBalance.d.ts +1 -1
- package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
- package/dist/tools/getAgentWalletBalance.js +58 -26
- package/dist/tools/getAgentWalletBalance.js.map +1 -1
- package/dist/tools/getExecutionHistory.d.ts +1 -1
- package/dist/tools/getExecutionHistory.d.ts.map +1 -1
- package/dist/tools/getExecutionHistory.js +13 -19
- package/dist/tools/getExecutionHistory.js.map +1 -1
- package/dist/tools/getGasPrice.d.ts +3 -3
- package/dist/tools/getGasPrice.d.ts.map +0 -0
- package/dist/tools/getGasPrice.js +7 -7
- package/dist/tools/getGasPrice.js.map +1 -1
- package/dist/tools/getPoolInfo.d.ts +17 -17
- package/dist/tools/getPoolInfo.d.ts.map +1 -1
- package/dist/tools/getPoolInfo.js +14 -9
- package/dist/tools/getPoolInfo.js.map +1 -1
- package/dist/tools/getSpvProof.d.ts +24 -0
- package/dist/tools/getSpvProof.d.ts.map +1 -0
- package/dist/tools/getSpvProof.js +64 -0
- package/dist/tools/getSpvProof.js.map +1 -0
- package/dist/tools/getTokenPrice.d.ts +28 -85
- package/dist/tools/getTokenPrice.d.ts.map +1 -1
- package/dist/tools/getTokenPrice.js +87 -94
- package/dist/tools/getTokenPrice.js.map +1 -1
- package/dist/tools/getTransactionStatus.d.ts +2 -2
- package/dist/tools/getTransactionStatus.d.ts.map +0 -0
- package/dist/tools/getTransactionStatus.js +0 -0
- package/dist/tools/getTransactionStatus.js.map +0 -0
- package/dist/tools/getWalletBalance.d.ts +38 -3
- package/dist/tools/getWalletBalance.d.ts.map +1 -1
- package/dist/tools/getWalletBalance.js +92 -52
- package/dist/tools/getWalletBalance.js.map +1 -1
- package/dist/tools/publishRiskScore.d.ts +36 -14
- package/dist/tools/publishRiskScore.d.ts.map +1 -1
- package/dist/tools/publishRiskScore.js +80 -32
- package/dist/tools/publishRiskScore.js.map +1 -1
- package/dist/tools/queryGoldsky.d.ts +20 -0
- package/dist/tools/queryGoldsky.d.ts.map +1 -0
- package/dist/tools/queryGoldsky.js +29 -0
- package/dist/tools/queryGoldsky.js.map +1 -0
- package/dist/tools/queryRiskRegistry.d.ts +14 -14
- package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
- package/dist/tools/queryRiskRegistry.js +34 -30
- package/dist/tools/queryRiskRegistry.js.map +1 -1
- package/dist/tools/safehandsPreflightCheck.d.ts +29 -14
- package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
- package/dist/tools/safehandsPreflightCheck.js +133 -6
- package/dist/tools/safehandsPreflightCheck.js.map +1 -1
- package/dist/tools/safehandsRiskReport.d.ts +29 -14
- package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
- package/dist/tools/safehandsRiskReport.js +23 -3
- package/dist/tools/safehandsRiskReport.js.map +1 -1
- package/dist/tools/safehandsSafeExecute.d.ts +1 -1
- package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
- package/dist/tools/safehandsSafeExecute.js +100 -17
- package/dist/tools/safehandsSafeExecute.js.map +1 -1
- package/dist/tools/safehandsWalletHealth.d.ts +15 -1
- package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
- package/dist/tools/safehandsWalletHealth.js +67 -25
- package/dist/tools/safehandsWalletHealth.js.map +1 -1
- package/dist/tools/safehandsX402Preflight.d.ts +3 -3
- package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
- package/dist/tools/safehandsX402Preflight.js +24 -3
- package/dist/tools/safehandsX402Preflight.js.map +1 -1
- package/dist/tools/sendPayment.d.ts +10 -4
- package/dist/tools/sendPayment.d.ts.map +1 -1
- package/dist/tools/sendPayment.js +63 -36
- package/dist/tools/sendPayment.js.map +1 -1
- package/dist/tools/setAgentPolicy.d.ts +75 -0
- package/dist/tools/setAgentPolicy.d.ts.map +1 -0
- package/dist/tools/setAgentPolicy.js +80 -0
- package/dist/tools/setAgentPolicy.js.map +1 -0
- package/dist/tools/simulateTransaction.d.ts +7 -3
- package/dist/tools/simulateTransaction.d.ts.map +1 -1
- package/dist/tools/simulateTransaction.js +42 -9
- package/dist/tools/simulateTransaction.js.map +1 -1
- package/dist/tools/tokenRegistryStatus.d.ts +25 -5
- package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
- package/dist/tools/tokenRegistryStatus.js +61 -31
- package/dist/tools/tokenRegistryStatus.js.map +1 -1
- package/dist/tools/verifyRiskInclusion.d.ts +59 -0
- package/dist/tools/verifyRiskInclusion.d.ts.map +1 -0
- package/dist/tools/verifyRiskInclusion.js +40 -0
- package/dist/tools/verifyRiskInclusion.js.map +1 -0
- package/dist/tools/x402PayAndFetch.d.ts +15 -9
- package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
- package/dist/tools/x402PayAndFetch.js +163 -20
- package/dist/tools/x402PayAndFetch.js.map +1 -1
- package/dist/worker.d.ts +3 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +39 -0
- package/dist/worker.js.map +1 -0
- package/dist/x402Server.d.ts +1 -1
- package/dist/x402Server.d.ts.map +1 -1
- package/dist/x402Server.js +144 -35
- package/dist/x402Server.js.map +1 -1
- package/docs/REVIEWER_QUICKSTART.md +113 -0
- package/docs/SAFEHANDS_REVIEWER_DEMO_SCRIPT.md +228 -0
- package/package.json +130 -73
- package/contracts/RiskRegistry.json +0 -223
- package/contracts/RiskRegistry.sol +0 -58
- package/dist/lib/testDodoLive.d.ts +0 -2
- package/dist/lib/testDodoLive.d.ts.map +0 -1
- package/dist/lib/testDodoLive.js +0 -105
- package/dist/lib/testDodoLive.js.map +0 -1
- package/dist/lib/testLiveSafehands.d.ts +0 -2
- package/dist/lib/testLiveSafehands.d.ts.map +0 -1
- package/dist/lib/testLiveSafehands.js +0 -93
- package/dist/lib/testLiveSafehands.js.map +0 -1
- package/dist/lib/testRpc.d.ts +0 -2
- package/dist/lib/testRpc.d.ts.map +0 -1
- package/dist/lib/testRpc.js +0 -30
- package/dist/lib/testRpc.js.map +0 -1
- package/dist/lib/testRpcLive.d.ts +0 -2
- package/dist/lib/testRpcLive.d.ts.map +0 -1
- package/dist/lib/testRpcLive.js +0 -89
- package/dist/lib/testRpcLive.js.map +0 -1
- package/dist/lib/testTools.d.ts +0 -2
- package/dist/lib/testTools.d.ts.map +0 -1
- package/dist/lib/testTools.js +0 -397
- package/dist/lib/testTools.js.map +0 -1
- package/dist/lib/testX402Live.d.ts +0 -2
- package/dist/lib/testX402Live.d.ts.map +0 -1
- package/dist/lib/testX402Live.js +0 -160
- package/dist/lib/testX402Live.js.map +0 -1
- package/dist/scripts/checkDeploy.d.ts +0 -2
- package/dist/scripts/checkDeploy.d.ts.map +0 -1
- package/dist/scripts/checkDeploy.js +0 -25
- package/dist/scripts/checkDeploy.js.map +0 -1
- package/dist/scripts/deployRegistry.d.ts +0 -2
- package/dist/scripts/deployRegistry.d.ts.map +0 -1
- package/dist/scripts/deployRegistry.js +0 -101
- package/dist/scripts/deployRegistry.js.map +0 -1
- package/dist/scripts/testRegistry.d.ts +0 -2
- package/dist/scripts/testRegistry.d.ts.map +0 -1
- package/dist/scripts/testRegistry.js +0 -44
- package/dist/scripts/testRegistry.js.map +0 -1
|
@@ -5,8 +5,9 @@ import { z } from "zod";
|
|
|
5
5
|
import { publicClient } from "../lib/pharosClient.js";
|
|
6
6
|
import { getDodoRoute, isNativeToken } from "../lib/dodoApi.js";
|
|
7
7
|
import { formatEther, formatGwei, isAddress, parseEther } from "viem";
|
|
8
|
-
import { CHAIN_ID, PHAROS_ENVIRONMENT } from "../lib/constants.js";
|
|
8
|
+
import { CHAIN_ID, PHAROS_ENVIRONMENT, IS_MAINNET } from "../lib/constants.js";
|
|
9
9
|
import { classifyExternalError, fail, ok } from "../lib/toolResponse.js";
|
|
10
|
+
import { recommendGasWithBuffer, DEFAULT_GAS_BUFFER_PCT } from "../lib/analysis/gas.js";
|
|
10
11
|
export const estimateGasSchema = z.object({
|
|
11
12
|
action: z.enum(["swap", "transfer"]).describe("Type of action to estimate gas for"),
|
|
12
13
|
tokenIn: z.string().optional().describe("Token to swap from (for swaps)"),
|
|
@@ -17,7 +18,7 @@ export const estimateGasSchema = z.object({
|
|
|
17
18
|
});
|
|
18
19
|
export const estimateGasTool = {
|
|
19
20
|
name: "estimate_gas",
|
|
20
|
-
description: "Estimate gas cost for a swap or transfer before executing. Returns gas units, cost in
|
|
21
|
+
description: "Estimate gas cost for a swap or transfer before executing. Returns gas units, cost in PROS/USD, and whether the wallet has sufficient gas.",
|
|
21
22
|
inputSchema: estimateGasSchema,
|
|
22
23
|
};
|
|
23
24
|
const QUOTE_WALLET = "0x0000000000000000000000000000000000000001";
|
|
@@ -67,6 +68,9 @@ export async function handleEstimateGas(raw) {
|
|
|
67
68
|
}
|
|
68
69
|
catch (err) {
|
|
69
70
|
const message = err instanceof Error ? err.message : String(err);
|
|
71
|
+
if (message.includes("SWAP_LIQUIDITY_NOT_CONFIGURED")) {
|
|
72
|
+
return fail("SWAP_LIQUIDITY_NOT_CONFIGURED", message, false, "dodo_api");
|
|
73
|
+
}
|
|
70
74
|
if (message.includes("DODO_API_AUTH_REQUIRED")) {
|
|
71
75
|
return fail("DODO_API_AUTH_REQUIRED", "DODO/FaroSwap route API rejected public mode. Configure DODO_API_KEY only if this endpoint requires authenticated access.", false, "dodo_api");
|
|
72
76
|
}
|
|
@@ -77,26 +81,27 @@ export async function handleEstimateGas(raw) {
|
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
const gasCostWei = gasEstimate * gasPrice;
|
|
80
|
-
const
|
|
84
|
+
const gasCostPROS = formatEther(gasCostWei);
|
|
81
85
|
let gasCostUsd = null;
|
|
82
86
|
let priceSourceStatus = "unavailable";
|
|
83
87
|
try {
|
|
84
88
|
const priceQuote = await getDodoRoute({
|
|
85
|
-
fromToken: "
|
|
89
|
+
fromToken: "PROS",
|
|
86
90
|
toToken: "USDC",
|
|
87
91
|
amountHuman: "1",
|
|
88
92
|
walletAddress: QUOTE_WALLET,
|
|
89
93
|
});
|
|
90
94
|
if (priceQuote.routeAvailable) {
|
|
91
|
-
gasCostUsd = (parseFloat(
|
|
95
|
+
gasCostUsd = (parseFloat(gasCostPROS) * parseFloat(priceQuote.amountOut)).toFixed(6);
|
|
92
96
|
priceSourceStatus = "ok";
|
|
93
97
|
}
|
|
94
98
|
else {
|
|
95
99
|
priceSourceStatus = "no_route_available";
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
|
-
catch {
|
|
99
|
-
|
|
102
|
+
catch (err) {
|
|
103
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
104
|
+
priceSourceStatus = message.includes("SWAP_LIQUIDITY_NOT_CONFIGURED") ? "not_configured" : "unavailable";
|
|
100
105
|
}
|
|
101
106
|
let totalNeeded = gasCostWei;
|
|
102
107
|
if (input.action === "transfer" || (input.action === "swap" && isNativeToken(input.tokenIn || ""))) {
|
|
@@ -106,15 +111,16 @@ export async function handleEstimateGas(raw) {
|
|
|
106
111
|
return ok({
|
|
107
112
|
action: input.action,
|
|
108
113
|
gasEstimate: { value: gasEstimate.toString(), unit: "gas" },
|
|
114
|
+
recommendedGas: { value: recommendGasWithBuffer(gasEstimate).toString(), unit: "gas", bufferPct: DEFAULT_GAS_BUFFER_PCT },
|
|
109
115
|
gasPrice: { value: formatGwei(gasPrice), unit: "gwei" },
|
|
110
|
-
|
|
116
|
+
gasCostPROS: { value: gasCostPROS, unit: "PROS" },
|
|
111
117
|
gasCostUsd: gasCostUsd ? { value: gasCostUsd, unit: "USD" } : null,
|
|
112
|
-
walletBalance: { value: formatEther(balance), unit: "
|
|
118
|
+
walletBalance: { value: formatEther(balance), unit: "PROS" },
|
|
113
119
|
isSufficient,
|
|
114
120
|
priceSourceStatus,
|
|
115
121
|
chainId: CHAIN_ID,
|
|
116
122
|
environment: PHAROS_ENVIRONMENT,
|
|
117
|
-
isMainnet:
|
|
123
|
+
isMainnet: IS_MAINNET,
|
|
118
124
|
source: "pharos_rpc",
|
|
119
125
|
});
|
|
120
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimateGas.js","sourceRoot":"","sources":["../../src/tools/estimateGas.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8DAA8D;AAC9D,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"estimateGas.js","sourceRoot":"","sources":["../../src/tools/estimateGas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,65 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { type Account } from "viem";
|
|
2
3
|
export declare const executeSwapSchema: z.ZodObject<{
|
|
3
4
|
tokenIn: z.ZodString;
|
|
4
5
|
tokenOut: z.ZodString;
|
|
5
6
|
amountIn: z.ZodString;
|
|
6
|
-
slippageTolerance: z.
|
|
7
|
+
slippageTolerance: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
venue: z.ZodDefault<z.ZodOptional<z.ZodEnum<["dodo", "okx"]>>>;
|
|
7
9
|
agentId: z.ZodOptional<z.ZodString>;
|
|
8
|
-
|
|
10
|
+
confirm: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
11
|
+
}, "strict", z.ZodTypeAny, {
|
|
9
12
|
tokenIn: string;
|
|
10
13
|
tokenOut: string;
|
|
14
|
+
confirm: boolean;
|
|
11
15
|
amountIn: string;
|
|
12
|
-
|
|
16
|
+
venue: "okx" | "dodo";
|
|
13
17
|
agentId?: string | undefined;
|
|
18
|
+
slippageTolerance?: number | undefined;
|
|
14
19
|
}, {
|
|
15
20
|
tokenIn: string;
|
|
16
21
|
tokenOut: string;
|
|
17
22
|
amountIn: string;
|
|
18
23
|
agentId?: string | undefined;
|
|
24
|
+
confirm?: boolean | undefined;
|
|
19
25
|
slippageTolerance?: number | undefined;
|
|
26
|
+
venue?: "okx" | "dodo" | undefined;
|
|
20
27
|
}>;
|
|
21
28
|
export type ExecuteSwapInput = z.input<typeof executeSwapSchema>;
|
|
29
|
+
/**
|
|
30
|
+
* Hard, non-confirmable quote guards. An unfavorable price is embedded in
|
|
31
|
+
* the quote ITSELF — minReturn/slippage only protect against movement AFTER
|
|
32
|
+
* quoting — so a quote whose priceImpact exceeds the ceiling must hard-stop
|
|
33
|
+
* here, before any signing. The ceiling is the caller's slippageTolerance or
|
|
34
|
+
* MAX_SLIPPAGE_PCT, whichever is larger. Pure + exported for offline tests.
|
|
35
|
+
*/
|
|
36
|
+
export declare function evaluateSwapQuoteGuards(quote: {
|
|
37
|
+
priceImpact: number;
|
|
38
|
+
amountOut: string;
|
|
39
|
+
}, slippageTolerance?: number): {
|
|
40
|
+
code: string;
|
|
41
|
+
message: string;
|
|
42
|
+
} | null;
|
|
43
|
+
/**
|
|
44
|
+
* Simulate the exact swap call via eth_call and return the revert reason,
|
|
45
|
+
* or null when the call succeeds. The final broadcast passes an explicit
|
|
46
|
+
* `gas: quote.gasLimit`, which bypasses viem's implicit estimateGas revert
|
|
47
|
+
* check — without this a reverting route would burn gas on-chain. Takes the
|
|
48
|
+
* client structurally so it is unit-testable offline.
|
|
49
|
+
*/
|
|
50
|
+
export declare function simulateSwapCalldata(client: {
|
|
51
|
+
call(args: {
|
|
52
|
+
account: Account | `0x${string}`;
|
|
53
|
+
to: `0x${string}`;
|
|
54
|
+
value: bigint;
|
|
55
|
+
data: `0x${string}`;
|
|
56
|
+
}): Promise<unknown>;
|
|
57
|
+
}, args: {
|
|
58
|
+
account: Account | `0x${string}`;
|
|
59
|
+
to: `0x${string}`;
|
|
60
|
+
value: bigint;
|
|
61
|
+
data: `0x${string}`;
|
|
62
|
+
}): Promise<string | null>;
|
|
22
63
|
export declare const executeSwapTool: {
|
|
23
64
|
name: string;
|
|
24
65
|
description: string;
|
|
@@ -26,25 +67,32 @@ export declare const executeSwapTool: {
|
|
|
26
67
|
tokenIn: z.ZodString;
|
|
27
68
|
tokenOut: z.ZodString;
|
|
28
69
|
amountIn: z.ZodString;
|
|
29
|
-
slippageTolerance: z.
|
|
70
|
+
slippageTolerance: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
venue: z.ZodDefault<z.ZodOptional<z.ZodEnum<["dodo", "okx"]>>>;
|
|
30
72
|
agentId: z.ZodOptional<z.ZodString>;
|
|
31
|
-
|
|
73
|
+
confirm: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
74
|
+
}, "strict", z.ZodTypeAny, {
|
|
32
75
|
tokenIn: string;
|
|
33
76
|
tokenOut: string;
|
|
77
|
+
confirm: boolean;
|
|
34
78
|
amountIn: string;
|
|
35
|
-
|
|
79
|
+
venue: "okx" | "dodo";
|
|
36
80
|
agentId?: string | undefined;
|
|
81
|
+
slippageTolerance?: number | undefined;
|
|
37
82
|
}, {
|
|
38
83
|
tokenIn: string;
|
|
39
84
|
tokenOut: string;
|
|
40
85
|
amountIn: string;
|
|
41
86
|
agentId?: string | undefined;
|
|
87
|
+
confirm?: boolean | undefined;
|
|
42
88
|
slippageTolerance?: number | undefined;
|
|
89
|
+
venue?: "okx" | "dodo" | undefined;
|
|
43
90
|
}>;
|
|
44
91
|
};
|
|
45
|
-
export declare function handleExecuteSwap(raw: ExecuteSwapInput): Promise<import("../
|
|
92
|
+
export declare function handleExecuteSwap(raw: ExecuteSwapInput): Promise<import("../sdk.js").ToolFailure | import("../sdk.js").ToolSuccess<{
|
|
46
93
|
txHash: `0x${string}`;
|
|
47
94
|
explorerUrl: string;
|
|
95
|
+
venue: "okx" | "dodo";
|
|
48
96
|
amountOut: string;
|
|
49
97
|
usedFromToken: string;
|
|
50
98
|
usedToToken: string;
|
|
@@ -52,7 +100,7 @@ export declare function handleExecuteSwap(raw: ExecuteSwapInput): Promise<import
|
|
|
52
100
|
signerMode: import("../lib/signer/index.js").SignerMode;
|
|
53
101
|
walletAddress: `0x${string}`;
|
|
54
102
|
gasUsed: string;
|
|
55
|
-
policy: import("../
|
|
103
|
+
policy: import("../sdk.js").ActionPolicyResult;
|
|
56
104
|
riskAssessment: {
|
|
57
105
|
riskScore: number;
|
|
58
106
|
wasBlocked: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeSwap.d.ts","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"executeSwap.d.ts","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAe/C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAQnB,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACjD,iBAAiB,CAAC,EAAE,MAAM,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB1C;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE;IAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC;QAAC,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,EACrI,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GAChG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI3B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB;;;;;;;;;;;;;;;;;IA6Q5D"}
|
|
@@ -1,52 +1,114 @@
|
|
|
1
1
|
// ─── Tool: execute_swap ────────────────────────────────────────────────
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { isAddress } from "viem";
|
|
3
4
|
import { publicClient, createPharosWalletClientFromAccount, getExplorerUrl } from "../lib/pharosClient.js";
|
|
4
|
-
import { getDodoRoute, isNativeToken, resolveTokenAddress, resolveTokenDecimals, toWei } from "../lib/dodoApi.js";
|
|
5
|
+
import { getDodoRoute, isNativeToken, resolveTokenAddress, resolveTokenDecimals, toWei, DodoNotConfiguredError } from "../lib/dodoApi.js";
|
|
6
|
+
import { getOkxSwapQuote, OkxNotConfiguredError, OkxCredentialsMissingError } from "../lib/okxDexApi.js";
|
|
7
|
+
import { addressTrustEvidence } from "../lib/ecosystemRegistry.js";
|
|
5
8
|
import { assessRisk } from "../lib/riskEngine.js";
|
|
6
9
|
import { fail, ok, classifyExternalError } from "../lib/toolResponse.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { evaluateActionPolicy } from "../lib/policy/actionPolicyEngine.js";
|
|
10
|
-
import {
|
|
10
|
+
import { ERC20_ABI, MAX_SLIPPAGE_PCT, MAX_TX_AMOUNT_PROS, CHAIN_ID, PHAROS_ENVIRONMENT, IS_MAINNET, isAllowedDodoRouter, isAllowedDodoSpender, activeDodoRouterAllowlist, activeDodoSpenderAllowlist, isAllowedOkxRouter, isAllowedOkxSpender, activeOkxRouterAllowlist, activeOkxSpenderAllowlist } from "../lib/constants.js";
|
|
11
|
+
import { requireManagedExecutionReady, isManagedExecutionFailure } from "../lib/managedExecution.js";
|
|
12
|
+
import { evaluateActionPolicy, riskEvidenceFromAssessment } from "../lib/policy/actionPolicyEngine.js";
|
|
13
|
+
import { enforceWriteDecision } from "../lib/policy/writeExecutionGate.js";
|
|
14
|
+
import { evaluateTokenSecurityGate } from "./checkTokenSecurity.js";
|
|
15
|
+
import { checkDailyLimit, reserveDailyLimit, releaseReservation, estimateUsd } from "../lib/spendAccumulator.js";
|
|
16
|
+
import { validatePositiveAmount } from "../lib/validation.js";
|
|
11
17
|
export const executeSwapSchema = z.object({
|
|
12
18
|
tokenIn: z.string(),
|
|
13
19
|
tokenOut: z.string(),
|
|
14
20
|
amountIn: z.string(),
|
|
15
|
-
slippageTolerance: z.number().optional().
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
slippageTolerance: z.number().optional().describe("Override auto slippage. Default: 3 (Auto mode adjusts to 0.5 for major, 0.1 for stablecoins)"),
|
|
22
|
+
venue: z.enum(["dodo", "okx"]).optional().default("dodo").describe("Swap route venue. dodo (default): FaroSwap/DODO route API. okx: OKX DEX aggregator (registry-verified router/spender; requires OKX_API_KEY, OKX_API_SECRET, and OKX_API_PASSPHRASE, otherwise fails closed)."),
|
|
23
|
+
agentId: z.string().optional().describe("Managed wallet agentId when WALLET_MODE=managed-mainnet"),
|
|
24
|
+
confirm: z.boolean().optional().default(false).describe("Explicit acknowledgement to proceed when SafeHands returns REQUIRE_CONFIRMATION / REQUIRE_TOKEN_REVIEW. Hard BLOCK / honeypot / over-limit / unpriceable input token / missing token-security intel are never overridable."),
|
|
25
|
+
}).strict();
|
|
26
|
+
/**
|
|
27
|
+
* Hard, non-confirmable quote guards. An unfavorable price is embedded in
|
|
28
|
+
* the quote ITSELF — minReturn/slippage only protect against movement AFTER
|
|
29
|
+
* quoting — so a quote whose priceImpact exceeds the ceiling must hard-stop
|
|
30
|
+
* here, before any signing. The ceiling is the caller's slippageTolerance or
|
|
31
|
+
* MAX_SLIPPAGE_PCT, whichever is larger. Pure + exported for offline tests.
|
|
32
|
+
*/
|
|
33
|
+
export function evaluateSwapQuoteGuards(quote, slippageTolerance) {
|
|
34
|
+
const ceilingPct = Math.max(slippageTolerance ?? 0, MAX_SLIPPAGE_PCT);
|
|
35
|
+
const impact = Math.abs(quote.priceImpact);
|
|
36
|
+
if (!Number.isFinite(impact) || impact > ceilingPct) {
|
|
37
|
+
return {
|
|
38
|
+
code: "PRICE_IMPACT_TOO_HIGH",
|
|
39
|
+
message: `Swap blocked: quoted price impact ${Number.isFinite(impact) ? impact.toFixed(2) : "unknown"}% exceeds the ${ceilingPct}% ceiling (max of slippageTolerance and MAX_SLIPPAGE_PCT ${MAX_SLIPPAGE_PCT}%). The unfavorable price is in the quote itself, so slippage protection cannot mitigate it; this is a hard stop and is never confirmable. Reduce the trade size or use a deeper route.`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const amountOut = Number.parseFloat(quote.amountOut);
|
|
43
|
+
if (!Number.isFinite(amountOut) || amountOut <= 0) {
|
|
44
|
+
return {
|
|
45
|
+
code: "INVALID_QUOTE_AMOUNT_OUT",
|
|
46
|
+
message: `Swap blocked: the venue quote returned a non-positive amountOut (${quote.amountOut}). Broadcasting would spend tokenIn for nothing; this is a hard stop and is never confirmable.`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Simulate the exact swap call via eth_call and return the revert reason,
|
|
53
|
+
* or null when the call succeeds. The final broadcast passes an explicit
|
|
54
|
+
* `gas: quote.gasLimit`, which bypasses viem's implicit estimateGas revert
|
|
55
|
+
* check — without this a reverting route would burn gas on-chain. Takes the
|
|
56
|
+
* client structurally so it is unit-testable offline.
|
|
57
|
+
*/
|
|
58
|
+
export async function simulateSwapCalldata(client, args) {
|
|
59
|
+
try {
|
|
60
|
+
await client.call(args);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
return err instanceof Error ? err.message : String(err);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
18
67
|
export const executeSwapTool = {
|
|
19
68
|
name: "execute_swap",
|
|
20
|
-
description: "Swap tokens via FaroSwap
|
|
69
|
+
description: "Swap tokens via FaroSwap/DODO (default) or the OKX DEX aggregator (venue: okx). Runs a risk assessment first and feeds it as evidence to the SafeHands policy engine, the sole ALLOW/BLOCK/REQUIRE_CONFIRMATION decider (a risk score above the block threshold fails its risk_score check and blocks, never confirmable). Gated by WRITE_TOOLS_ENABLED.",
|
|
21
70
|
inputSchema: executeSwapSchema,
|
|
22
71
|
};
|
|
23
72
|
export async function handleExecuteSwap(raw) {
|
|
24
|
-
|
|
25
|
-
|
|
73
|
+
let input;
|
|
74
|
+
try {
|
|
75
|
+
input = executeSwapSchema.parse(raw);
|
|
26
76
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
77
|
+
catch (err) {
|
|
78
|
+
const msg = err instanceof z.ZodError
|
|
79
|
+
? err.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ")
|
|
80
|
+
: String(err);
|
|
81
|
+
return fail("VALIDATION_ERROR", `execute_swap input validation failed: ${msg}`, false, "execute_swap");
|
|
31
82
|
}
|
|
83
|
+
const amtErr = validatePositiveAmount(input.amountIn, "amountIn");
|
|
84
|
+
if (amtErr)
|
|
85
|
+
return fail("VALIDATION_ERROR", amtErr, false, "execute_swap");
|
|
86
|
+
const gate = await requireManagedExecutionReady("execute_swap", input.agentId);
|
|
87
|
+
if (isManagedExecutionFailure(gate))
|
|
88
|
+
return gate;
|
|
89
|
+
const { signer } = gate;
|
|
32
90
|
const walletAddress = signer.address;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
91
|
+
// Consult token-security (GoPlus honeypot/tax) on the token being acquired.
|
|
92
|
+
// Honeypot / extreme-tax → hard block; reviewed-and-flagged → "unknown" →
|
|
93
|
+
// REQUIRE_TOKEN_REVIEW (confirmable after review); intel MISSING (outage /
|
|
94
|
+
// unindexed, non-registry) → "unavailable" → the write gate fails closed.
|
|
95
|
+
let tokenSecurityStatus;
|
|
96
|
+
if (!isNativeToken(input.tokenOut)) {
|
|
97
|
+
let outAddr;
|
|
98
|
+
try {
|
|
99
|
+
outAddr = isAddress(input.tokenOut) ? input.tokenOut : resolveTokenAddress(input.tokenOut);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
outAddr = input.tokenOut;
|
|
103
|
+
}
|
|
104
|
+
const sec = await evaluateTokenSecurityGate(outAddr);
|
|
105
|
+
if (sec.verdict === "block") {
|
|
106
|
+
return fail("TOKEN_SECURITY_BLOCKED", `Swap blocked: ${sec.detail ?? "token failed security review"} ${sec.flags.join("; ")}`.trim(), false, "execute_swap");
|
|
107
|
+
}
|
|
108
|
+
tokenSecurityStatus = sec.policyStatus;
|
|
47
109
|
}
|
|
48
|
-
if (Number(input.amountIn) > Number(
|
|
49
|
-
return fail("TX_LIMIT_EXCEEDED", `Swap amount exceeds
|
|
110
|
+
if (Number(input.amountIn) > Number(MAX_TX_AMOUNT_PROS) && input.tokenIn.toUpperCase() === "PROS") {
|
|
111
|
+
return fail("TX_LIMIT_EXCEEDED", `Swap amount exceeds the operator ceiling MAX_TX_AMOUNT_PROS (${MAX_TX_AMOUNT_PROS} PROS), which bounds all agent policies. Raise MAX_TX_AMOUNT_PROS to allow larger mainnet swaps.`, false, "execute_swap");
|
|
50
112
|
}
|
|
51
113
|
const amountUsd = estimateUsd(input.amountIn, input.tokenIn);
|
|
52
114
|
const dailyCheck = checkDailyLimit(walletAddress, amountUsd);
|
|
@@ -60,55 +122,126 @@ export async function handleExecuteSwap(raw) {
|
|
|
60
122
|
amount: input.amountIn,
|
|
61
123
|
walletAddress,
|
|
62
124
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
125
|
+
// Sole decision point: ONE policy evaluation over all collected evidence,
|
|
126
|
+
// including the advisory risk assessment. Never gate on riskEngine output
|
|
127
|
+
// directly — the policy engine's risk_* checks do that (never-weaken parity
|
|
128
|
+
// with the former direct gates; requireRiskEvidence makes a wiring miss fail
|
|
129
|
+
// closed instead of silently losing the risk gates).
|
|
130
|
+
// The unpriceable-input guard lives here too: an unpriceable input token escaped the USD caps read
|
|
131
|
+
// by checkDailyLimit above, and swap_notional_unpriceable → BLOCK (never
|
|
132
|
+
// confirmable) stops it before any quote is fetched or budget is reserved.
|
|
133
|
+
const policy = evaluateActionPolicy({
|
|
134
|
+
actionType: "execute_swap",
|
|
135
|
+
agentId: input.agentId,
|
|
136
|
+
amount: input.amountIn,
|
|
137
|
+
amountUnit: "TOKEN",
|
|
138
|
+
tokenIn: input.tokenIn,
|
|
139
|
+
tokenOut: input.tokenOut,
|
|
140
|
+
tokenSecurityStatus,
|
|
141
|
+
chainId: CHAIN_ID,
|
|
142
|
+
environment: PHAROS_ENVIRONMENT,
|
|
143
|
+
isMainnet: IS_MAINNET,
|
|
144
|
+
signerAvailable: true,
|
|
145
|
+
requiresSigner: true,
|
|
146
|
+
risk: riskEvidenceFromAssessment(risk),
|
|
147
|
+
});
|
|
148
|
+
const swapGate = enforceWriteDecision(policy, { confirmed: input.confirm === true, toolName: "execute_swap", requireRiskEvidence: true });
|
|
149
|
+
if (swapGate)
|
|
150
|
+
return swapGate;
|
|
151
|
+
const venue = input.venue;
|
|
152
|
+
const venueSource = venue === "okx" ? "okx_dex_api" : "dodo_api";
|
|
153
|
+
let reserved = false;
|
|
66
154
|
try {
|
|
67
|
-
const
|
|
155
|
+
const quoteParams = {
|
|
68
156
|
fromToken: input.tokenIn,
|
|
69
157
|
toToken: input.tokenOut,
|
|
70
158
|
amountHuman: input.amountIn,
|
|
71
159
|
walletAddress,
|
|
72
160
|
slippage: input.slippageTolerance,
|
|
73
|
-
}
|
|
161
|
+
};
|
|
162
|
+
const quote = venue === "okx" ? await getOkxSwapQuote(quoteParams) : await getDodoRoute(quoteParams);
|
|
74
163
|
if (!quote.routeAvailable) {
|
|
75
|
-
return fail("NO_ROUTE_AVAILABLE", "No swap route available
|
|
164
|
+
return fail("NO_ROUTE_AVAILABLE", "No swap route available: insufficient liquidity", true, venueSource);
|
|
165
|
+
}
|
|
166
|
+
const quoteGuard = evaluateSwapQuoteGuards(quote, input.slippageTolerance);
|
|
167
|
+
if (quoteGuard) {
|
|
168
|
+
return fail(quoteGuard.code, quoteGuard.message, false, "execute_swap");
|
|
169
|
+
}
|
|
170
|
+
// Containment, not trust: the quote's router/spender must be inside the
|
|
171
|
+
// venue's allowlist. Trust evidence still comes only from the registry
|
|
172
|
+
// (addressTrustEvidence below).
|
|
173
|
+
const routerAllowed = venue === "okx" ? isAllowedOkxRouter(quote.to) : isAllowedDodoRouter(quote.to);
|
|
174
|
+
if (!isAddress(quote.to) || !routerAllowed) {
|
|
175
|
+
return venue === "okx"
|
|
176
|
+
? fail("UNTRUSTED_OKX_ROUTER", `OKX quote returned untrusted router/tx target ${quote.to}. Configure OKX_ROUTER_ALLOWLIST/SAFEHANDS_OKX_ROUTER_ALLOWLIST with a verified router before enabling mainnet swap execution. Current allowlist: ${activeOkxRouterAllowlist().join(",") || "empty"}`, false, "execute_swap")
|
|
177
|
+
: fail("UNTRUSTED_DODO_ROUTER", `DODO quote returned untrusted router/tx target ${quote.to}. Configure DODO_ROUTER_ALLOWLIST/SAFEHANDS_DODO_ROUTER_ALLOWLIST with a verified router before enabling mainnet swap execution. Current allowlist: ${activeDodoRouterAllowlist().join(",") || "empty"}`, false, "execute_swap");
|
|
178
|
+
}
|
|
179
|
+
const spenderAllowed = venue === "okx" ? isAllowedOkxSpender(quote.approveAddress) : isAllowedDodoSpender(quote.approveAddress);
|
|
180
|
+
if (!isNativeToken(input.tokenIn) && (!isAddress(quote.approveAddress) || !spenderAllowed)) {
|
|
181
|
+
return venue === "okx"
|
|
182
|
+
? fail("UNTRUSTED_OKX_SPENDER", `OKX quote returned untrusted approval target ${quote.approveAddress}. Configure OKX_SPENDER_ALLOWLIST/SAFEHANDS_OKX_SPENDER_ALLOWLIST with a verified approve contract before enabling mainnet token swaps. Current allowlist: ${activeOkxSpenderAllowlist().join(",") || "empty"}`, false, "execute_swap")
|
|
183
|
+
: fail("UNTRUSTED_DODO_SPENDER", `DODO quote returned untrusted approval target ${quote.approveAddress}. Configure DODO_SPENDER_ALLOWLIST/SAFEHANDS_DODO_SPENDER_ALLOWLIST with a verified approve proxy before enabling mainnet token swaps. Current allowlist: ${activeDodoSpenderAllowlist().join(",") || "empty"}`, false, "execute_swap");
|
|
76
184
|
}
|
|
77
185
|
const wallet = createPharosWalletClientFromAccount(signer.account);
|
|
78
186
|
if (!isNativeToken(input.tokenIn)) {
|
|
79
187
|
const tokenAddr = resolveTokenAddress(input.tokenIn);
|
|
80
188
|
const decimals = resolveTokenDecimals(input.tokenIn);
|
|
81
189
|
const amountWei = BigInt(toWei(input.amountIn, decimals));
|
|
190
|
+
const approveAddress = quote.approveAddress;
|
|
82
191
|
const allowance = (await publicClient.readContract({
|
|
83
192
|
address: tokenAddr,
|
|
84
193
|
abi: ERC20_ABI,
|
|
85
194
|
functionName: "allowance",
|
|
86
|
-
args: [walletAddress,
|
|
195
|
+
args: [walletAddress, approveAddress],
|
|
87
196
|
}));
|
|
88
197
|
if (allowance < amountWei) {
|
|
198
|
+
// spenderVerified comes ONLY from registry evidence. Allowlist membership
|
|
199
|
+
// (checked above) is containment, not verification — asserting it as
|
|
200
|
+
// "verified" fabricated a trust claim for a testnet-provenance address.
|
|
201
|
+
const spenderEvidence = addressTrustEvidence(approveAddress, CHAIN_ID);
|
|
89
202
|
const approvalPolicy = evaluateActionPolicy({
|
|
90
203
|
actionType: "approve_token",
|
|
204
|
+
agentId: input.agentId,
|
|
91
205
|
approvalAmount: input.amountIn,
|
|
92
|
-
spender:
|
|
93
|
-
spenderVerified: true,
|
|
206
|
+
spender: approveAddress,
|
|
207
|
+
spenderVerified: spenderEvidence.verifiedCanonical ? true : undefined,
|
|
94
208
|
chainId: CHAIN_ID,
|
|
95
209
|
environment: PHAROS_ENVIRONMENT,
|
|
96
|
-
isMainnet:
|
|
210
|
+
isMainnet: IS_MAINNET,
|
|
97
211
|
signerAvailable: true,
|
|
98
212
|
requiresSigner: true,
|
|
99
213
|
});
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
214
|
+
const approvalGate = enforceWriteDecision(approvalPolicy, { confirmed: input.confirm === true, toolName: "execute_swap" });
|
|
215
|
+
if (approvalGate)
|
|
216
|
+
return approvalGate;
|
|
103
217
|
const approveHash = await wallet.writeContract({
|
|
104
218
|
address: tokenAddr,
|
|
105
219
|
abi: ERC20_ABI,
|
|
106
220
|
functionName: "approve",
|
|
107
|
-
args: [
|
|
221
|
+
args: [approveAddress, amountWei],
|
|
108
222
|
});
|
|
109
223
|
await publicClient.waitForTransactionReceipt({ hash: approveHash });
|
|
110
224
|
}
|
|
111
225
|
}
|
|
226
|
+
// Pre-broadcast simulation of the exact calldata (after the approval
|
|
227
|
+
// above so the allowance is visible to eth_call). A reverting route fails
|
|
228
|
+
// here for free instead of burning gas on-chain.
|
|
229
|
+
const simulationError = await simulateSwapCalldata(publicClient, {
|
|
230
|
+
account: signer.account,
|
|
231
|
+
to: quote.to,
|
|
232
|
+
value: BigInt(quote.value),
|
|
233
|
+
data: quote.calldata,
|
|
234
|
+
});
|
|
235
|
+
if (simulationError !== null) {
|
|
236
|
+
return fail("SWAP_SIMULATION_REVERTED", `Pre-broadcast simulation of the swap calldata reverted; broadcasting would only burn gas. ${simulationError}`, true, "execute_swap");
|
|
237
|
+
}
|
|
238
|
+
// Atomically reserve the daily-spend budget immediately before the swap
|
|
239
|
+
// broadcast (no await between reserve and send). Released below on revert/error.
|
|
240
|
+
const reservation = reserveDailyLimit(walletAddress, amountUsd);
|
|
241
|
+
if (!reservation.allowed) {
|
|
242
|
+
return fail("DAILY_SPEND_LIMIT_EXCEEDED", `Daily spend limit reached. Spent $${reservation.currentUsd.toFixed(2)} of $${reservation.limitUsd.toFixed(2)} USD today. Remaining: $${reservation.remainingUsd.toFixed(2)}. Resets at UTC midnight.`, false, "execute_swap");
|
|
243
|
+
}
|
|
244
|
+
reserved = amountUsd > 0;
|
|
112
245
|
const txHash = await wallet.sendTransaction({
|
|
113
246
|
to: quote.to,
|
|
114
247
|
value: BigInt(quote.value),
|
|
@@ -117,12 +250,13 @@ export async function handleExecuteSwap(raw) {
|
|
|
117
250
|
});
|
|
118
251
|
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
119
252
|
if (receipt.status !== "success") {
|
|
253
|
+
releaseReservation(walletAddress, amountUsd);
|
|
120
254
|
return fail("TX_REVERTED", "execute_swap transaction was mined but reverted on-chain.", false, "execute_swap");
|
|
121
255
|
}
|
|
122
|
-
recordSpend(walletAddress, amountUsd);
|
|
123
256
|
return ok({
|
|
124
257
|
txHash,
|
|
125
258
|
explorerUrl: getExplorerUrl(txHash),
|
|
259
|
+
venue,
|
|
126
260
|
amountOut: quote.amountOut,
|
|
127
261
|
usedFromToken: quote.usedFromToken,
|
|
128
262
|
usedToToken: quote.usedToToken,
|
|
@@ -136,6 +270,20 @@ export async function handleExecuteSwap(raw) {
|
|
|
136
270
|
});
|
|
137
271
|
}
|
|
138
272
|
catch (err) {
|
|
273
|
+
// Release the daily-spend reservation on a thrown broadcast/receipt error so a
|
|
274
|
+
// swap that never landed does not permanently consume the cap (parity with
|
|
275
|
+
// send_payment; the revert path above already releases).
|
|
276
|
+
if (reserved)
|
|
277
|
+
releaseReservation(walletAddress, amountUsd);
|
|
278
|
+
if (err instanceof DodoNotConfiguredError) {
|
|
279
|
+
return fail("SWAP_LIQUIDITY_NOT_CONFIGURED", err.message, false, "dodo_api");
|
|
280
|
+
}
|
|
281
|
+
if (err instanceof OkxNotConfiguredError) {
|
|
282
|
+
return fail("SWAP_LIQUIDITY_NOT_CONFIGURED", err.message, false, "okx_dex_api");
|
|
283
|
+
}
|
|
284
|
+
if (err instanceof OkxCredentialsMissingError) {
|
|
285
|
+
return fail("OKX_API_CREDENTIALS_MISSING", err.message, false, "okx_dex_api");
|
|
286
|
+
}
|
|
139
287
|
return classifyExternalError("pharos_rpc", err);
|
|
140
288
|
}
|
|
141
289
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeSwap.js","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executeSwap.js","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type ToolResponse } from "../lib/toolResponse.js";
|
|
3
3
|
export declare const explainRiskSchema: z.ZodObject<{
|
|
4
|
-
decision: z.ZodEnum<["ALLOW", "WARN", "BLOCK", "REQUIRE_CONFIRMATION", "REQUIRE_FUNDING", "REQUIRE_TOKEN_REVIEW"]>;
|
|
4
|
+
decision: z.ZodEnum<["ALLOW", "WARN", "BLOCK", "REQUIRE_CONFIRMATION", "PREPARE_ONLY", "REQUIRE_FUNDING", "REQUIRE_TOKEN_REVIEW"]>;
|
|
5
5
|
riskLevel: z.ZodEnum<["LOW", "MEDIUM", "HIGH", "CRITICAL", "UNKNOWN"]>;
|
|
6
6
|
reasons: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
7
7
|
requiredActions: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
@@ -9,20 +9,20 @@ export declare const explainRiskSchema: z.ZodObject<{
|
|
|
9
9
|
chainId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
10
|
isMainnet: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
riskLevel: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL" | "UNKNOWN";
|
|
13
|
-
environment: string;
|
|
14
12
|
chainId: number;
|
|
15
|
-
isMainnet: boolean;
|
|
16
|
-
decision: "ALLOW" | "WARN" | "BLOCK" | "REQUIRE_CONFIRMATION" | "REQUIRE_FUNDING" | "REQUIRE_TOKEN_REVIEW";
|
|
17
13
|
reasons: string[];
|
|
14
|
+
riskLevel: "UNKNOWN" | "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
15
|
+
environment: string;
|
|
16
|
+
isMainnet: boolean;
|
|
17
|
+
decision: "ALLOW" | "WARN" | "BLOCK" | "REQUIRE_CONFIRMATION" | "REQUIRE_FUNDING" | "REQUIRE_TOKEN_REVIEW" | "PREPARE_ONLY";
|
|
18
18
|
requiredActions: string[];
|
|
19
19
|
}, {
|
|
20
|
-
riskLevel: "
|
|
21
|
-
decision: "ALLOW" | "WARN" | "BLOCK" | "REQUIRE_CONFIRMATION" | "REQUIRE_FUNDING" | "REQUIRE_TOKEN_REVIEW";
|
|
22
|
-
environment?: string | undefined;
|
|
20
|
+
riskLevel: "UNKNOWN" | "LOW" | "MEDIUM" | "HIGH" | "CRITICAL";
|
|
21
|
+
decision: "ALLOW" | "WARN" | "BLOCK" | "REQUIRE_CONFIRMATION" | "REQUIRE_FUNDING" | "REQUIRE_TOKEN_REVIEW" | "PREPARE_ONLY";
|
|
23
22
|
chainId?: number | undefined;
|
|
24
|
-
isMainnet?: boolean | undefined;
|
|
25
23
|
reasons?: string[] | undefined;
|
|
24
|
+
environment?: string | undefined;
|
|
25
|
+
isMainnet?: boolean | undefined;
|
|
26
26
|
requiredActions?: string[] | undefined;
|
|
27
27
|
}>;
|
|
28
28
|
export type ExplainRiskInput = z.input<typeof explainRiskSchema>;
|