safehands-pharos 1.4.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 -333
- 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 +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +154 -124
- 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 +1 -1
- package/dist/demo.d.ts.map +1 -1
- package/dist/demo.js +206 -171
- package/dist/demo.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +249 -164
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +127 -65
- 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 +452 -291
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +509 -292
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/dodoApi.d.ts +101 -78
- package/dist/lib/dodoApi.d.ts.map +1 -1
- package/dist/lib/dodoApi.js +259 -196
- 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 +2 -0
- package/dist/lib/envLoader.d.ts.map +1 -0
- package/dist/lib/envLoader.js +65 -0
- package/dist/lib/envLoader.js.map +1 -0
- 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 +13 -14
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +383 -118
- 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 +53 -58
- package/dist/lib/pharosClient.d.ts.map +1 -1
- package/dist/lib/pharosClient.js +56 -63
- package/dist/lib/pharosClient.js.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts +89 -53
- package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.js +373 -212
- 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 +45 -26
- package/dist/lib/riskEngine.d.ts.map +1 -1
- package/dist/lib/riskEngine.js +346 -283
- 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 +24 -24
- package/dist/lib/signer/index.d.ts.map +1 -1
- package/dist/lib/signer/index.js +110 -88
- 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 +30 -25
- package/dist/lib/toolResponse.d.ts.map +1 -1
- package/dist/lib/toolResponse.js +57 -53
- 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 +33 -37
- package/dist/lib/wallet/index.d.ts.map +1 -1
- package/dist/lib/wallet/index.js +141 -128
- 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 +66 -45
- package/dist/tools/approveToken.d.ts.map +1 -1
- package/dist/tools/approveToken.js +152 -85
- package/dist/tools/approveToken.js.map +1 -1
- package/dist/tools/assessRisk.d.ts +66 -79
- package/dist/tools/assessRisk.d.ts.map +1 -1
- package/dist/tools/assessRisk.js +63 -104
- package/dist/tools/assessRisk.js.map +1 -1
- package/dist/tools/checkAllowance.d.ts +49 -43
- package/dist/tools/checkAllowance.d.ts.map +1 -1
- package/dist/tools/checkAllowance.js +78 -56
- package/dist/tools/checkAllowance.js.map +1 -1
- package/dist/tools/checkTokenSecurity.d.ts +103 -46
- package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
- package/dist/tools/checkTokenSecurity.js +240 -95
- package/dist/tools/checkTokenSecurity.js.map +1 -1
- package/dist/tools/createAgentWallet.d.ts +30 -26
- package/dist/tools/createAgentWallet.d.ts.map +1 -1
- package/dist/tools/createAgentWallet.js +87 -58
- package/dist/tools/createAgentWallet.js.map +1 -1
- package/dist/tools/estimateGas.d.ts +84 -79
- package/dist/tools/estimateGas.d.ts.map +1 -1
- package/dist/tools/estimateGas.js +130 -124
- package/dist/tools/estimateGas.js.map +1 -1
- package/dist/tools/executeSwap.d.ts +109 -61
- package/dist/tools/executeSwap.d.ts.map +1 -1
- package/dist/tools/executeSwap.js +289 -141
- package/dist/tools/executeSwap.js.map +1 -1
- package/dist/tools/explainRisk.d.ts +29 -29
- package/dist/tools/explainRisk.d.ts.map +1 -1
- package/dist/tools/explainRisk.js +33 -32
- 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 +21 -21
- package/dist/tools/getAgentWallet.d.ts.map +1 -1
- package/dist/tools/getAgentWallet.js +37 -27
- package/dist/tools/getAgentWallet.js.map +1 -1
- package/dist/tools/getAgentWalletBalance.d.ts +11 -11
- package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
- package/dist/tools/getAgentWalletBalance.js +102 -70
- package/dist/tools/getAgentWalletBalance.js.map +1 -1
- package/dist/tools/getExecutionHistory.d.ts +49 -49
- package/dist/tools/getExecutionHistory.d.ts.map +1 -1
- package/dist/tools/getExecutionHistory.js +148 -154
- package/dist/tools/getExecutionHistory.js.map +1 -1
- package/dist/tools/getGasPrice.d.ts +43 -43
- package/dist/tools/getGasPrice.d.ts.map +0 -0
- package/dist/tools/getGasPrice.js +59 -59
- package/dist/tools/getGasPrice.js.map +1 -1
- package/dist/tools/getPoolInfo.d.ts +75 -75
- package/dist/tools/getPoolInfo.d.ts.map +1 -1
- package/dist/tools/getPoolInfo.js +142 -137
- 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 +56 -113
- package/dist/tools/getTokenPrice.d.ts.map +1 -1
- package/dist/tools/getTokenPrice.js +110 -117
- package/dist/tools/getTokenPrice.js.map +1 -1
- package/dist/tools/getTransactionStatus.d.ts +43 -43
- package/dist/tools/getTransactionStatus.d.ts.map +0 -0
- package/dist/tools/getTransactionStatus.js +59 -59
- package/dist/tools/getTransactionStatus.js.map +0 -0
- package/dist/tools/getWalletBalance.d.ts +103 -68
- package/dist/tools/getWalletBalance.d.ts.map +1 -1
- package/dist/tools/getWalletBalance.js +127 -87
- package/dist/tools/getWalletBalance.js.map +1 -1
- package/dist/tools/publishRiskScore.d.ts +85 -63
- package/dist/tools/publishRiskScore.d.ts.map +1 -1
- package/dist/tools/publishRiskScore.js +136 -88
- 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 +38 -38
- package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
- package/dist/tools/queryRiskRegistry.js +59 -55
- package/dist/tools/queryRiskRegistry.js.map +1 -1
- package/dist/tools/safehandsPreflightCheck.d.ts +92 -77
- package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
- package/dist/tools/safehandsPreflightCheck.js +174 -47
- package/dist/tools/safehandsPreflightCheck.js.map +1 -1
- package/dist/tools/safehandsRiskReport.d.ts +96 -81
- package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
- package/dist/tools/safehandsRiskReport.js +48 -28
- package/dist/tools/safehandsRiskReport.js.map +1 -1
- package/dist/tools/safehandsSafeExecute.d.ts +20 -20
- package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
- package/dist/tools/safehandsSafeExecute.js +164 -81
- package/dist/tools/safehandsSafeExecute.js.map +1 -1
- package/dist/tools/safehandsWalletHealth.d.ts +28 -14
- package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
- package/dist/tools/safehandsWalletHealth.js +145 -103
- package/dist/tools/safehandsWalletHealth.js.map +1 -1
- package/dist/tools/safehandsX402Preflight.d.ts +26 -26
- package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
- package/dist/tools/safehandsX402Preflight.js +86 -65
- package/dist/tools/safehandsX402Preflight.js.map +1 -1
- package/dist/tools/sendPayment.d.ts +63 -57
- package/dist/tools/sendPayment.d.ts.map +1 -1
- package/dist/tools/sendPayment.js +144 -117
- 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 +64 -60
- package/dist/tools/simulateTransaction.d.ts.map +1 -1
- package/dist/tools/simulateTransaction.js +116 -83
- package/dist/tools/simulateTransaction.js.map +1 -1
- package/dist/tools/tokenRegistryStatus.d.ts +46 -26
- package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
- package/dist/tools/tokenRegistryStatus.js +126 -96
- 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 +87 -81
- package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
- package/dist/tools/x402PayAndFetch.js +295 -152
- 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 +409 -252
- 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 -83
- 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 -398
- 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
- package/examples/dashboard/index.html +0 -337
- package/examples/pharos-skill-engine/SKILL.safehands.md +0 -85
- package/examples/pharos-skill-engine/assets/safehands/example-actions.json +0 -49
- package/examples/pharos-skill-engine/assets/safehands/policy-defaults.json +0 -11
- package/examples/pharos-skill-engine/references/safehands.md +0 -345
- package/examples/scenario-hack.ts +0 -38
- package/skill/SKILL.md +0 -133
- package/skill/assets/safehands/example-actions.json +0 -49
- package/skill/assets/safehands/policy-defaults.json +0 -11
- package/skill/references/safehands.md +0 -345
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// ─── SafeHands Canonical Ecosystem Registry (types + validation) ────────
|
|
2
|
+
// The single machine-readable source of truth for repo-bundled ecosystem
|
|
3
|
+
// knowledge: canonical contracts, canonical tokens, price feeds, the SafeHands
|
|
4
|
+
// on-chain contracts, provider endpoints, and known-but-unverified protocols.
|
|
5
|
+
//
|
|
6
|
+
// Truth-model rules enforced here (see docs/DECISION_CONTRACT.md §Evidence):
|
|
7
|
+
// • `safetyUse: "allow_eligible"` — the ONLY safetyUse that may contribute to
|
|
8
|
+
// an ALLOW — requires verificationStatus VERIFIED, at least one verified
|
|
9
|
+
// contract address, and at least one cited evidence source. Enforced by
|
|
10
|
+
// validateEcosystemRegistry(), not convention.
|
|
11
|
+
// • Name/alias matches are recognition only: an alias match without an
|
|
12
|
+
// address match must never relax risk.
|
|
13
|
+
// • `endpoint: null` is a first-class honest value meaning NOT_CONFIGURED —
|
|
14
|
+
// generators and consumers must never fill it in.
|
|
15
|
+
// • KNOWN_ECOSYSTEM (the name is real in the Pharos ecosystem) is deliberately
|
|
16
|
+
// distinct from verificationStatus VERIFIED (SafeHands holds evidence).
|
|
17
|
+
//
|
|
18
|
+
// Provider *awareness* entries (CCIP, LayerZero, Fordefi, …) stay in
|
|
19
|
+
// src/lib/pharos/ecosystem.ts — they carry no bundled addresses/endpoints and
|
|
20
|
+
// are not part of this registry. The Anvita hosted-skill asset JSONs are
|
|
21
|
+
// GENERATED from this registry by scripts/sync-anvita-assets.ts.
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
23
|
+
import { ECOSYSTEM_REGISTRY_ITEMS } from "../data/ecosystemRegistry.data.js";
|
|
24
|
+
/** The canonical registry (see src/data/ecosystemRegistry.data.ts). */
|
|
25
|
+
export const ECOSYSTEM_REGISTRY = ECOSYSTEM_REGISTRY_ITEMS;
|
|
26
|
+
const ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
|
|
27
|
+
/**
|
|
28
|
+
* Validate the registry against the fail-closed truth-model rules. Returns a
|
|
29
|
+
* list of human-readable violations (empty = valid). Enforced by tests so a
|
|
30
|
+
* registry edit that weakens the rules fails CI.
|
|
31
|
+
*/
|
|
32
|
+
export function validateEcosystemRegistry(items = ECOSYSTEM_REGISTRY) {
|
|
33
|
+
const errors = [];
|
|
34
|
+
const seenIds = new Set();
|
|
35
|
+
for (const item of items) {
|
|
36
|
+
const at = `item "${item.id}"`;
|
|
37
|
+
if (seenIds.has(item.id))
|
|
38
|
+
errors.push(`${at}: duplicate id.`);
|
|
39
|
+
seenIds.add(item.id);
|
|
40
|
+
if (!item.name.trim())
|
|
41
|
+
errors.push(`${at}: empty name.`);
|
|
42
|
+
for (const c of item.contracts) {
|
|
43
|
+
if (!ADDRESS_RE.test(c.address))
|
|
44
|
+
errors.push(`${at}: invalid contract address "${c.address}".`);
|
|
45
|
+
if (!c.label.trim())
|
|
46
|
+
errors.push(`${at}: contract ${c.address} has an empty label.`);
|
|
47
|
+
}
|
|
48
|
+
const addrs = item.contracts.map((c) => c.address.toLowerCase());
|
|
49
|
+
if (new Set(addrs).size !== addrs.length)
|
|
50
|
+
errors.push(`${at}: duplicate contract addresses.`);
|
|
51
|
+
// VERIFIED requires citations — an uncited entry is a claim, not truth.
|
|
52
|
+
if (item.verificationStatus === "VERIFIED" && item.evidenceSources.length === 0) {
|
|
53
|
+
errors.push(`${at}: verificationStatus VERIFIED requires at least one evidence source.`);
|
|
54
|
+
}
|
|
55
|
+
// allow_eligible is the only safetyUse that can contribute to ALLOW — gate it hard.
|
|
56
|
+
if (item.safetyUse === "allow_eligible") {
|
|
57
|
+
if (item.verificationStatus !== "VERIFIED") {
|
|
58
|
+
errors.push(`${at}: allow_eligible requires verificationStatus VERIFIED (got ${item.verificationStatus}).`);
|
|
59
|
+
}
|
|
60
|
+
if (item.ecosystemStatus !== "VERIFIED") {
|
|
61
|
+
errors.push(`${at}: allow_eligible requires ecosystemStatus VERIFIED (got ${item.ecosystemStatus}).`);
|
|
62
|
+
}
|
|
63
|
+
if (item.contracts.length === 0) {
|
|
64
|
+
errors.push(`${at}: allow_eligible requires at least one contract address (name alone must never produce ALLOW).`);
|
|
65
|
+
}
|
|
66
|
+
if (item.contracts.some((c) => c.verificationStatus !== "VERIFIED")) {
|
|
67
|
+
errors.push(`${at}: allow_eligible requires every contract to be VERIFIED.`);
|
|
68
|
+
}
|
|
69
|
+
if (item.evidenceSources.length === 0) {
|
|
70
|
+
errors.push(`${at}: allow_eligible requires cited evidence sources.`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
for (const p of item.providers) {
|
|
74
|
+
if (p.endpoint === null && p.status !== "not_configured" && p.status !== "not_implemented") {
|
|
75
|
+
// price_feed/rpc-style providers whose "endpoint" is on-chain or env-only are
|
|
76
|
+
// allowed to be implemented without a URL, but must say so via configVia/note.
|
|
77
|
+
const onChainOrEnv = p.kind === "price_feed" || p.configVia !== null;
|
|
78
|
+
if (!onChainOrEnv) {
|
|
79
|
+
errors.push(`${at}: provider kind=${p.kind} has no endpoint but claims status "${p.status}"; must be not_configured/not_implemented, or document configVia.`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (p.endpoint !== null && !p.endpoint.startsWith("https://")) {
|
|
83
|
+
errors.push(`${at}: provider kind=${p.kind} endpoint must be https (got "${p.endpoint}").`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (item.ecosystemStatus === "NOT_CONFIGURED") {
|
|
87
|
+
if (item.providers.length === 0 || item.providers.some((p) => p.endpoint !== null)) {
|
|
88
|
+
errors.push(`${at}: NOT_CONFIGURED requires providers with null endpoints only.`);
|
|
89
|
+
}
|
|
90
|
+
if (item.safetyUse === "allow_eligible") {
|
|
91
|
+
errors.push(`${at}: NOT_CONFIGURED can never be allow_eligible.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (item.ecosystemStatus === "KNOWN_ECOSYSTEM" && item.safetyUse === "allow_eligible") {
|
|
95
|
+
errors.push(`${at}: KNOWN_ECOSYSTEM (name recognition) can never be allow_eligible: knowing a name is not holding proof.`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return errors;
|
|
99
|
+
}
|
|
100
|
+
const ADDRESS_INDEX = (() => {
|
|
101
|
+
const m = new Map();
|
|
102
|
+
for (const item of ECOSYSTEM_REGISTRY) {
|
|
103
|
+
for (const contract of item.contracts) {
|
|
104
|
+
m.set(contract.address.toLowerCase(), { item, contract });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return m;
|
|
108
|
+
})();
|
|
109
|
+
/** Address-matched lookup — the only lookup that may feed allow_eligible handling. */
|
|
110
|
+
export function lookupRegistryByAddress(address) {
|
|
111
|
+
if (!address)
|
|
112
|
+
return undefined;
|
|
113
|
+
return ADDRESS_INDEX.get(address.trim().toLowerCase());
|
|
114
|
+
}
|
|
115
|
+
const NO_TRUST = {
|
|
116
|
+
recognized: false,
|
|
117
|
+
verifiedCanonical: false,
|
|
118
|
+
itemId: null,
|
|
119
|
+
itemName: null,
|
|
120
|
+
contractLabel: null,
|
|
121
|
+
safetyUse: null,
|
|
122
|
+
verificationStatus: null,
|
|
123
|
+
registryChainId: null,
|
|
124
|
+
note: null,
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Registry-driven trust evaluation for a single address on a given chain.
|
|
128
|
+
* This is the ONLY sanctioned way for risk logic to derive spender/counterparty
|
|
129
|
+
* trust: hardcoded "known address" maps outside the registry are forbidden
|
|
130
|
+
* (truth-model rule: do not upgrade anything to VERIFIED without evidence).
|
|
131
|
+
* An address registered for a different chainId gets NO recognition — testnet
|
|
132
|
+
* provenance never carries to mainnet.
|
|
133
|
+
*/
|
|
134
|
+
export function addressTrustEvidence(address, chainId) {
|
|
135
|
+
const hit = lookupRegistryByAddress(address);
|
|
136
|
+
if (!hit)
|
|
137
|
+
return NO_TRUST;
|
|
138
|
+
const base = {
|
|
139
|
+
itemId: hit.item.id,
|
|
140
|
+
itemName: hit.item.name,
|
|
141
|
+
contractLabel: hit.contract.label,
|
|
142
|
+
safetyUse: hit.item.safetyUse,
|
|
143
|
+
verificationStatus: hit.item.verificationStatus,
|
|
144
|
+
registryChainId: hit.item.chainId,
|
|
145
|
+
};
|
|
146
|
+
const chainMatches = hit.item.chainId === null || hit.item.chainId === chainId;
|
|
147
|
+
if (!chainMatches) {
|
|
148
|
+
return {
|
|
149
|
+
...NO_TRUST,
|
|
150
|
+
...base,
|
|
151
|
+
note: `Address matches registry entry "${hit.contract.label}" registered for chainId ${hit.item.chainId}, not the active chain ${chainId}; recognition does not carry across chains.`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
...base,
|
|
156
|
+
recognized: true,
|
|
157
|
+
verifiedCanonical: hit.item.safetyUse === "allow_eligible" &&
|
|
158
|
+
hit.item.verificationStatus === "VERIFIED" &&
|
|
159
|
+
hit.contract.verificationStatus === "VERIFIED",
|
|
160
|
+
note: hit.contract.note ?? null,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Name/alias lookup — recognition only. A name match carries NO address
|
|
165
|
+
* verification and must never relax a decision, regardless of the item's
|
|
166
|
+
* safetyUse (which applies to address-matched evidence only).
|
|
167
|
+
*/
|
|
168
|
+
export function lookupRegistryByName(name) {
|
|
169
|
+
const q = (name ?? "").trim().toLowerCase();
|
|
170
|
+
if (!q)
|
|
171
|
+
return undefined;
|
|
172
|
+
return ECOSYSTEM_REGISTRY.find((item) => item.name.toLowerCase() === q || item.aliases.some((a) => a.toLowerCase() === q));
|
|
173
|
+
}
|
|
174
|
+
/** Registry item by stable id. */
|
|
175
|
+
export function getRegistryItem(id) {
|
|
176
|
+
return ECOSYSTEM_REGISTRY.find((item) => item.id === id);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=ecosystemRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecosystemRegistry.js","sourceRoot":"","sources":["../../src/lib/ecosystemRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envLoader.d.ts","sourceRoot":"","sources":["../../src/lib/envLoader.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Synchronously load .env from cwd before any other module reads process.env.
|
|
2
|
+
// Must be imported as the very first import in index.ts so that wallet store,
|
|
3
|
+
// constants, and other modules that read env vars at module-init time see the values.
|
|
4
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
5
|
+
import { join, resolve, dirname } from "path";
|
|
6
|
+
import { randomBytes } from "crypto";
|
|
7
|
+
// 1. Load .env
|
|
8
|
+
try {
|
|
9
|
+
const text = readFileSync(join(process.cwd(), ".env"), "utf-8");
|
|
10
|
+
for (const line of text.split(/\r?\n/)) {
|
|
11
|
+
const m = line.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*?)\s*$/);
|
|
12
|
+
if (m && m[1] && !process.env[m[1]]) {
|
|
13
|
+
// Strip surrounding quotes if present
|
|
14
|
+
process.env[m[1]] = m[2].replace(/^(['"])(.*)\1$/, "$2");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// No .env file — environment vars must be set externally (CI, shell, MCP host)
|
|
20
|
+
}
|
|
21
|
+
// 1b. Backward-compatible env aliases for the full hosted deployment template.
|
|
22
|
+
// Keep old variable names working while letting .env.example use clearer SAFEHANDS_* names.
|
|
23
|
+
const aliases = [
|
|
24
|
+
["SAFEHANDS_ENABLE_MANAGED_WALLET", "MANAGED_WALLET_ENABLED"],
|
|
25
|
+
["SAFEHANDS_WALLET_ENCRYPTION_KEY", "WALLET_ENCRYPTION_KEY"],
|
|
26
|
+
["SAFEHANDS_REGISTRY_ADDRESS", "SAFEHANDS_RISK_REGISTRY_ADDRESS"],
|
|
27
|
+
["PHAROS_PACIFIC_RPC_URL", "PHAROS_RPC_URL"],
|
|
28
|
+
];
|
|
29
|
+
for (const [from, to] of aliases) {
|
|
30
|
+
if (process.env[from] && !process.env[to])
|
|
31
|
+
process.env[to] = process.env[from];
|
|
32
|
+
}
|
|
33
|
+
// 2. Demo mode now uses mainnet-first default as well.
|
|
34
|
+
if (process.argv.includes("--demo") && !process.env.SAFEHANDS_NETWORK) {
|
|
35
|
+
process.env.SAFEHANDS_NETWORK = "pacific-mainnet";
|
|
36
|
+
}
|
|
37
|
+
// 3. Auto-resolve wallet persistence ONLY when managed wallets are explicitly
|
|
38
|
+
// enabled (WALLET_MODE=managed-mainnet AND MANAGED_WALLET_ENABLED=true), so
|
|
39
|
+
// managed wallets survive restarts. Read-only / preflight / hosted modes must
|
|
40
|
+
// never create .agents/wallets.json or .agents/.key just by importing modules
|
|
41
|
+
// (no key material on disk until managed wallets are actually enabled).
|
|
42
|
+
if ((process.env.WALLET_MODE || "none") === "managed-mainnet" && process.env.MANAGED_WALLET_ENABLED === "true") {
|
|
43
|
+
if (!process.env.WALLET_STORE_PATH) {
|
|
44
|
+
process.env.WALLET_STORE_PATH = "./.agents/wallets.json";
|
|
45
|
+
}
|
|
46
|
+
if (!process.env.WALLET_ENCRYPTION_KEY) {
|
|
47
|
+
const storePath = resolve(process.cwd(), process.env.WALLET_STORE_PATH);
|
|
48
|
+
const keyPath = join(dirname(storePath), ".key");
|
|
49
|
+
try {
|
|
50
|
+
if (existsSync(keyPath)) {
|
|
51
|
+
process.env.WALLET_ENCRYPTION_KEY = readFileSync(keyPath, "utf-8").trim();
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
mkdirSync(dirname(keyPath), { recursive: true });
|
|
55
|
+
const key = randomBytes(32).toString("hex");
|
|
56
|
+
writeFileSync(keyPath, key, { mode: 0o600 });
|
|
57
|
+
process.env.WALLET_ENCRYPTION_KEY = key;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// File ops failed (read-only FS, permission error) — fall back to in-memory behavior
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=envLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envLoader.js","sourceRoot":"","sources":["../../src/lib/envLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export interface GoldskyConfigStatus {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
configured: boolean;
|
|
4
|
+
endpointHost: string | null;
|
|
5
|
+
maxQueryLength: number;
|
|
6
|
+
timeoutMs: number;
|
|
7
|
+
allowedHosts: string[];
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IndexedAttestationRecord {
|
|
11
|
+
id?: string;
|
|
12
|
+
txHash?: string;
|
|
13
|
+
preparedTransactionHash?: string;
|
|
14
|
+
chainId?: string | number;
|
|
15
|
+
actionType?: string;
|
|
16
|
+
policyHash?: string;
|
|
17
|
+
metadataHash?: string;
|
|
18
|
+
agent?: string;
|
|
19
|
+
attester?: string;
|
|
20
|
+
blockNumber?: string | number;
|
|
21
|
+
blockTimestamp?: string | number;
|
|
22
|
+
transactionHash?: string;
|
|
23
|
+
raw: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
export interface GoldskyLookupResult<T> {
|
|
26
|
+
source: "goldsky";
|
|
27
|
+
configured: boolean;
|
|
28
|
+
indexed: boolean;
|
|
29
|
+
entity: string | null;
|
|
30
|
+
endpointHost: string | null;
|
|
31
|
+
record: T | null;
|
|
32
|
+
triedEntities: string[];
|
|
33
|
+
errors: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface OnchainAttestationLookup {
|
|
36
|
+
source: "contract";
|
|
37
|
+
configured: boolean;
|
|
38
|
+
onchainVerified: boolean;
|
|
39
|
+
address: string | null;
|
|
40
|
+
record: Record<string, unknown> | null;
|
|
41
|
+
error?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface IndexedRiskRootRecord {
|
|
44
|
+
id?: string;
|
|
45
|
+
root?: string;
|
|
46
|
+
dataURI?: string;
|
|
47
|
+
operator?: string;
|
|
48
|
+
blockNumber?: string | number;
|
|
49
|
+
blockTimestamp?: string | number;
|
|
50
|
+
transactionHash?: string;
|
|
51
|
+
raw: Record<string, unknown>;
|
|
52
|
+
}
|
|
53
|
+
export declare function goldskyStatus(): GoldskyConfigStatus;
|
|
54
|
+
export declare function goldskyGraphql<T = any>(query: string, variables?: Record<string, unknown>): Promise<T>;
|
|
55
|
+
export declare function lookupAttestationInGoldsky(txHash: string): Promise<GoldskyLookupResult<IndexedAttestationRecord>>;
|
|
56
|
+
export declare function lookupLatestRiskRootInGoldsky(): Promise<GoldskyLookupResult<IndexedRiskRootRecord>>;
|
|
57
|
+
export declare function lookupAttestationOnchain(txHash: string): Promise<OnchainAttestationLookup>;
|
|
58
|
+
//# sourceMappingURL=goldsky.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goldsky.d.ts","sourceRoot":"","sources":["../../src/lib/goldsky.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AA6ED,wBAAgB,aAAa,IAAI,mBAAmB,CAanD;AAgBD,wBAAsB,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAyBhH;AA6CD,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC,CAiCvH;AAED,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,CA8BzG;AAiBD,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAuBhG"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { createPublicClient, defineChain, http, isAddress, parseAbi } from "viem";
|
|
2
|
+
import { fetchWithTimeoutAndRetry } from "./http.js";
|
|
3
|
+
import { getActiveNetwork, resolveRpcUrl } from "./networks.js";
|
|
4
|
+
import { resolveSafeHandsAttestationAddress } from "./constants.js";
|
|
5
|
+
const ATTESTATION_ABI = parseAbi([
|
|
6
|
+
"function isAttested(bytes32 txHash) view returns (bool)",
|
|
7
|
+
"function getAttestation(bytes32 txHash) view returns ((bytes32 preparedTransactionHash, bytes32 txHash, uint256 chainId, bytes32 actionType, bytes32 policyHash, bytes32 metadataHash, address agent, address attester, uint64 timestamp))",
|
|
8
|
+
"function reputationOf(address agent) view returns (uint256 verifiedCount, uint64 lastAt)",
|
|
9
|
+
]);
|
|
10
|
+
function boolEnv(name, defaultValue = false) {
|
|
11
|
+
const raw = process.env[name];
|
|
12
|
+
if (raw === undefined || raw === "")
|
|
13
|
+
return defaultValue;
|
|
14
|
+
return raw === "true" || raw === "1" || raw.toLowerCase() === "yes";
|
|
15
|
+
}
|
|
16
|
+
function maxQueryLength() {
|
|
17
|
+
const raw = Number(process.env.GOLDSKY_MAX_QUERY_LENGTH || 8_000);
|
|
18
|
+
return Number.isFinite(raw) && raw > 0 ? raw : 8_000;
|
|
19
|
+
}
|
|
20
|
+
function timeoutMs() {
|
|
21
|
+
const raw = Number(process.env.GOLDSKY_TIMEOUT_MS || 10_000);
|
|
22
|
+
return Number.isFinite(raw) && raw > 0 ? raw : 10_000;
|
|
23
|
+
}
|
|
24
|
+
function configuredEndpoint() {
|
|
25
|
+
return process.env.GOLDSKY_SUBGRAPH_URL?.trim() || null;
|
|
26
|
+
}
|
|
27
|
+
function allowedHosts() {
|
|
28
|
+
return (process.env.GOLDSKY_ALLOWED_HOSTS || "")
|
|
29
|
+
.split(",")
|
|
30
|
+
.map((v) => v.trim().toLowerCase())
|
|
31
|
+
.filter(Boolean);
|
|
32
|
+
}
|
|
33
|
+
function endpointHost(endpoint) {
|
|
34
|
+
if (!endpoint)
|
|
35
|
+
return null;
|
|
36
|
+
try {
|
|
37
|
+
return new URL(endpoint).host;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function validateEndpoint(endpoint) {
|
|
44
|
+
let url;
|
|
45
|
+
try {
|
|
46
|
+
url = new URL(endpoint);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return "GOLDSKY_SUBGRAPH_URL is not a valid URL.";
|
|
50
|
+
}
|
|
51
|
+
if (url.protocol !== "https:" && !boolEnv("GOLDSKY_ALLOW_INSECURE_HTTP", false)) {
|
|
52
|
+
return "GOLDSKY_SUBGRAPH_URL must use https:// unless GOLDSKY_ALLOW_INSECURE_HTTP=true is set for local development.";
|
|
53
|
+
}
|
|
54
|
+
const host = url.hostname.toLowerCase();
|
|
55
|
+
const privateHost = host === "localhost" ||
|
|
56
|
+
host === "127.0.0.1" ||
|
|
57
|
+
host === "0.0.0.0" ||
|
|
58
|
+
host === "::1" ||
|
|
59
|
+
host.startsWith("10.") ||
|
|
60
|
+
host.startsWith("192.168.") ||
|
|
61
|
+
/^172\.(1[6-9]|2\d|3[01])\./.test(host);
|
|
62
|
+
if (privateHost && !boolEnv("GOLDSKY_ALLOW_PRIVATE_HOSTS", false)) {
|
|
63
|
+
return "GOLDSKY_SUBGRAPH_URL points to a private/local host. Set GOLDSKY_ALLOW_PRIVATE_HOSTS=true only for local development.";
|
|
64
|
+
}
|
|
65
|
+
const hosts = allowedHosts();
|
|
66
|
+
if (hosts.length > 0 && !hosts.includes(url.host.toLowerCase()) && !hosts.includes(host)) {
|
|
67
|
+
return `GOLDSKY_SUBGRAPH_URL host ${url.host} is not in GOLDSKY_ALLOWED_HOSTS.`;
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
export function goldskyStatus() {
|
|
72
|
+
const endpoint = configuredEndpoint();
|
|
73
|
+
const enabled = boolEnv("GOLDSKY_ENABLED", Boolean(endpoint));
|
|
74
|
+
const error = endpoint ? validateEndpoint(endpoint) ?? undefined : undefined;
|
|
75
|
+
return {
|
|
76
|
+
enabled,
|
|
77
|
+
configured: Boolean(endpoint) && !error,
|
|
78
|
+
endpointHost: endpointHost(endpoint),
|
|
79
|
+
maxQueryLength: maxQueryLength(),
|
|
80
|
+
timeoutMs: timeoutMs(),
|
|
81
|
+
allowedHosts: allowedHosts(),
|
|
82
|
+
error,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function isReadOnlyGraphql(query) {
|
|
86
|
+
if (query.length > maxQueryLength()) {
|
|
87
|
+
return `GraphQL query exceeds GOLDSKY_MAX_QUERY_LENGTH (${maxQueryLength()}).`;
|
|
88
|
+
}
|
|
89
|
+
const withoutComments = query.replace(/#[^\n\r]*/g, " ").trim().toLowerCase();
|
|
90
|
+
if (/^mutation\b/.test(withoutComments) || /\bmutation\b/.test(withoutComments)) {
|
|
91
|
+
return "Goldsky queries are read-only. mutation is not allowed.";
|
|
92
|
+
}
|
|
93
|
+
if (/^subscription\b/.test(withoutComments) || /\bsubscription\b/.test(withoutComments)) {
|
|
94
|
+
return "Goldsky queries are read-only. subscription is not allowed.";
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
export async function goldskyGraphql(query, variables = {}) {
|
|
99
|
+
const endpoint = configuredEndpoint();
|
|
100
|
+
if (!endpoint)
|
|
101
|
+
throw new Error("GOLDSKY_SUBGRAPH_URL is not configured.");
|
|
102
|
+
const endpointError = validateEndpoint(endpoint);
|
|
103
|
+
if (endpointError)
|
|
104
|
+
throw new Error(endpointError);
|
|
105
|
+
const queryError = isReadOnlyGraphql(query);
|
|
106
|
+
if (queryError)
|
|
107
|
+
throw new Error(queryError);
|
|
108
|
+
const response = await fetchWithTimeoutAndRetry(endpoint, {
|
|
109
|
+
method: "POST",
|
|
110
|
+
headers: { "Content-Type": "application/json", Accept: "application/json" },
|
|
111
|
+
body: JSON.stringify({ query, variables }),
|
|
112
|
+
timeoutMs: timeoutMs(),
|
|
113
|
+
retries: 1,
|
|
114
|
+
retryDelayMs: 250,
|
|
115
|
+
});
|
|
116
|
+
const body = await response.json().catch(async () => ({ errors: [{ message: await response.text().catch(() => "Non-JSON response") }] }));
|
|
117
|
+
if (!response.ok) {
|
|
118
|
+
throw new Error(`Goldsky returned HTTP ${response.status}: ${JSON.stringify(body).slice(0, 500)}`);
|
|
119
|
+
}
|
|
120
|
+
if (Array.isArray(body.errors) && body.errors.length > 0) {
|
|
121
|
+
throw new Error(body.errors.map((e) => e?.message || String(e)).join("; "));
|
|
122
|
+
}
|
|
123
|
+
return body.data;
|
|
124
|
+
}
|
|
125
|
+
function bytes32Regex(value) {
|
|
126
|
+
return /^0x[a-fA-F0-9]{64}$/.test(value);
|
|
127
|
+
}
|
|
128
|
+
function entityListFromEnv(envName, defaults) {
|
|
129
|
+
const configured = (process.env[envName] || "")
|
|
130
|
+
.split(",")
|
|
131
|
+
.map((v) => v.trim())
|
|
132
|
+
.filter(Boolean);
|
|
133
|
+
return [...configured, ...defaults].filter((v, i, arr) => arr.indexOf(v) === i);
|
|
134
|
+
}
|
|
135
|
+
function normalizeAttestation(raw) {
|
|
136
|
+
return {
|
|
137
|
+
id: raw.id,
|
|
138
|
+
txHash: raw.txHash,
|
|
139
|
+
preparedTransactionHash: raw.preparedTransactionHash,
|
|
140
|
+
chainId: raw.chainId,
|
|
141
|
+
actionType: raw.actionType,
|
|
142
|
+
policyHash: raw.policyHash,
|
|
143
|
+
metadataHash: raw.metadataHash,
|
|
144
|
+
agent: raw.agent,
|
|
145
|
+
attester: raw.attester,
|
|
146
|
+
blockNumber: raw.blockNumber,
|
|
147
|
+
blockTimestamp: raw.blockTimestamp ?? raw.timestamp,
|
|
148
|
+
transactionHash: raw.transactionHash,
|
|
149
|
+
raw,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function normalizeRiskRoot(raw) {
|
|
153
|
+
return {
|
|
154
|
+
id: raw.id,
|
|
155
|
+
root: raw.root,
|
|
156
|
+
dataURI: raw.dataURI ?? raw.dataUri,
|
|
157
|
+
operator: raw.operator,
|
|
158
|
+
blockNumber: raw.blockNumber,
|
|
159
|
+
blockTimestamp: raw.blockTimestamp ?? raw.timestamp,
|
|
160
|
+
transactionHash: raw.transactionHash,
|
|
161
|
+
raw,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export async function lookupAttestationInGoldsky(txHash) {
|
|
165
|
+
const status = goldskyStatus();
|
|
166
|
+
const base = {
|
|
167
|
+
source: "goldsky",
|
|
168
|
+
configured: status.configured,
|
|
169
|
+
indexed: false,
|
|
170
|
+
entity: null,
|
|
171
|
+
endpointHost: status.endpointHost,
|
|
172
|
+
record: null,
|
|
173
|
+
triedEntities: [],
|
|
174
|
+
errors: [],
|
|
175
|
+
};
|
|
176
|
+
if (!status.enabled)
|
|
177
|
+
return { ...base, errors: ["Goldsky is disabled (GOLDSKY_ENABLED=false)."] };
|
|
178
|
+
if (!status.configured)
|
|
179
|
+
return { ...base, errors: [status.error || "GOLDSKY_SUBGRAPH_URL is not configured."] };
|
|
180
|
+
if (!bytes32Regex(txHash))
|
|
181
|
+
return { ...base, errors: ["txHash must be a 32-byte 0x-prefixed hex string."] };
|
|
182
|
+
const entities = entityListFromEnv("GOLDSKY_ATTESTATION_ENTITIES", ["safeHandsAttesteds", "attestations"]);
|
|
183
|
+
const hashField = process.env.GOLDSKY_ATTESTATION_TX_HASH_FIELD || "txHash";
|
|
184
|
+
for (const entity of entities) {
|
|
185
|
+
base.triedEntities.push(entity);
|
|
186
|
+
const query = `query SafeHandsAttestationByTxHash($txHash: Bytes!) {\n ${entity}(first: 1, where: { ${hashField}: $txHash }) {\n id\n txHash\n preparedTransactionHash\n chainId\n actionType\n policyHash\n metadataHash\n attester\n blockNumber\n blockTimestamp\n transactionHash\n }\n}`;
|
|
187
|
+
try {
|
|
188
|
+
const data = await goldskyGraphql(query, { txHash: txHash.toLowerCase() });
|
|
189
|
+
const first = data?.[entity]?.[0];
|
|
190
|
+
if (first) {
|
|
191
|
+
return { ...base, indexed: true, entity, record: normalizeAttestation(first) };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
base.errors.push(`${entity}: ${err instanceof Error ? err.message : String(err)}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return base;
|
|
199
|
+
}
|
|
200
|
+
export async function lookupLatestRiskRootInGoldsky() {
|
|
201
|
+
const status = goldskyStatus();
|
|
202
|
+
const base = {
|
|
203
|
+
source: "goldsky",
|
|
204
|
+
configured: status.configured,
|
|
205
|
+
indexed: false,
|
|
206
|
+
entity: null,
|
|
207
|
+
endpointHost: status.endpointHost,
|
|
208
|
+
record: null,
|
|
209
|
+
triedEntities: [],
|
|
210
|
+
errors: [],
|
|
211
|
+
};
|
|
212
|
+
if (!status.enabled)
|
|
213
|
+
return { ...base, errors: ["Goldsky is disabled (GOLDSKY_ENABLED=false)."] };
|
|
214
|
+
if (!status.configured)
|
|
215
|
+
return { ...base, errors: [status.error || "GOLDSKY_SUBGRAPH_URL is not configured."] };
|
|
216
|
+
const entities = entityListFromEnv("GOLDSKY_RISK_ROOT_ENTITIES", ["riskRootCommitteds", "safeHandsRiskRootCommitteds"]);
|
|
217
|
+
for (const entity of entities) {
|
|
218
|
+
base.triedEntities.push(entity);
|
|
219
|
+
const query = `query SafeHandsLatestRiskRoot {\n ${entity}(first: 1, orderBy: blockNumber, orderDirection: desc) {\n id\n root\n dataURI\n operator\n blockNumber\n blockTimestamp\n transactionHash\n }\n}`;
|
|
220
|
+
try {
|
|
221
|
+
const data = await goldskyGraphql(query);
|
|
222
|
+
const first = data?.[entity]?.[0];
|
|
223
|
+
if (first) {
|
|
224
|
+
return { ...base, indexed: true, entity, record: normalizeRiskRoot(first) };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
base.errors.push(`${entity}: ${err instanceof Error ? err.message : String(err)}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return base;
|
|
232
|
+
}
|
|
233
|
+
function attestationAddress() {
|
|
234
|
+
// Read-path: env override → Pacific-mainnet baked default → "" (chainId-guarded).
|
|
235
|
+
const raw = resolveSafeHandsAttestationAddress();
|
|
236
|
+
return isAddress(raw) ? raw : null;
|
|
237
|
+
}
|
|
238
|
+
function toJsonSafe(value) {
|
|
239
|
+
if (typeof value === "bigint")
|
|
240
|
+
return value.toString();
|
|
241
|
+
if (Array.isArray(value))
|
|
242
|
+
return value.map(toJsonSafe);
|
|
243
|
+
if (value && typeof value === "object") {
|
|
244
|
+
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, toJsonSafe(v)]));
|
|
245
|
+
}
|
|
246
|
+
return value;
|
|
247
|
+
}
|
|
248
|
+
export async function lookupAttestationOnchain(txHash) {
|
|
249
|
+
const address = attestationAddress();
|
|
250
|
+
if (!address)
|
|
251
|
+
return { source: "contract", configured: false, onchainVerified: false, address: null, record: null, error: "SAFEHANDS_ATTESTATION_ADDRESS is not configured." };
|
|
252
|
+
if (!bytes32Regex(txHash))
|
|
253
|
+
return { source: "contract", configured: true, onchainVerified: false, address, record: null, error: "txHash must be a 32-byte 0x-prefixed hex string." };
|
|
254
|
+
try {
|
|
255
|
+
const network = getActiveNetwork();
|
|
256
|
+
const rpcUrl = resolveRpcUrl(network);
|
|
257
|
+
const chain = defineChain({
|
|
258
|
+
id: network.chainId,
|
|
259
|
+
name: network.label,
|
|
260
|
+
nativeCurrency: { name: network.nativeToken, symbol: network.nativeToken, decimals: 18 },
|
|
261
|
+
rpcUrls: { default: { http: [rpcUrl] } },
|
|
262
|
+
testnet: !network.isMainnet,
|
|
263
|
+
});
|
|
264
|
+
const client = createPublicClient({ chain, transport: http(rpcUrl, { timeout: 10_000 }) });
|
|
265
|
+
const attested = await client.readContract({ address, abi: ATTESTATION_ABI, functionName: "isAttested", args: [txHash] });
|
|
266
|
+
if (!attested)
|
|
267
|
+
return { source: "contract", configured: true, onchainVerified: false, address, record: null };
|
|
268
|
+
const record = await client.readContract({ address, abi: ATTESTATION_ABI, functionName: "getAttestation", args: [txHash] });
|
|
269
|
+
return { source: "contract", configured: true, onchainVerified: true, address, record: toJsonSafe(record) };
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
return { source: "contract", configured: true, onchainVerified: false, address, record: null, error: err instanceof Error ? err.message : String(err) };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=goldsky.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goldsky.js","sourceRoot":"","sources":["../../src/lib/goldsky.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type GuardianDecision = "ALLOW" | "BLOCK" | "REQUIRE_CONFIRMATION" | "PREPARE_ONLY";
|
|
2
|
+
export declare const GUARDIAN_DECISIONS: readonly GuardianDecision[];
|
|
3
|
+
export interface MapEngineDecisionOptions {
|
|
4
|
+
/**
|
|
5
|
+
* When false, an otherwise-ALLOW action is returned as PREPARE_ONLY because
|
|
6
|
+
* this deployment cannot execute it (read-only / hosted mode, or execution
|
|
7
|
+
* gated/disabled on the active network). The caller must execute externally.
|
|
8
|
+
*/
|
|
9
|
+
executionAvailable?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Map an internal engine decision to the public four-value SafeHands contract.
|
|
13
|
+
*
|
|
14
|
+
* ALLOW -> ALLOW (or PREPARE_ONLY when execution is unavailable)
|
|
15
|
+
* BLOCK -> BLOCK
|
|
16
|
+
* WARN -> REQUIRE_CONFIRMATION
|
|
17
|
+
* REQUIRE_CONFIRMATION -> REQUIRE_CONFIRMATION
|
|
18
|
+
* REQUIRE_TOKEN_REVIEW -> REQUIRE_CONFIRMATION
|
|
19
|
+
* REQUIRE_FUNDING -> PREPARE_ONLY
|
|
20
|
+
* (anything unknown) -> REQUIRE_CONFIRMATION (fail safe — never a silent ALLOW)
|
|
21
|
+
*/
|
|
22
|
+
export declare function mapEngineDecision(engineDecision: string, options?: MapEngineDecisionOptions): GuardianDecision;
|
|
23
|
+
//# sourceMappingURL=decision.d.ts.map
|