safehands-pharos 1.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/policies/default.json +15 -0
- package/.env.example +81 -64
- package/README.md +301 -444
- package/SECURITY.md +112 -0
- package/SKILL.md +59 -0
- package/contracts/SafeHandsAttestation.sol +182 -0
- package/contracts/SafeHandsRegistry.sol +149 -0
- package/dist/agent/SafeHandsGuardianAgent.d.ts +39 -0
- package/dist/agent/SafeHandsGuardianAgent.d.ts.map +1 -0
- package/dist/agent/SafeHandsGuardianAgent.js +98 -0
- package/dist/agent/SafeHandsGuardianAgent.js.map +1 -0
- package/dist/agent/agentDecisionFormatter.d.ts +43 -0
- package/dist/agent/agentDecisionFormatter.d.ts.map +1 -0
- package/dist/agent/agentDecisionFormatter.js +96 -0
- package/dist/agent/agentDecisionFormatter.js.map +1 -0
- package/dist/agent/agentEnrich.d.ts +28 -0
- package/dist/agent/agentEnrich.d.ts.map +1 -0
- package/dist/agent/agentEnrich.js +99 -0
- package/dist/agent/agentEnrich.js.map +1 -0
- package/dist/agent/agentIntentClassifier.d.ts +44 -0
- package/dist/agent/agentIntentClassifier.d.ts.map +1 -0
- package/dist/agent/agentIntentClassifier.js +77 -0
- package/dist/agent/agentIntentClassifier.js.map +1 -0
- package/dist/agent/agentPolicyResolver.d.ts +44 -0
- package/dist/agent/agentPolicyResolver.d.ts.map +1 -0
- package/dist/agent/agentPolicyResolver.js +94 -0
- package/dist/agent/agentPolicyResolver.js.map +1 -0
- package/dist/agent/agentRuntime.d.ts +12 -0
- package/dist/agent/agentRuntime.d.ts.map +1 -0
- package/dist/agent/agentRuntime.js +31 -0
- package/dist/agent/agentRuntime.js.map +1 -0
- package/dist/agent/agentToolRouter.d.ts +24 -0
- package/dist/agent/agentToolRouter.d.ts.map +1 -0
- package/dist/agent/agentToolRouter.js +89 -0
- package/dist/agent/agentToolRouter.js.map +1 -0
- package/dist/agent/guardianOperator.d.ts +35 -0
- package/dist/agent/guardianOperator.d.ts.map +1 -0
- package/dist/agent/guardianOperator.js +65 -0
- package/dist/agent/guardianOperator.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +14 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/api/activityRoutes.d.ts +70 -0
- package/dist/api/activityRoutes.d.ts.map +1 -0
- package/dist/api/activityRoutes.js +100 -0
- package/dist/api/activityRoutes.js.map +1 -0
- package/dist/api/agentRoutes.d.ts +16 -0
- package/dist/api/agentRoutes.d.ts.map +1 -0
- package/dist/api/agentRoutes.js +37 -0
- package/dist/api/agentRoutes.js.map +1 -0
- package/dist/api/broadcastRoutes.d.ts +34 -0
- package/dist/api/broadcastRoutes.d.ts.map +1 -0
- package/dist/api/broadcastRoutes.js +147 -0
- package/dist/api/broadcastRoutes.js.map +1 -0
- package/dist/api/consolePage.d.ts +2 -0
- package/dist/api/consolePage.d.ts.map +1 -0
- package/dist/api/consolePage.js +206 -0
- package/dist/api/consolePage.js.map +1 -0
- package/dist/api/httpHardening.d.ts +75 -0
- package/dist/api/httpHardening.d.ts.map +1 -0
- package/dist/api/httpHardening.js +122 -0
- package/dist/api/httpHardening.js.map +1 -0
- package/dist/api/indexerRoutes.d.ts +46 -0
- package/dist/api/indexerRoutes.d.ts.map +1 -0
- package/dist/api/indexerRoutes.js +75 -0
- package/dist/api/indexerRoutes.js.map +1 -0
- package/dist/api/paidRoutes.d.ts +8 -0
- package/dist/api/paidRoutes.d.ts.map +1 -0
- package/dist/api/paidRoutes.js +175 -0
- package/dist/api/paidRoutes.js.map +1 -0
- package/dist/api/prepareRoutes.d.ts +58 -0
- package/dist/api/prepareRoutes.d.ts.map +1 -0
- package/dist/api/prepareRoutes.js +90 -0
- package/dist/api/prepareRoutes.js.map +1 -0
- package/dist/api/response.d.ts +39 -0
- package/dist/api/response.d.ts.map +1 -0
- package/dist/api/response.js +53 -0
- package/dist/api/response.js.map +1 -0
- package/dist/api/routes.d.ts +175 -0
- package/dist/api/routes.d.ts.map +1 -0
- package/dist/api/routes.js +276 -0
- package/dist/api/routes.js.map +1 -0
- package/dist/api/schemas.d.ts +147 -0
- package/dist/api/schemas.d.ts.map +1 -0
- package/dist/api/schemas.js +81 -0
- package/dist/api/schemas.js.map +1 -0
- package/dist/api/server.d.ts +11 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +505 -0
- package/dist/api/server.js.map +1 -0
- package/dist/api/toolRoutes.d.ts +14 -0
- package/dist/api/toolRoutes.d.ts.map +1 -0
- package/dist/api/toolRoutes.js +138 -0
- package/dist/api/toolRoutes.js.map +1 -0
- package/dist/api/walletPrepareRoutes.d.ts +74 -0
- package/dist/api/walletPrepareRoutes.d.ts.map +1 -0
- package/dist/api/walletPrepareRoutes.js +127 -0
- package/dist/api/walletPrepareRoutes.js.map +1 -0
- package/dist/api/x402Gate.d.ts +51 -0
- package/dist/api/x402Gate.d.ts.map +1 -0
- package/dist/api/x402Gate.js +184 -0
- package/dist/api/x402Gate.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +29 -1
- package/dist/cli.js.map +1 -1
- package/dist/data/ecosystemRegistry.data.d.ts +3 -0
- package/dist/data/ecosystemRegistry.data.d.ts.map +1 -0
- package/dist/data/ecosystemRegistry.data.js +582 -0
- package/dist/data/ecosystemRegistry.data.js.map +1 -0
- package/dist/demo.d.ts +0 -0
- package/dist/demo.d.ts.map +1 -1
- package/dist/demo.js +43 -8
- package/dist/demo.js.map +1 -1
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +212 -135
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +0 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +72 -10
- package/dist/init.js.map +1 -1
- package/dist/lib/analysis/approval.d.ts +29 -0
- package/dist/lib/analysis/approval.d.ts.map +1 -0
- package/dist/lib/analysis/approval.js +162 -0
- package/dist/lib/analysis/approval.js.map +1 -0
- package/dist/lib/analysis/calldata.d.ts +60 -0
- package/dist/lib/analysis/calldata.d.ts.map +1 -0
- package/dist/lib/analysis/calldata.js +349 -0
- package/dist/lib/analysis/calldata.js.map +1 -0
- package/dist/lib/analysis/contractIntel.d.ts +65 -0
- package/dist/lib/analysis/contractIntel.d.ts.map +1 -0
- package/dist/lib/analysis/contractIntel.js +320 -0
- package/dist/lib/analysis/contractIntel.js.map +1 -0
- package/dist/lib/analysis/evm.d.ts +42 -0
- package/dist/lib/analysis/evm.d.ts.map +1 -0
- package/dist/lib/analysis/evm.js +185 -0
- package/dist/lib/analysis/evm.js.map +1 -0
- package/dist/lib/analysis/gas.d.ts +4 -0
- package/dist/lib/analysis/gas.d.ts.map +1 -0
- package/dist/lib/analysis/gas.js +13 -0
- package/dist/lib/analysis/gas.js.map +1 -0
- package/dist/lib/analysis/index.d.ts +11 -0
- package/dist/lib/analysis/index.d.ts.map +1 -0
- package/dist/lib/analysis/index.js +16 -0
- package/dist/lib/analysis/index.js.map +1 -0
- package/dist/lib/analysis/pharosTokens.d.ts +31 -0
- package/dist/lib/analysis/pharosTokens.d.ts.map +1 -0
- package/dist/lib/analysis/pharosTokens.js +78 -0
- package/dist/lib/analysis/pharosTokens.js.map +1 -0
- package/dist/lib/analysis/safeTx.d.ts +27 -0
- package/dist/lib/analysis/safeTx.d.ts.map +1 -0
- package/dist/lib/analysis/safeTx.js +118 -0
- package/dist/lib/analysis/safeTx.js.map +1 -0
- package/dist/lib/analysis/token.d.ts +21 -0
- package/dist/lib/analysis/token.d.ts.map +1 -0
- package/dist/lib/analysis/token.js +151 -0
- package/dist/lib/analysis/token.js.map +1 -0
- package/dist/lib/analysis/types.d.ts +49 -0
- package/dist/lib/analysis/types.d.ts.map +1 -0
- package/dist/lib/analysis/types.js +10 -0
- package/dist/lib/analysis/types.js.map +1 -0
- package/dist/lib/analysis/x402.d.ts +24 -0
- package/dist/lib/analysis/x402.d.ts.map +1 -0
- package/dist/lib/analysis/x402.js +60 -0
- package/dist/lib/analysis/x402.js.map +1 -0
- package/dist/lib/auditLog.d.ts +1 -0
- package/dist/lib/auditLog.d.ts.map +1 -1
- package/dist/lib/auditLog.js +0 -0
- package/dist/lib/auditLog.js.map +1 -1
- package/dist/lib/config.d.ts +77 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +120 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +246 -97
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +334 -127
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/dodoApi.d.ts +26 -3
- package/dist/lib/dodoApi.d.ts.map +1 -1
- package/dist/lib/dodoApi.js +80 -17
- package/dist/lib/dodoApi.js.map +1 -1
- package/dist/lib/ecosystemRegistry.d.ts +116 -0
- package/dist/lib/ecosystemRegistry.d.ts.map +1 -0
- package/dist/lib/ecosystemRegistry.js +178 -0
- package/dist/lib/ecosystemRegistry.js.map +1 -0
- package/dist/lib/envLoader.d.ts +0 -0
- package/dist/lib/envLoader.d.ts.map +0 -0
- package/dist/lib/envLoader.js +39 -18
- package/dist/lib/envLoader.js.map +1 -1
- package/dist/lib/goldsky.d.ts +58 -0
- package/dist/lib/goldsky.d.ts.map +1 -0
- package/dist/lib/goldsky.js +275 -0
- package/dist/lib/goldsky.js.map +1 -0
- package/dist/lib/guardian/decision.d.ts +23 -0
- package/dist/lib/guardian/decision.d.ts.map +1 -0
- package/dist/lib/guardian/decision.js +40 -0
- package/dist/lib/guardian/decision.js.map +1 -0
- package/dist/lib/http.d.ts +0 -1
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +297 -32
- package/dist/lib/http.js.map +1 -1
- package/dist/lib/managedExecution.d.ts +19 -0
- package/dist/lib/managedExecution.d.ts.map +1 -0
- package/dist/lib/managedExecution.js +64 -0
- package/dist/lib/managedExecution.js.map +1 -0
- package/dist/lib/merkleBatcher.d.ts +23 -0
- package/dist/lib/merkleBatcher.d.ts.map +1 -0
- package/dist/lib/merkleBatcher.js +62 -0
- package/dist/lib/merkleBatcher.js.map +1 -0
- package/dist/lib/networks.d.ts +48 -0
- package/dist/lib/networks.d.ts.map +1 -0
- package/dist/lib/networks.js +103 -0
- package/dist/lib/networks.js.map +1 -0
- package/dist/lib/observability/accessContext.d.ts +29 -0
- package/dist/lib/observability/accessContext.d.ts.map +1 -0
- package/dist/lib/observability/accessContext.js +50 -0
- package/dist/lib/observability/accessContext.js.map +1 -0
- package/dist/lib/observability/activityStore.d.ts +70 -0
- package/dist/lib/observability/activityStore.d.ts.map +1 -0
- package/dist/lib/observability/activityStore.js +149 -0
- package/dist/lib/observability/activityStore.js.map +1 -0
- package/dist/lib/observability/apiKey.d.ts +55 -0
- package/dist/lib/observability/apiKey.d.ts.map +1 -0
- package/dist/lib/observability/apiKey.js +141 -0
- package/dist/lib/observability/apiKey.js.map +1 -0
- package/dist/lib/observability/logger.d.ts +30 -0
- package/dist/lib/observability/logger.d.ts.map +1 -0
- package/dist/lib/observability/logger.js +30 -0
- package/dist/lib/observability/logger.js.map +1 -0
- package/dist/lib/observability/quota.d.ts +33 -0
- package/dist/lib/observability/quota.d.ts.map +1 -0
- package/dist/lib/observability/quota.js +49 -0
- package/dist/lib/observability/quota.js.map +1 -0
- package/dist/lib/observability/requestId.d.ts +8 -0
- package/dist/lib/observability/requestId.d.ts.map +1 -0
- package/dist/lib/observability/requestId.js +24 -0
- package/dist/lib/observability/requestId.js.map +1 -0
- package/dist/lib/observability/sanitize.d.ts +77 -0
- package/dist/lib/observability/sanitize.d.ts.map +1 -0
- package/dist/lib/observability/sanitize.js +228 -0
- package/dist/lib/observability/sanitize.js.map +1 -0
- package/dist/lib/observability/scopes.d.ts +20 -0
- package/dist/lib/observability/scopes.d.ts.map +1 -0
- package/dist/lib/observability/scopes.js +77 -0
- package/dist/lib/observability/scopes.js.map +1 -0
- package/dist/lib/okxDexApi.d.ts +106 -0
- package/dist/lib/okxDexApi.d.ts.map +1 -0
- package/dist/lib/okxDexApi.js +221 -0
- package/dist/lib/okxDexApi.js.map +1 -0
- package/dist/lib/persistentJsonStore.d.ts +5 -0
- package/dist/lib/persistentJsonStore.d.ts.map +1 -0
- package/dist/lib/persistentJsonStore.js +39 -0
- package/dist/lib/persistentJsonStore.js.map +1 -0
- package/dist/lib/pharos/attestationPublisher.d.ts +50 -0
- package/dist/lib/pharos/attestationPublisher.d.ts.map +1 -0
- package/dist/lib/pharos/attestationPublisher.js +262 -0
- package/dist/lib/pharos/attestationPublisher.js.map +1 -0
- package/dist/lib/pharos/ecosystem.d.ts +52 -0
- package/dist/lib/pharos/ecosystem.d.ts.map +1 -0
- package/dist/lib/pharos/ecosystem.js +431 -0
- package/dist/lib/pharos/ecosystem.js.map +1 -0
- package/dist/lib/pharos/ecosystemEvidence.d.ts +53 -0
- package/dist/lib/pharos/ecosystemEvidence.d.ts.map +1 -0
- package/dist/lib/pharos/ecosystemEvidence.js +133 -0
- package/dist/lib/pharos/ecosystemEvidence.js.map +1 -0
- package/dist/lib/pharos/rpc.d.ts +44 -0
- package/dist/lib/pharos/rpc.d.ts.map +1 -0
- package/dist/lib/pharos/rpc.js +90 -0
- package/dist/lib/pharos/rpc.js.map +1 -0
- package/dist/lib/pharos/rpcEvidence.d.ts +49 -0
- package/dist/lib/pharos/rpcEvidence.d.ts.map +1 -0
- package/dist/lib/pharos/rpcEvidence.js +46 -0
- package/dist/lib/pharos/rpcEvidence.js.map +1 -0
- package/dist/lib/pharos/rpcMethods.d.ts +46 -0
- package/dist/lib/pharos/rpcMethods.d.ts.map +1 -0
- package/dist/lib/pharos/rpcMethods.js +176 -0
- package/dist/lib/pharos/rpcMethods.js.map +1 -0
- package/dist/lib/pharos/spvVerifier.d.ts +47 -0
- package/dist/lib/pharos/spvVerifier.d.ts.map +1 -0
- package/dist/lib/pharos/spvVerifier.js +105 -0
- package/dist/lib/pharos/spvVerifier.js.map +1 -0
- package/dist/lib/pharos/userSignedBroadcaster.d.ts +10 -0
- package/dist/lib/pharos/userSignedBroadcaster.d.ts.map +1 -0
- package/dist/lib/pharos/userSignedBroadcaster.js +50 -0
- package/dist/lib/pharos/userSignedBroadcaster.js.map +1 -0
- package/dist/lib/pharosClient.d.ts +5 -10
- package/dist/lib/pharosClient.d.ts.map +1 -1
- package/dist/lib/pharosClient.js +9 -16
- package/dist/lib/pharosClient.js.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts +37 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.js +213 -52
- package/dist/lib/policy/actionPolicyEngine.js.map +1 -1
- package/dist/lib/policy/agentPolicy.d.ts +29 -0
- package/dist/lib/policy/agentPolicy.d.ts.map +1 -0
- package/dist/lib/policy/agentPolicy.js +154 -0
- package/dist/lib/policy/agentPolicy.js.map +1 -0
- package/dist/lib/policy/policyPresets.d.ts +30 -0
- package/dist/lib/policy/policyPresets.d.ts.map +1 -0
- package/dist/lib/policy/policyPresets.js +124 -0
- package/dist/lib/policy/policyPresets.js.map +1 -0
- package/dist/lib/policy/writeExecutionGate.d.ts +23 -0
- package/dist/lib/policy/writeExecutionGate.d.ts.map +1 -0
- package/dist/lib/policy/writeExecutionGate.js +65 -0
- package/dist/lib/policy/writeExecutionGate.js.map +1 -0
- package/dist/lib/preparedTxStore.d.ts +21 -0
- package/dist/lib/preparedTxStore.d.ts.map +1 -0
- package/dist/lib/preparedTxStore.js +90 -0
- package/dist/lib/preparedTxStore.js.map +1 -0
- package/dist/lib/price/chainlinkPushProvider.d.ts +34 -0
- package/dist/lib/price/chainlinkPushProvider.d.ts.map +1 -0
- package/dist/lib/price/chainlinkPushProvider.js +36 -0
- package/dist/lib/price/chainlinkPushProvider.js.map +1 -0
- package/dist/lib/price/feedRegistry.d.ts +26 -0
- package/dist/lib/price/feedRegistry.d.ts.map +1 -0
- package/dist/lib/price/feedRegistry.js +67 -0
- package/dist/lib/price/feedRegistry.js.map +1 -0
- package/dist/lib/price/priceResolver.d.ts +35 -0
- package/dist/lib/price/priceResolver.d.ts.map +1 -0
- package/dist/lib/price/priceResolver.js +246 -0
- package/dist/lib/price/priceResolver.js.map +1 -0
- package/dist/lib/price/supraProvider.d.ts +9 -0
- package/dist/lib/price/supraProvider.d.ts.map +1 -0
- package/dist/lib/price/supraProvider.js +17 -0
- package/dist/lib/price/supraProvider.js.map +1 -0
- package/dist/lib/price/types.d.ts +67 -0
- package/dist/lib/price/types.d.ts.map +1 -0
- package/dist/lib/price/types.js +7 -0
- package/dist/lib/price/types.js.map +1 -0
- package/dist/lib/productionGuards.d.ts +16 -0
- package/dist/lib/productionGuards.d.ts.map +1 -0
- package/dist/lib/productionGuards.js +93 -0
- package/dist/lib/productionGuards.js.map +1 -0
- package/dist/lib/recipientSafety.d.ts +5 -0
- package/dist/lib/recipientSafety.d.ts.map +1 -0
- package/dist/lib/recipientSafety.js +28 -0
- package/dist/lib/recipientSafety.js.map +1 -0
- package/dist/lib/riskEngine.d.ts +19 -0
- package/dist/lib/riskEngine.d.ts.map +1 -1
- package/dist/lib/riskEngine.js +94 -36
- package/dist/lib/riskEngine.js.map +1 -1
- package/dist/lib/riskInclusion.d.ts +72 -0
- package/dist/lib/riskInclusion.d.ts.map +1 -0
- package/dist/lib/riskInclusion.js +252 -0
- package/dist/lib/riskInclusion.js.map +1 -0
- package/dist/lib/safeHandsRegistry.d.ts +32 -0
- package/dist/lib/safeHandsRegistry.d.ts.map +1 -0
- package/dist/lib/safeHandsRegistry.js +151 -0
- package/dist/lib/safeHandsRegistry.js.map +1 -0
- package/dist/lib/signer/index.d.ts +3 -3
- package/dist/lib/signer/index.d.ts.map +1 -1
- package/dist/lib/signer/index.js +33 -11
- package/dist/lib/signer/index.js.map +1 -1
- package/dist/lib/spendAccumulator.d.ts +24 -1
- package/dist/lib/spendAccumulator.d.ts.map +1 -1
- package/dist/lib/spendAccumulator.js +76 -6
- package/dist/lib/spendAccumulator.js.map +1 -1
- package/dist/lib/toolResponse.d.ts +6 -1
- package/dist/lib/toolResponse.d.ts.map +1 -1
- package/dist/lib/toolResponse.js +13 -9
- package/dist/lib/toolResponse.js.map +1 -1
- package/dist/lib/validation.d.ts +7 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +62 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/wallet/index.d.ts +8 -12
- package/dist/lib/wallet/index.d.ts.map +1 -1
- package/dist/lib/wallet/index.js +48 -35
- package/dist/lib/wallet/index.js.map +1 -1
- package/dist/lib/x402ReplayStore.d.ts +6 -0
- package/dist/lib/x402ReplayStore.d.ts.map +1 -0
- package/dist/lib/x402ReplayStore.js +79 -0
- package/dist/lib/x402ReplayStore.js.map +1 -0
- package/dist/safehands.zip +0 -0
- package/dist/sdk.d.ts +14 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +25 -0
- package/dist/sdk.js.map +1 -0
- package/dist/tools/approveToken.d.ts +31 -10
- package/dist/tools/approveToken.d.ts.map +1 -1
- package/dist/tools/approveToken.js +91 -24
- package/dist/tools/approveToken.js.map +1 -1
- package/dist/tools/assessRisk.d.ts +13 -26
- package/dist/tools/assessRisk.d.ts.map +1 -1
- package/dist/tools/assessRisk.js +34 -75
- package/dist/tools/assessRisk.js.map +1 -1
- package/dist/tools/checkAllowance.d.ts +9 -3
- package/dist/tools/checkAllowance.d.ts.map +1 -1
- package/dist/tools/checkAllowance.js +27 -5
- package/dist/tools/checkAllowance.js.map +1 -1
- package/dist/tools/checkTokenSecurity.d.ts +62 -5
- package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
- package/dist/tools/checkTokenSecurity.js +166 -21
- package/dist/tools/checkTokenSecurity.js.map +1 -1
- package/dist/tools/createAgentWallet.d.ts +4 -2
- package/dist/tools/createAgentWallet.d.ts.map +1 -1
- package/dist/tools/createAgentWallet.js +36 -31
- package/dist/tools/createAgentWallet.js.map +1 -1
- package/dist/tools/estimateGas.d.ts +7 -2
- package/dist/tools/estimateGas.d.ts.map +1 -1
- package/dist/tools/estimateGas.js +16 -10
- package/dist/tools/estimateGas.js.map +1 -1
- package/dist/tools/executeSwap.d.ts +56 -8
- package/dist/tools/executeSwap.d.ts.map +1 -1
- package/dist/tools/executeSwap.js +194 -46
- package/dist/tools/executeSwap.js.map +1 -1
- package/dist/tools/explainRisk.d.ts +9 -9
- package/dist/tools/explainRisk.d.ts.map +1 -1
- package/dist/tools/explainRisk.js +5 -4
- package/dist/tools/explainRisk.js.map +1 -1
- package/dist/tools/getAgentPolicy.d.ts +15 -0
- package/dist/tools/getAgentPolicy.d.ts.map +1 -0
- package/dist/tools/getAgentPolicy.js +16 -0
- package/dist/tools/getAgentPolicy.js.map +1 -0
- package/dist/tools/getAgentReputation.d.ts +31 -0
- package/dist/tools/getAgentReputation.d.ts.map +1 -0
- package/dist/tools/getAgentReputation.js +44 -0
- package/dist/tools/getAgentReputation.js.map +1 -0
- package/dist/tools/getAgentWallet.d.ts +1 -1
- package/dist/tools/getAgentWallet.d.ts.map +1 -1
- package/dist/tools/getAgentWallet.js +11 -1
- package/dist/tools/getAgentWallet.js.map +1 -1
- package/dist/tools/getAgentWalletBalance.d.ts +1 -1
- package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
- package/dist/tools/getAgentWalletBalance.js +58 -26
- package/dist/tools/getAgentWalletBalance.js.map +1 -1
- package/dist/tools/getExecutionHistory.d.ts +1 -1
- package/dist/tools/getExecutionHistory.d.ts.map +1 -1
- package/dist/tools/getExecutionHistory.js +13 -19
- package/dist/tools/getExecutionHistory.js.map +1 -1
- package/dist/tools/getGasPrice.d.ts +3 -3
- package/dist/tools/getGasPrice.d.ts.map +0 -0
- package/dist/tools/getGasPrice.js +7 -7
- package/dist/tools/getGasPrice.js.map +1 -1
- package/dist/tools/getPoolInfo.d.ts +17 -17
- package/dist/tools/getPoolInfo.d.ts.map +1 -1
- package/dist/tools/getPoolInfo.js +14 -9
- package/dist/tools/getPoolInfo.js.map +1 -1
- package/dist/tools/getSpvProof.d.ts +24 -0
- package/dist/tools/getSpvProof.d.ts.map +1 -0
- package/dist/tools/getSpvProof.js +64 -0
- package/dist/tools/getSpvProof.js.map +1 -0
- package/dist/tools/getTokenPrice.d.ts +28 -85
- package/dist/tools/getTokenPrice.d.ts.map +1 -1
- package/dist/tools/getTokenPrice.js +87 -94
- package/dist/tools/getTokenPrice.js.map +1 -1
- package/dist/tools/getTransactionStatus.d.ts +2 -2
- package/dist/tools/getTransactionStatus.d.ts.map +0 -0
- package/dist/tools/getTransactionStatus.js +0 -0
- package/dist/tools/getTransactionStatus.js.map +0 -0
- package/dist/tools/getWalletBalance.d.ts +38 -3
- package/dist/tools/getWalletBalance.d.ts.map +1 -1
- package/dist/tools/getWalletBalance.js +92 -52
- package/dist/tools/getWalletBalance.js.map +1 -1
- package/dist/tools/publishRiskScore.d.ts +36 -14
- package/dist/tools/publishRiskScore.d.ts.map +1 -1
- package/dist/tools/publishRiskScore.js +80 -32
- package/dist/tools/publishRiskScore.js.map +1 -1
- package/dist/tools/queryGoldsky.d.ts +20 -0
- package/dist/tools/queryGoldsky.d.ts.map +1 -0
- package/dist/tools/queryGoldsky.js +29 -0
- package/dist/tools/queryGoldsky.js.map +1 -0
- package/dist/tools/queryRiskRegistry.d.ts +14 -14
- package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
- package/dist/tools/queryRiskRegistry.js +34 -30
- package/dist/tools/queryRiskRegistry.js.map +1 -1
- package/dist/tools/safehandsPreflightCheck.d.ts +29 -14
- package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
- package/dist/tools/safehandsPreflightCheck.js +133 -6
- package/dist/tools/safehandsPreflightCheck.js.map +1 -1
- package/dist/tools/safehandsRiskReport.d.ts +29 -14
- package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
- package/dist/tools/safehandsRiskReport.js +23 -3
- package/dist/tools/safehandsRiskReport.js.map +1 -1
- package/dist/tools/safehandsSafeExecute.d.ts +1 -1
- package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
- package/dist/tools/safehandsSafeExecute.js +100 -17
- package/dist/tools/safehandsSafeExecute.js.map +1 -1
- package/dist/tools/safehandsWalletHealth.d.ts +15 -1
- package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
- package/dist/tools/safehandsWalletHealth.js +67 -25
- package/dist/tools/safehandsWalletHealth.js.map +1 -1
- package/dist/tools/safehandsX402Preflight.d.ts +3 -3
- package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
- package/dist/tools/safehandsX402Preflight.js +24 -3
- package/dist/tools/safehandsX402Preflight.js.map +1 -1
- package/dist/tools/sendPayment.d.ts +10 -4
- package/dist/tools/sendPayment.d.ts.map +1 -1
- package/dist/tools/sendPayment.js +63 -36
- package/dist/tools/sendPayment.js.map +1 -1
- package/dist/tools/setAgentPolicy.d.ts +75 -0
- package/dist/tools/setAgentPolicy.d.ts.map +1 -0
- package/dist/tools/setAgentPolicy.js +80 -0
- package/dist/tools/setAgentPolicy.js.map +1 -0
- package/dist/tools/simulateTransaction.d.ts +7 -3
- package/dist/tools/simulateTransaction.d.ts.map +1 -1
- package/dist/tools/simulateTransaction.js +42 -9
- package/dist/tools/simulateTransaction.js.map +1 -1
- package/dist/tools/tokenRegistryStatus.d.ts +25 -5
- package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
- package/dist/tools/tokenRegistryStatus.js +61 -31
- package/dist/tools/tokenRegistryStatus.js.map +1 -1
- package/dist/tools/verifyRiskInclusion.d.ts +59 -0
- package/dist/tools/verifyRiskInclusion.d.ts.map +1 -0
- package/dist/tools/verifyRiskInclusion.js +40 -0
- package/dist/tools/verifyRiskInclusion.js.map +1 -0
- package/dist/tools/x402PayAndFetch.d.ts +15 -9
- package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
- package/dist/tools/x402PayAndFetch.js +163 -20
- package/dist/tools/x402PayAndFetch.js.map +1 -1
- package/dist/worker.d.ts +3 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +39 -0
- package/dist/worker.js.map +1 -0
- package/dist/x402Server.d.ts +1 -1
- package/dist/x402Server.d.ts.map +1 -1
- package/dist/x402Server.js +144 -35
- package/dist/x402Server.js.map +1 -1
- package/docs/REVIEWER_QUICKSTART.md +113 -0
- package/docs/SAFEHANDS_REVIEWER_DEMO_SCRIPT.md +228 -0
- package/package.json +130 -73
- package/contracts/RiskRegistry.json +0 -223
- package/contracts/RiskRegistry.sol +0 -58
- package/dist/lib/testDodoLive.d.ts +0 -2
- package/dist/lib/testDodoLive.d.ts.map +0 -1
- package/dist/lib/testDodoLive.js +0 -105
- package/dist/lib/testDodoLive.js.map +0 -1
- package/dist/lib/testLiveSafehands.d.ts +0 -2
- package/dist/lib/testLiveSafehands.d.ts.map +0 -1
- package/dist/lib/testLiveSafehands.js +0 -93
- package/dist/lib/testLiveSafehands.js.map +0 -1
- package/dist/lib/testRpc.d.ts +0 -2
- package/dist/lib/testRpc.d.ts.map +0 -1
- package/dist/lib/testRpc.js +0 -30
- package/dist/lib/testRpc.js.map +0 -1
- package/dist/lib/testRpcLive.d.ts +0 -2
- package/dist/lib/testRpcLive.d.ts.map +0 -1
- package/dist/lib/testRpcLive.js +0 -89
- package/dist/lib/testRpcLive.js.map +0 -1
- package/dist/lib/testTools.d.ts +0 -2
- package/dist/lib/testTools.d.ts.map +0 -1
- package/dist/lib/testTools.js +0 -397
- package/dist/lib/testTools.js.map +0 -1
- package/dist/lib/testX402Live.d.ts +0 -2
- package/dist/lib/testX402Live.d.ts.map +0 -1
- package/dist/lib/testX402Live.js +0 -160
- package/dist/lib/testX402Live.js.map +0 -1
- package/dist/scripts/checkDeploy.d.ts +0 -2
- package/dist/scripts/checkDeploy.d.ts.map +0 -1
- package/dist/scripts/checkDeploy.js +0 -25
- package/dist/scripts/checkDeploy.js.map +0 -1
- package/dist/scripts/deployRegistry.d.ts +0 -2
- package/dist/scripts/deployRegistry.d.ts.map +0 -1
- package/dist/scripts/deployRegistry.js +0 -101
- package/dist/scripts/deployRegistry.js.map +0 -1
- package/dist/scripts/testRegistry.d.ts +0 -2
- package/dist/scripts/testRegistry.d.ts.map +0 -1
- package/dist/scripts/testRegistry.js +0 -44
- package/dist/scripts/testRegistry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRuntime.js","sourceRoot":"","sources":["../../src/agent/agentRuntime.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,wDAAwD;AACxD,2EAA2E;AAiB3E,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAA6C;IAC3E,KAAK,EAAE;QACL,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,6FAA6F;KAC9G;IACD,KAAK,EAAE;QACL,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,kEAAkE;KACnF;IACD,oBAAoB,EAAE;QACpB,UAAU,EAAE,mBAAmB;QAC/B,cAAc,EAAE,qFAAqF;KACtG;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,4BAA4B;QACxC,cAAc,EAAE,+FAA+F;KAChH;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,QAA0B;IACtD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,gFAAgF;AAChF,iFAAiF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ReadOnlyChainAccess, AnalyzerRiskLevel } from "../lib/analysis/index.js";
|
|
2
|
+
import type { GuardianDecision } from "../lib/guardian/decision.js";
|
|
3
|
+
import type { AgentIntent, AgentRequest } from "./agentIntentClassifier.js";
|
|
4
|
+
import type { GuardianPolicy } from "./agentPolicyResolver.js";
|
|
5
|
+
export interface RoutedResult {
|
|
6
|
+
/** Which capability handled the intent. */
|
|
7
|
+
tool: string;
|
|
8
|
+
decision: GuardianDecision;
|
|
9
|
+
riskLevel: AnalyzerRiskLevel;
|
|
10
|
+
reasons: string[];
|
|
11
|
+
warnings: string[];
|
|
12
|
+
/** The primary analyzer's details (read-only) — used by the policy step. */
|
|
13
|
+
primaryDetails: Record<string, unknown>;
|
|
14
|
+
/** Raw handler output kept as evidence. */
|
|
15
|
+
evidence: unknown;
|
|
16
|
+
experimental?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RouteOptions {
|
|
19
|
+
access?: ReadOnlyChainAccess;
|
|
20
|
+
policy?: GuardianPolicy;
|
|
21
|
+
}
|
|
22
|
+
/** Route a classified intent to its read-only handler. No execution. */
|
|
23
|
+
export declare function routeIntent(intent: AgentIntent, req: AgentRequest, opts?: RouteOptions): Promise<RoutedResult>;
|
|
24
|
+
//# sourceMappingURL=agentToolRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentToolRouter.d.ts","sourceRoot":"","sources":["../../src/agent/agentToolRouter.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA0BD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,wEAAwE;AACxE,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuExH"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// ─── SafeHands Agent — Tool Router (read-only) ────────────────
|
|
2
|
+
// Routes a classified intent to the right EXISTING capability: the Phase 3
|
|
3
|
+
// read-only route handlers (which wrap the Phase 2 analyzers). The router adds
|
|
4
|
+
// no decision logic of its own and has no execution path. Read-only by
|
|
5
|
+
// construction — it imports only read handlers and the policy snapshot.
|
|
6
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
7
|
+
import { handleGuardianCheck, handleAnalyzeTx, handleAnalyzeContract, handleAnalyzeApproval, handleAnalyzeSafe, handleAnalyzeCalldata, handleAnalyzeX402, } from "../api/routes.js";
|
|
8
|
+
import { explainPolicyResult } from "../lib/policy/actionPolicyEngine.js";
|
|
9
|
+
function fromAnalyzer(tool, r) {
|
|
10
|
+
const primaryDetails = (r.details ?? r.analyzers?.[0]?.details ?? {});
|
|
11
|
+
return {
|
|
12
|
+
tool,
|
|
13
|
+
decision: r.decision,
|
|
14
|
+
riskLevel: r.riskLevel,
|
|
15
|
+
reasons: r.reasons ?? [],
|
|
16
|
+
warnings: r.warnings ?? [],
|
|
17
|
+
primaryDetails,
|
|
18
|
+
evidence: r,
|
|
19
|
+
experimental: r.experimental,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Route a classified intent to its read-only handler. No execution. */
|
|
23
|
+
export async function routeIntent(intent, req, opts = {}) {
|
|
24
|
+
const { access, policy } = opts;
|
|
25
|
+
switch (intent) {
|
|
26
|
+
case "tx_hash_check":
|
|
27
|
+
return fromAnalyzer("analyze/tx", (await handleAnalyzeTx({ txHash: req.txHash, network: req.network, chainId: req.chainId }, access)));
|
|
28
|
+
case "contract_check":
|
|
29
|
+
return fromAnalyzer("analyze/contract", (await handleAnalyzeContract({ address: req.address ?? req.to, network: req.network, chainId: req.chainId }, access)));
|
|
30
|
+
case "erc20_approval":
|
|
31
|
+
return fromAnalyzer("analyze/approval", handleAnalyzeApproval({ data: req.data, token: req.token ?? req.to }));
|
|
32
|
+
case "permit2_approval":
|
|
33
|
+
// Permit2 approve(0x87517c45) is decoded by the calldata analyzer, not the
|
|
34
|
+
// ERC-20 approve decoder (which only understands 0x095ea7b3).
|
|
35
|
+
return fromAnalyzer("analyze/calldata", handleAnalyzeCalldata({ data: req.data, token: req.token ?? req.to }));
|
|
36
|
+
case "safe_transaction":
|
|
37
|
+
return fromAnalyzer("analyze/safe", (await handleAnalyzeSafe({ data: req.data })));
|
|
38
|
+
case "x402_payment_request":
|
|
39
|
+
return fromAnalyzer("analyze/x402", handleAnalyzeX402({
|
|
40
|
+
url: req.url,
|
|
41
|
+
paymentAmountUsdc: req.paymentAmountUsdc,
|
|
42
|
+
paymentTokenAddress: req.paymentTokenAddress,
|
|
43
|
+
payTo: req.payTo,
|
|
44
|
+
agentId: req.agentId,
|
|
45
|
+
chainId: req.chainId,
|
|
46
|
+
}));
|
|
47
|
+
case "native_transfer":
|
|
48
|
+
case "raw_transaction_intent":
|
|
49
|
+
case "unknown_contract_call":
|
|
50
|
+
return fromAnalyzer("guardian/check", (await handleGuardianCheck({ to: req.to, data: req.data, value: req.value, network: req.network, chainId: req.chainId }, access)));
|
|
51
|
+
case "policy_question":
|
|
52
|
+
return {
|
|
53
|
+
tool: "policy_snapshot",
|
|
54
|
+
decision: "ALLOW",
|
|
55
|
+
riskLevel: "LOW",
|
|
56
|
+
reasons: ["Informational: current SafeHands policy snapshot (no action evaluated)."],
|
|
57
|
+
warnings: [],
|
|
58
|
+
primaryDetails: {},
|
|
59
|
+
evidence: { policy: policy ?? null },
|
|
60
|
+
};
|
|
61
|
+
case "risk_explanation": {
|
|
62
|
+
// Wire to the shared explain-risk logic (the same explainPolicyResult used by
|
|
63
|
+
// the explain_risk skill) instead of a hardcoded string. No action is evaluated
|
|
64
|
+
// here, so this is an informational ALLOW; the human-readable explanation is
|
|
65
|
+
// produced by the real skill path. Pure + read-only — no execution.
|
|
66
|
+
const explanation = explainPolicyResult({
|
|
67
|
+
decision: "ALLOW",
|
|
68
|
+
riskLevel: "LOW",
|
|
69
|
+
safeToExecute: true,
|
|
70
|
+
reasons: [],
|
|
71
|
+
requiredActions: [],
|
|
72
|
+
checks: [],
|
|
73
|
+
environment: req.network ?? "pacific-mainnet",
|
|
74
|
+
chainId: req.chainId ?? 1672,
|
|
75
|
+
isMainnet: (req.network ?? "pacific-mainnet") === "pacific-mainnet",
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
tool: "explain_risk",
|
|
79
|
+
decision: "ALLOW",
|
|
80
|
+
riskLevel: "LOW",
|
|
81
|
+
reasons: [explanation],
|
|
82
|
+
warnings: [],
|
|
83
|
+
primaryDetails: {},
|
|
84
|
+
evidence: { question: req.text ?? null, explanation, source: "explain_risk" },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=agentToolRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentToolRouter.js","sourceRoot":"","sources":["../../src/agent/agentToolRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type GuardianAgentOptions } from "./SafeHandsGuardianAgent.js";
|
|
2
|
+
import type { AgentRequest } from "./agentIntentClassifier.js";
|
|
3
|
+
import type { AgentDecision } from "./agentDecisionFormatter.js";
|
|
4
|
+
import { type Enrichment } from "./agentEnrich.js";
|
|
5
|
+
import { type SafeHandsSafeExecuteInput } from "../tools/safehandsSafeExecute.js";
|
|
6
|
+
export interface EnrichedDecision extends AgentDecision {
|
|
7
|
+
enrichment: Enrichment;
|
|
8
|
+
}
|
|
9
|
+
export interface OperateOptions {
|
|
10
|
+
/** Caller must explicitly opt in to execution (default: assess-only). */
|
|
11
|
+
execute?: boolean;
|
|
12
|
+
/** Which gated safe-execute path to run when executing. */
|
|
13
|
+
executePath?: SafeHandsSafeExecuteInput["path"];
|
|
14
|
+
/** Underlying tool input for the execution. */
|
|
15
|
+
action?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export interface OperateResult {
|
|
18
|
+
decision: EnrichedDecision;
|
|
19
|
+
executed: boolean;
|
|
20
|
+
/** Raw result of the gated execution (when attempted). */
|
|
21
|
+
executionResult?: unknown;
|
|
22
|
+
/** The Agent-to-Agent obligation derived from the decision. */
|
|
23
|
+
obligation: string;
|
|
24
|
+
report: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class GuardianOperator {
|
|
27
|
+
private readonly agent;
|
|
28
|
+
constructor(opts?: GuardianAgentOptions);
|
|
29
|
+
/** Read-only: the SafeHands verdict enriched with real on-chain + gas intel. */
|
|
30
|
+
assess(req: AgentRequest): Promise<EnrichedDecision>;
|
|
31
|
+
/** Full lifecycle. Executes only on ALLOW + explicit opt-in, via the gated path. */
|
|
32
|
+
operate(req: AgentRequest, opts?: OperateOptions): Promise<OperateResult>;
|
|
33
|
+
}
|
|
34
|
+
export declare function createGuardianOperator(opts?: GuardianAgentOptions): GuardianOperator;
|
|
35
|
+
//# sourceMappingURL=guardianOperator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardianOperator.d.ts","sourceRoot":"","sources":["../../src/agent/guardianOperator.ts"],"names":[],"mappings":"AAeA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAA8B,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE9G,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;gBAEnC,IAAI,CAAC,EAAE,oBAAoB;IAIvC,gFAAgF;IAC1E,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAO1D,oFAAoF;IAC9E,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAmCpF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,gBAAgB,CAEpF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// ─── SafeHands Operator ───────────────────────────────────────
|
|
2
|
+
// The "Complete Agent" for the Pharos Agent Arena. It wraps the read-only
|
|
3
|
+
// SafeHands Agent and runs the full lifecycle:
|
|
4
|
+
//
|
|
5
|
+
// Perceive → Enrich → Decide → (gated) Act → Attest → Report
|
|
6
|
+
//
|
|
7
|
+
// - The read-only verdict (Perceive/Enrich/Decide) never signs or writes.
|
|
8
|
+
// - Act is OPT-IN and DELEGATED to the existing gated execution path
|
|
9
|
+
// (`safehands_safe_execute`), which enforces WRITE_TOOLS_ENABLED, the network
|
|
10
|
+
// executionAllowed flag, managed-wallet authorization, funding, and re-runs
|
|
11
|
+
// preflight. The Operator never bypasses a gate and holds no keys itself.
|
|
12
|
+
// - The user-signed broadcast path attests every executed action on-chain to
|
|
13
|
+
// SafeHandsAttestation ("if SafeHands broadcasts it, SafeHands attests it").
|
|
14
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
15
|
+
import { SafeHandsGuardianAgent } from "./SafeHandsGuardianAgent.js";
|
|
16
|
+
import { enrich } from "./agentEnrich.js";
|
|
17
|
+
import { handleSafeHandsSafeExecute } from "../tools/safehandsSafeExecute.js";
|
|
18
|
+
export class GuardianOperator {
|
|
19
|
+
agent;
|
|
20
|
+
constructor(opts) {
|
|
21
|
+
this.agent = new SafeHandsGuardianAgent(opts);
|
|
22
|
+
}
|
|
23
|
+
/** Read-only: the SafeHands verdict enriched with real on-chain + gas intel. */
|
|
24
|
+
async assess(req) {
|
|
25
|
+
const decision = await this.agent.check(req);
|
|
26
|
+
const enrichment = await enrich(req);
|
|
27
|
+
const evidence = { ...decision.evidence, enrichment };
|
|
28
|
+
return { ...decision, evidence, enrichment };
|
|
29
|
+
}
|
|
30
|
+
/** Full lifecycle. Executes only on ALLOW + explicit opt-in, via the gated path. */
|
|
31
|
+
async operate(req, opts = {}) {
|
|
32
|
+
const decision = await this.assess(req);
|
|
33
|
+
const obligation = decision.callerObligation;
|
|
34
|
+
if (!opts.execute || decision.decision !== "ALLOW" || !opts.executePath) {
|
|
35
|
+
return {
|
|
36
|
+
decision,
|
|
37
|
+
executed: false,
|
|
38
|
+
obligation,
|
|
39
|
+
report: `${decision.summary} — caller obligation: ${obligation}. ${decision.nextStep}`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Delegate to the gated execution path (enforces every safety gate + attests).
|
|
43
|
+
const executionResult = await handleSafeHandsSafeExecute({
|
|
44
|
+
path: opts.executePath,
|
|
45
|
+
execute: true,
|
|
46
|
+
confirmExecution: true,
|
|
47
|
+
action: opts.action ?? {},
|
|
48
|
+
});
|
|
49
|
+
const executed = executionResult.success === true &&
|
|
50
|
+
executionResult.data?.executed === true;
|
|
51
|
+
return {
|
|
52
|
+
decision,
|
|
53
|
+
executed,
|
|
54
|
+
executionResult,
|
|
55
|
+
obligation,
|
|
56
|
+
report: executed
|
|
57
|
+
? `Executed verified action via gated path; attested on-chain when broadcast. ${decision.summary}`
|
|
58
|
+
: `Execution gated/not completed — verdict ALLOW but a gate or runtime check stopped it. ${decision.summary}`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function createGuardianOperator(opts) {
|
|
63
|
+
return new GuardianOperator(opts);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=guardianOperator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardianOperator.js","sourceRoot":"","sources":["../../src/agent/guardianOperator.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,0EAA0E;AAC1E,+CAA+C;AAC/C,EAAE;AACF,+DAA+D;AAC/D,EAAE;AACF,0EAA0E;AAC1E,qEAAqE;AACrE,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAE3E,OAAO,EAAE,sBAAsB,EAA6B,MAAM,6BAA6B,CAAC;AAGhG,OAAO,EAAE,MAAM,EAAmB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAkC,MAAM,kCAAkC,CAAC;AAyB9G,MAAM,OAAO,gBAAgB;IACV,KAAK,CAAyB;IAE/C,YAAY,IAA2B;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,MAAM,CAAC,GAAiB;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,EAAE,GAAI,QAAQ,CAAC,QAAoC,EAAE,UAAU,EAAE,CAAC;QACnF,OAAO,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC/C,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,OAAO,CAAC,GAAiB,EAAE,OAAuB,EAAE;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxE,OAAO;gBACL,QAAQ;gBACR,QAAQ,EAAE,KAAK;gBACf,UAAU;gBACV,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,yBAAyB,UAAU,KAAK,QAAQ,CAAC,QAAQ,EAAE;aACvF,CAAC;QACJ,CAAC;QAED,+EAA+E;QAC/E,MAAM,eAAe,GAAG,MAAM,0BAA0B,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,OAAO,EAAE,IAAI;YACb,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;SAC1B,CAAC,CAAC;QAEH,MAAM,QAAQ,GACZ,eAAe,CAAC,OAAO,KAAK,IAAI;YAC/B,eAAe,CAAC,IAAsC,EAAE,QAAQ,KAAK,IAAI,CAAC;QAE7E,OAAO;YACL,QAAQ;YACR,QAAQ;YACR,eAAe;YACf,UAAU;YACV,MAAM,EAAE,QAAQ;gBACd,CAAC,CAAC,8EAA8E,QAAQ,CAAC,OAAO,EAAE;gBAClG,CAAC,CAAC,yFAAyF,QAAQ,CAAC,OAAO,EAAE;SAChH,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,IAA2B;IAChE,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./agentIntentClassifier.js";
|
|
2
|
+
export * from "./agentPolicyResolver.js";
|
|
3
|
+
export * from "./agentToolRouter.js";
|
|
4
|
+
export * from "./agentDecisionFormatter.js";
|
|
5
|
+
export * from "./agentRuntime.js";
|
|
6
|
+
export * from "./SafeHandsGuardianAgent.js";
|
|
7
|
+
export * from "./agentEnrich.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAOA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// ─── SafeHands — Public Surface ───────────────────────────────
|
|
2
|
+
// The read-only SafeHands Agent: decision contract + analyzers + read-only
|
|
3
|
+
// handlers + the real-data Enrich step. No signer, no keys; execution is
|
|
4
|
+
// delegated to the separately gated tools. (The former GuardianOperator
|
|
5
|
+
// orchestrator class was removed as dead code — nothing consumed it.)
|
|
6
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
7
|
+
export * from "./agentIntentClassifier.js";
|
|
8
|
+
export * from "./agentPolicyResolver.js";
|
|
9
|
+
export * from "./agentToolRouter.js";
|
|
10
|
+
export * from "./agentDecisionFormatter.js";
|
|
11
|
+
export * from "./agentRuntime.js";
|
|
12
|
+
export * from "./SafeHandsGuardianAgent.js";
|
|
13
|
+
export * from "./agentEnrich.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,2EAA2E;AAC3E,yEAAyE;AACzE,wEAAwE;AACxE,sEAAsE;AACtE,2EAA2E;AAE3E,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export declare function handleActivitySummary(): {
|
|
2
|
+
readOnly: true;
|
|
3
|
+
executionAvailable: boolean;
|
|
4
|
+
window: {
|
|
5
|
+
capacity: number;
|
|
6
|
+
size: number;
|
|
7
|
+
};
|
|
8
|
+
totals: {
|
|
9
|
+
recorded: number;
|
|
10
|
+
rateLimited: number;
|
|
11
|
+
byCaller: Record<import("../lib/observability/sanitize.js").CallerType, number>;
|
|
12
|
+
byAccessTier: Record<"anonymous" | "agent" | "a2a" | "api-key", number>;
|
|
13
|
+
byDecision: Record<"ALLOW" | "BLOCK" | "REQUIRE_CONFIRMATION" | "PREPARE_ONLY" | "NONE", number>;
|
|
14
|
+
byRisk: Record<"UNKNOWN" | "LOW" | "MEDIUM" | "HIGH" | "CRITICAL", number>;
|
|
15
|
+
byEndpoint: Record<string, number>;
|
|
16
|
+
byPolicyPreset: Record<string, number>;
|
|
17
|
+
};
|
|
18
|
+
lastActivityAt: string | null;
|
|
19
|
+
generatedAt: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function handleActivityRecent(query: unknown): {
|
|
22
|
+
readOnly: true;
|
|
23
|
+
executionAvailable: boolean;
|
|
24
|
+
generatedAt: string;
|
|
25
|
+
limit: number;
|
|
26
|
+
count: number;
|
|
27
|
+
items: import("../lib/observability/sanitize.js").ActivityItem[];
|
|
28
|
+
};
|
|
29
|
+
export declare function handleMetricsPublic(): {
|
|
30
|
+
service: string;
|
|
31
|
+
version: string;
|
|
32
|
+
generatedAt: string;
|
|
33
|
+
network: import("../lib/networks.js").NetworkName;
|
|
34
|
+
chainId: number;
|
|
35
|
+
uptimeSeconds: number;
|
|
36
|
+
totalChecks: number;
|
|
37
|
+
totalAgentChecks: number;
|
|
38
|
+
totalA2AChecks: number;
|
|
39
|
+
totalBlocked: number;
|
|
40
|
+
totalRequireConfirmation: number;
|
|
41
|
+
totalPrepareOnly: number;
|
|
42
|
+
totalAllowed: number;
|
|
43
|
+
totalRateLimited: number;
|
|
44
|
+
rateLimitedByTier: Record<"anonymous" | "agent" | "a2a" | "api-key", number>;
|
|
45
|
+
ring: {
|
|
46
|
+
capacity: number;
|
|
47
|
+
size: number;
|
|
48
|
+
};
|
|
49
|
+
quota: {
|
|
50
|
+
windowSeconds: number;
|
|
51
|
+
tiers: Record<import("../lib/observability/quota.js").QuotaTier, number>;
|
|
52
|
+
};
|
|
53
|
+
mainnetLive: boolean;
|
|
54
|
+
railwayReady: boolean;
|
|
55
|
+
publicReadApiAvailable: boolean;
|
|
56
|
+
apiKeyAuthAvailable: boolean;
|
|
57
|
+
scopedApiKeysAvailable: boolean;
|
|
58
|
+
quotaControlsAvailable: boolean;
|
|
59
|
+
policyProfilesAvailable: boolean;
|
|
60
|
+
policyVersion: string;
|
|
61
|
+
policyPresets: import("../lib/policy/policyPresets.js").PolicyPreset[];
|
|
62
|
+
prepareTxAvailable: boolean;
|
|
63
|
+
signingAvailable: boolean;
|
|
64
|
+
userSignedBroadcastAvailable: boolean;
|
|
65
|
+
premiumEndpointsAvailable: boolean;
|
|
66
|
+
x402PaidEndpointsAvailable: boolean;
|
|
67
|
+
readOnly: boolean;
|
|
68
|
+
executionAvailable: boolean;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=activityRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activityRoutes.d.ts","sourceRoot":"","sources":["../../src/api/activityRoutes.ts"],"names":[],"mappings":"AAyCA,wBAAgB,qBAAqB;;;;;;;;;;;;;;;;;;;EAMpC;AAGD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO;;;;;;;EAUlD;AAID,wBAAgB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyClC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// ─── SafeHands API — Activity & Public Metrics (read-only) ────
|
|
2
|
+
// Pure handlers for the public activity feed + aggregate metrics that power the
|
|
3
|
+
// future SafeHands site. They read ONLY the in-memory activity store + the
|
|
4
|
+
// honest capability flags. No signer, no wallet, no write path, no secrets.
|
|
5
|
+
// server.ts wraps these in the standard ok() envelope.
|
|
6
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
7
|
+
import { readFileSync } from "fs";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
import { dirname, join } from "path";
|
|
10
|
+
import { activityStore } from "../lib/observability/activityStore.js";
|
|
11
|
+
import { readOnlyMeta } from "./response.js";
|
|
12
|
+
import { resolveQuotaConfig } from "./httpHardening.js";
|
|
13
|
+
import { POLICY_VERSION, PRESET_NAMES } from "../lib/policy/policyPresets.js";
|
|
14
|
+
import { getActiveNetwork, getActiveNetworkName } from "../lib/networks.js";
|
|
15
|
+
import { getCapabilityFlags, isExecutionAvailable } from "../lib/config.js";
|
|
16
|
+
const SERVICE = "SafeHands API";
|
|
17
|
+
function readVersion() {
|
|
18
|
+
try {
|
|
19
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const pkg = JSON.parse(readFileSync(join(here, "..", "..", "package.json"), "utf-8"));
|
|
21
|
+
return typeof pkg.version === "string" ? pkg.version : "unknown";
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return "unknown";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const VERSION = readVersion();
|
|
28
|
+
const RECENT_DEFAULT = 20;
|
|
29
|
+
const RECENT_MAX = 100;
|
|
30
|
+
function clampLimit(raw) {
|
|
31
|
+
const n = typeof raw === "string" ? parseInt(raw, 10) : typeof raw === "number" ? raw : NaN;
|
|
32
|
+
if (!Number.isFinite(n))
|
|
33
|
+
return RECENT_DEFAULT;
|
|
34
|
+
return Math.min(RECENT_MAX, Math.max(1, Math.floor(n)));
|
|
35
|
+
}
|
|
36
|
+
// ── GET /activity/summary ──────────────────────────────────────────────
|
|
37
|
+
export function handleActivitySummary() {
|
|
38
|
+
return {
|
|
39
|
+
generatedAt: new Date().toISOString(),
|
|
40
|
+
...activityStore.summary(),
|
|
41
|
+
...readOnlyMeta(),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// ── GET /activity/recent?limit=N ───────────────────────────────────────
|
|
45
|
+
export function handleActivityRecent(query) {
|
|
46
|
+
const limit = clampLimit(query && typeof query === "object" ? query.limit : undefined);
|
|
47
|
+
const items = activityStore.recent(limit);
|
|
48
|
+
return {
|
|
49
|
+
generatedAt: new Date().toISOString(),
|
|
50
|
+
limit,
|
|
51
|
+
count: items.length,
|
|
52
|
+
items,
|
|
53
|
+
...readOnlyMeta(),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// ── GET /metrics/public ────────────────────────────────────────────────
|
|
57
|
+
// Safe aggregate metrics only — no env, no payloads, no secrets, no memory dumps.
|
|
58
|
+
export function handleMetricsPublic() {
|
|
59
|
+
const m = activityStore.metrics();
|
|
60
|
+
const caps = getCapabilityFlags();
|
|
61
|
+
const network = getActiveNetwork();
|
|
62
|
+
const quotaCfg = resolveQuotaConfig();
|
|
63
|
+
return {
|
|
64
|
+
service: SERVICE,
|
|
65
|
+
version: VERSION,
|
|
66
|
+
generatedAt: new Date().toISOString(),
|
|
67
|
+
network: getActiveNetworkName(),
|
|
68
|
+
chainId: network.chainId,
|
|
69
|
+
uptimeSeconds: m.uptimeSeconds,
|
|
70
|
+
totalChecks: m.totalChecks,
|
|
71
|
+
totalAgentChecks: m.totalAgentChecks,
|
|
72
|
+
totalA2AChecks: m.totalA2AChecks,
|
|
73
|
+
totalBlocked: m.totalBlocked,
|
|
74
|
+
totalRequireConfirmation: m.totalRequireConfirmation,
|
|
75
|
+
totalPrepareOnly: m.totalPrepareOnly,
|
|
76
|
+
totalAllowed: m.totalAllowed,
|
|
77
|
+
totalRateLimited: m.totalRateLimited,
|
|
78
|
+
rateLimitedByTier: m.rateLimitedByTier,
|
|
79
|
+
ring: m.ring,
|
|
80
|
+
// Safe quota config (limits + window only — NO keys/IPs/identifiers).
|
|
81
|
+
quota: { windowSeconds: Math.floor(quotaCfg.windowMs / 1000), tiers: quotaCfg.max },
|
|
82
|
+
mainnetLive: caps.mainnetLive,
|
|
83
|
+
railwayReady: caps.railwayReady,
|
|
84
|
+
publicReadApiAvailable: caps.publicReadApiAvailable,
|
|
85
|
+
apiKeyAuthAvailable: caps.apiKeyAuthAvailable,
|
|
86
|
+
scopedApiKeysAvailable: caps.scopedApiKeysAvailable,
|
|
87
|
+
quotaControlsAvailable: caps.quotaControlsAvailable,
|
|
88
|
+
policyProfilesAvailable: caps.policyProfilesAvailable,
|
|
89
|
+
policyVersion: POLICY_VERSION,
|
|
90
|
+
policyPresets: [...PRESET_NAMES],
|
|
91
|
+
prepareTxAvailable: caps.prepareTxAvailable,
|
|
92
|
+
signingAvailable: caps.signingAvailable,
|
|
93
|
+
userSignedBroadcastAvailable: caps.userSignedBroadcastAvailable,
|
|
94
|
+
premiumEndpointsAvailable: caps.premiumEndpointsAvailable,
|
|
95
|
+
x402PaidEndpointsAvailable: caps.x402PaidEndpointsAvailable,
|
|
96
|
+
readOnly: true,
|
|
97
|
+
executionAvailable: isExecutionAvailable(),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=activityRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activityRoutes.js","sourceRoot":"","sources":["../../src/api/activityRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GuardianPolicy } from "../agent/index.js";
|
|
2
|
+
import type { ReadOnlyChainAccess } from "../lib/analysis/index.js";
|
|
3
|
+
/** Sanitized policy + preset resolved by the caller (server.ts) — tighten-only. */
|
|
4
|
+
export interface AgentRouteOptions {
|
|
5
|
+
policy?: Partial<GuardianPolicy>;
|
|
6
|
+
policyPreset?: string;
|
|
7
|
+
}
|
|
8
|
+
/** POST /agent/check — real SafeHands Agent decision for an intent payload. */
|
|
9
|
+
export declare function handleAgentCheck(raw: unknown, access?: ReadOnlyChainAccess, opts?: AgentRouteOptions): Promise<import("../agent/agentDecisionFormatter.js").AgentDecision>;
|
|
10
|
+
/**
|
|
11
|
+
* POST /agent/a2a/check — real SafeHands Agent decision plus the caller's
|
|
12
|
+
* obligation (ALLOW→proceed, BLOCK→stop, REQUIRE_CONFIRMATION→ask_user_or_admin,
|
|
13
|
+
* PREPARE_ONLY→prepare_handoff_no_execute).
|
|
14
|
+
*/
|
|
15
|
+
export declare function handleAgentA2ACheck(raw: unknown, access?: ReadOnlyChainAccess, opts?: AgentRouteOptions): Promise<import("../agent/SafeHandsGuardianAgent.js").AgentToAgentDecision>;
|
|
16
|
+
//# sourceMappingURL=agentRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRoutes.d.ts","sourceRoot":"","sources":["../../src/api/agentRoutes.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+EAA+E;AAC/E,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,GAAE,iBAAsB,uEAM9G;AAUD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,GAAE,iBAAsB,8EAejH"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// ─── SafeHands API — Agent Endpoints (read-only) ──────────────
|
|
2
|
+
// Real HTTP handlers that delegate to the EXISTING SafeHandsGuardianAgent. No
|
|
3
|
+
// decision logic is duplicated here, no static/demo output is returned — every
|
|
4
|
+
// response is the agent's real verdict. Kept in a separate file so `routes.ts`
|
|
5
|
+
// stays free of the agent import (the agent imports `routes.ts`).
|
|
6
|
+
// ────────────────────────────────────────────────────────────────────────
|
|
7
|
+
import { createGuardianAgent } from "../agent/index.js";
|
|
8
|
+
/** POST /agent/check — real SafeHands Agent decision for an intent payload. */
|
|
9
|
+
export async function handleAgentCheck(raw, access, opts = {}) {
|
|
10
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
11
|
+
throw new Error("Request body must be an object describing the action/intent.");
|
|
12
|
+
}
|
|
13
|
+
const agent = createGuardianAgent({ access, policy: opts.policy, policyPreset: opts.policyPreset });
|
|
14
|
+
return agent.check(raw);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* POST /agent/a2a/check — real SafeHands Agent decision plus the caller's
|
|
18
|
+
* obligation (ALLOW→proceed, BLOCK→stop, REQUIRE_CONFIRMATION→ask_user_or_admin,
|
|
19
|
+
* PREPARE_ONLY→prepare_handoff_no_execute).
|
|
20
|
+
*/
|
|
21
|
+
export async function handleAgentA2ACheck(raw, access, opts = {}) {
|
|
22
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
|
|
23
|
+
throw new Error("Request body must be an object.");
|
|
24
|
+
}
|
|
25
|
+
const body = raw;
|
|
26
|
+
if (typeof body.callerAgent !== "string" || body.callerAgent.length === 0) {
|
|
27
|
+
throw new Error("callerAgent must be a non-empty string.");
|
|
28
|
+
}
|
|
29
|
+
const action = body.requestedAction ?? body.intent ?? body.action;
|
|
30
|
+
if (action === undefined || action === null || typeof action !== "object" || Array.isArray(action)) {
|
|
31
|
+
throw new Error("requestedAction (or intent) must be an object describing the action.");
|
|
32
|
+
}
|
|
33
|
+
// The caller policy is sanitized by the server (tighten-only) and passed via opts.
|
|
34
|
+
const agent = createGuardianAgent({ owner: "agent", policy: opts.policy, policyPreset: opts.policyPreset, access });
|
|
35
|
+
return agent.checkForAgent(body.callerAgent, action);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=agentRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentRoutes.js","sourceRoot":"","sources":["../../src/api/agentRoutes.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,kEAAkE;AAClE,2EAA2E;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAUxD,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAY,EAAE,MAA4B,EAAE,OAA0B,EAAE;IAC7G,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACpG,OAAO,KAAK,CAAC,KAAK,CAAC,GAAmB,CAAC,CAAC;AAC1C,CAAC;AAUD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAY,EAAE,MAA4B,EAAE,OAA0B,EAAE;IAChH,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,GAAG,GAAc,CAAC;IAC5B,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAClE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,mFAAmF;IACnF,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACpH,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,MAAsB,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare function handleBroadcastSigned(raw: unknown): Promise<{
|
|
2
|
+
readOnly: true;
|
|
3
|
+
executionAvailable: boolean;
|
|
4
|
+
broadcastStatus: "success" | "verify_only_passed";
|
|
5
|
+
attestationStatus: string;
|
|
6
|
+
executionStatus: string;
|
|
7
|
+
message: string;
|
|
8
|
+
txHash: string | undefined;
|
|
9
|
+
preparedTransactionId: string;
|
|
10
|
+
preparedTransactionHash: string;
|
|
11
|
+
decision: string;
|
|
12
|
+
network: import("../lib/networks.js").NetworkName;
|
|
13
|
+
chainId: number;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function handleGetBroadcastAttestationStatus(txHash: string): Promise<{
|
|
16
|
+
readOnly: true;
|
|
17
|
+
executionAvailable: boolean;
|
|
18
|
+
txHash: string;
|
|
19
|
+
status: string;
|
|
20
|
+
attestationStatus: string;
|
|
21
|
+
local: {
|
|
22
|
+
found: boolean;
|
|
23
|
+
record: import("../lib/pharos/attestationPublisher.js").PendingAttestation | null;
|
|
24
|
+
};
|
|
25
|
+
goldsky: import("../lib/goldsky.js").GoldskyLookupResult<import("../lib/goldsky.js").IndexedAttestationRecord>;
|
|
26
|
+
onchain: import("../lib/goldsky.js").OnchainAttestationLookup | {
|
|
27
|
+
source: string;
|
|
28
|
+
skipped: boolean;
|
|
29
|
+
reason: string;
|
|
30
|
+
};
|
|
31
|
+
lookupOrder: string[];
|
|
32
|
+
network: import("../lib/networks.js").NetworkName;
|
|
33
|
+
}>;
|
|
34
|
+
//# sourceMappingURL=broadcastRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcastRoutes.d.ts","sourceRoot":"","sources":["../../src/api/broadcastRoutes.ts"],"names":[],"mappings":"AAUA,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,OAAO;;;;;;;;;;;;;GAkIvD;AAGD,wBAAsB,mCAAmC,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;GA4BvE"}
|