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.
- 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/handsafe.zip +0 -0
- 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/abiWords.d.ts +17 -0
- package/dist/lib/analysis/abiWords.d.ts.map +1 -0
- package/dist/lib/analysis/abiWords.js +48 -0
- package/dist/lib/analysis/abiWords.js.map +1 -0
- 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 +189 -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 +464 -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 +126 -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 +107 -38
- 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 +131 -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
|
@@ -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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"}
|