safehands-pharos 1.3.0 ā 1.4.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/.env.example +64 -26
- package/README.md +333 -445
- package/dist/cli.d.ts +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +124 -98
- package/dist/cli.js.map +1 -1
- package/dist/demo.d.ts +1 -1
- package/dist/demo.js +171 -171
- package/dist/index.d.ts +2 -2
- package/dist/index.js +138 -85
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.js +65 -65
- package/dist/lib/auditLog.d.ts +9 -0
- package/dist/lib/auditLog.d.ts.map +1 -0
- package/dist/lib/auditLog.js +30 -0
- package/dist/lib/auditLog.js.map +1 -0
- package/dist/lib/constants.d.ts +291 -291
- package/dist/lib/constants.js +292 -292
- package/dist/lib/dodoApi.d.ts +78 -70
- package/dist/lib/dodoApi.d.ts.map +1 -1
- package/dist/lib/dodoApi.js +196 -178
- package/dist/lib/dodoApi.js.map +1 -1
- package/dist/lib/http.d.ts +14 -14
- package/dist/lib/http.js +118 -118
- package/dist/lib/pharosClient.d.ts +58 -58
- package/dist/lib/pharosClient.d.ts.map +1 -1
- package/dist/lib/pharosClient.js +63 -53
- package/dist/lib/pharosClient.js.map +1 -1
- package/dist/lib/policy/actionPolicyEngine.d.ts +53 -53
- package/dist/lib/policy/actionPolicyEngine.js +212 -212
- package/dist/lib/riskEngine.d.ts +26 -26
- package/dist/lib/riskEngine.js +283 -283
- 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 +88 -89
- package/dist/lib/signer/index.js.map +1 -1
- package/dist/lib/spendAccumulator.d.ts +10 -0
- package/dist/lib/spendAccumulator.d.ts.map +1 -0
- package/dist/lib/spendAccumulator.js +54 -0
- package/dist/lib/spendAccumulator.js.map +1 -0
- package/dist/lib/testDodoLive.d.ts +1 -1
- package/dist/lib/testDodoLive.js +104 -104
- package/dist/lib/testLiveSafehands.d.ts +1 -1
- package/dist/lib/testLiveSafehands.js +92 -92
- package/dist/lib/testRpc.d.ts +1 -1
- package/dist/lib/testRpc.js +29 -29
- package/dist/lib/testRpcLive.d.ts +1 -1
- package/dist/lib/testRpcLive.js +88 -88
- package/dist/lib/testTools.d.ts +1 -1
- package/dist/lib/testTools.js +397 -397
- package/dist/lib/testX402Live.d.ts +1 -1
- package/dist/lib/testX402Live.js +159 -159
- package/dist/lib/toolResponse.d.ts +25 -25
- package/dist/lib/toolResponse.js +53 -53
- package/dist/lib/wallet/index.d.ts +37 -18
- package/dist/lib/wallet/index.d.ts.map +1 -1
- package/dist/lib/wallet/index.js +128 -70
- package/dist/lib/wallet/index.js.map +1 -1
- package/dist/scripts/checkDeploy.d.ts +1 -1
- package/dist/scripts/checkDeploy.js +24 -24
- package/dist/scripts/deployRegistry.d.ts +1 -1
- package/dist/scripts/deployRegistry.js +100 -100
- package/dist/scripts/testRegistry.d.ts +1 -1
- package/dist/scripts/testRegistry.js +43 -43
- package/dist/tools/approveToken.d.ts +45 -46
- package/dist/tools/approveToken.d.ts.map +1 -1
- package/dist/tools/approveToken.js +85 -83
- package/dist/tools/approveToken.js.map +1 -1
- package/dist/tools/assessRisk.d.ts +79 -79
- package/dist/tools/assessRisk.d.ts.map +1 -1
- package/dist/tools/assessRisk.js +104 -93
- package/dist/tools/assessRisk.js.map +1 -1
- package/dist/tools/checkAllowance.d.ts +43 -36
- package/dist/tools/checkAllowance.d.ts.map +1 -1
- package/dist/tools/checkAllowance.js +56 -42
- package/dist/tools/checkAllowance.js.map +1 -1
- package/dist/tools/checkTokenSecurity.d.ts +46 -46
- package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
- package/dist/tools/checkTokenSecurity.js +95 -88
- package/dist/tools/checkTokenSecurity.js.map +1 -1
- package/dist/tools/createAgentWallet.d.ts +26 -26
- package/dist/tools/createAgentWallet.d.ts.map +1 -1
- package/dist/tools/createAgentWallet.js +58 -59
- package/dist/tools/createAgentWallet.js.map +1 -1
- package/dist/tools/estimateGas.d.ts +79 -79
- package/dist/tools/estimateGas.js +124 -124
- package/dist/tools/executeSwap.d.ts +61 -59
- package/dist/tools/executeSwap.d.ts.map +1 -1
- package/dist/tools/executeSwap.js +141 -129
- package/dist/tools/executeSwap.js.map +1 -1
- package/dist/tools/explainRisk.d.ts +29 -29
- package/dist/tools/explainRisk.js +32 -32
- package/dist/tools/getAgentWallet.d.ts +21 -21
- package/dist/tools/getAgentWallet.js +27 -27
- package/dist/tools/getAgentWalletBalance.d.ts +11 -11
- package/dist/tools/getAgentWalletBalance.js +70 -70
- package/dist/tools/getExecutionHistory.d.ts +49 -51
- package/dist/tools/getExecutionHistory.d.ts.map +1 -1
- package/dist/tools/getExecutionHistory.js +154 -93
- package/dist/tools/getExecutionHistory.js.map +1 -1
- package/dist/tools/getGasPrice.d.ts +43 -43
- package/dist/tools/getGasPrice.js +59 -59
- package/dist/tools/getPoolInfo.d.ts +75 -75
- package/dist/tools/getPoolInfo.js +137 -137
- package/dist/tools/getTokenPrice.d.ts +113 -113
- package/dist/tools/getTokenPrice.js +117 -117
- package/dist/tools/getTransactionStatus.d.ts +43 -57
- package/dist/tools/getTransactionStatus.d.ts.map +1 -1
- package/dist/tools/getTransactionStatus.js +59 -67
- package/dist/tools/getTransactionStatus.js.map +1 -1
- package/dist/tools/getWalletBalance.d.ts +68 -68
- package/dist/tools/getWalletBalance.js +87 -87
- package/dist/tools/publishRiskScore.d.ts +63 -63
- package/dist/tools/publishRiskScore.d.ts.map +1 -1
- package/dist/tools/publishRiskScore.js +88 -85
- package/dist/tools/publishRiskScore.js.map +1 -1
- package/dist/tools/queryRiskRegistry.d.ts +38 -48
- package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
- package/dist/tools/queryRiskRegistry.js +55 -60
- package/dist/tools/queryRiskRegistry.js.map +1 -1
- package/dist/tools/safehandsPreflightCheck.d.ts +77 -77
- package/dist/tools/safehandsPreflightCheck.js +47 -47
- package/dist/tools/safehandsRiskReport.d.ts +81 -81
- package/dist/tools/safehandsRiskReport.js +28 -28
- package/dist/tools/safehandsSafeExecute.d.ts +20 -20
- package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
- package/dist/tools/safehandsSafeExecute.js +81 -75
- package/dist/tools/safehandsSafeExecute.js.map +1 -1
- package/dist/tools/safehandsWalletHealth.d.ts +14 -14
- package/dist/tools/safehandsWalletHealth.js +103 -103
- package/dist/tools/safehandsX402Preflight.d.ts +26 -26
- package/dist/tools/safehandsX402Preflight.js +65 -65
- package/dist/tools/sendPayment.d.ts +57 -58
- package/dist/tools/sendPayment.d.ts.map +1 -1
- package/dist/tools/sendPayment.js +117 -108
- package/dist/tools/sendPayment.js.map +1 -1
- package/dist/tools/simulateTransaction.d.ts +60 -81
- package/dist/tools/simulateTransaction.d.ts.map +1 -1
- package/dist/tools/simulateTransaction.js +83 -88
- package/dist/tools/simulateTransaction.js.map +1 -1
- package/dist/tools/tokenRegistryStatus.d.ts +26 -26
- package/dist/tools/tokenRegistryStatus.js +96 -96
- package/dist/tools/x402PayAndFetch.d.ts +81 -81
- package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
- package/dist/tools/x402PayAndFetch.js +152 -149
- package/dist/tools/x402PayAndFetch.js.map +1 -1
- package/dist/x402Server.d.ts +1 -1
- package/dist/x402Server.js +252 -252
- package/examples/dashboard/index.html +337 -0
- package/package.json +83 -84
- package/.agents/skill/safehands/SKILL.md +0 -212
- package/.agents/skill/safehands/assets/networks.json +0 -24
- package/.agents/skill/safehands/assets/tokens.json +0 -66
- package/.agents/wallets.json +0 -20
- package/docs/reports/OFFICIAL_DOCS_ALIGNMENT_REPORT.md +0 -137
- package/docs/reports/final_audit_report.md +0 -307
- package/docs/reports/live_verification_report.md +0 -147
- package/docs/reports/pharos_skill_engine_alignment_report.md +0 -85
package/dist/index.js
CHANGED
|
@@ -32,9 +32,41 @@ import { tokenRegistryStatusSchema, handleTokenRegistryStatus } from "./tools/to
|
|
|
32
32
|
import { getAgentWalletSchema, handleGetAgentWallet } from "./tools/getAgentWallet.js";
|
|
33
33
|
import { getAgentWalletBalanceSchema, handleGetAgentWalletBalance } from "./tools/getAgentWalletBalance.js";
|
|
34
34
|
import { fail, ok } from "./lib/toolResponse.js";
|
|
35
|
+
import { auditLog } from "./lib/auditLog.js";
|
|
35
36
|
import { runSkillCli } from "./cli.js";
|
|
36
37
|
import { runDemo } from "./demo.js";
|
|
37
38
|
import { runInit } from "./init.js";
|
|
39
|
+
// āāā Per-tool rate limiting āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
40
|
+
// Heavy tools (block-scan history) get a tighter limit.
|
|
41
|
+
// Write tools get a moderate limit to prevent agent loops.
|
|
42
|
+
// All other tools share a generous global limit.
|
|
43
|
+
const HEAVY_TOOLS = new Set(["get_execution_history"]);
|
|
44
|
+
const WRITE_TOOLS = new Set([
|
|
45
|
+
"execute_swap", "send_payment", "approve_token",
|
|
46
|
+
"publish_risk_score", "x402_pay_and_fetch", "safehands_safe_execute",
|
|
47
|
+
]);
|
|
48
|
+
const RATE_LIMITS = {
|
|
49
|
+
heavy: parseInt(process.env.MCP_RATE_LIMIT_HEAVY || "5", 10),
|
|
50
|
+
write: parseInt(process.env.MCP_RATE_LIMIT_WRITE || "15", 10),
|
|
51
|
+
default: parseInt(process.env.MCP_RATE_LIMIT_DEFAULT || "120", 10),
|
|
52
|
+
};
|
|
53
|
+
const rateBuckets = new Map();
|
|
54
|
+
function checkMcpRateLimit(tool) {
|
|
55
|
+
const limit = HEAVY_TOOLS.has(tool) ? RATE_LIMITS.heavy
|
|
56
|
+
: WRITE_TOOLS.has(tool) ? RATE_LIMITS.write
|
|
57
|
+
: RATE_LIMITS.default;
|
|
58
|
+
const now = Date.now();
|
|
59
|
+
let bucket = rateBuckets.get(tool);
|
|
60
|
+
if (!bucket || bucket.resetAt <= now) {
|
|
61
|
+
bucket = { count: 0, resetAt: now + 60_000 };
|
|
62
|
+
}
|
|
63
|
+
bucket.count++;
|
|
64
|
+
rateBuckets.set(tool, bucket);
|
|
65
|
+
if (bucket.count > limit) {
|
|
66
|
+
return `Rate limit exceeded for ${tool} (${limit}/min). Slow down and retry after ${Math.ceil((bucket.resetAt - now) / 1000)}s.`;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
38
70
|
function isStructuredResponse(value) {
|
|
39
71
|
return (!!value &&
|
|
40
72
|
typeof value === "object" &&
|
|
@@ -43,16 +75,37 @@ function isStructuredResponse(value) {
|
|
|
43
75
|
"error" in value);
|
|
44
76
|
}
|
|
45
77
|
async function invokeTool(handler, params, source) {
|
|
78
|
+
const rateLimitMsg = checkMcpRateLimit(source);
|
|
79
|
+
if (rateLimitMsg) {
|
|
80
|
+
auditLog({ ts: new Date().toISOString(), tool: source, success: false, errorCode: "RATE_LIMITED" });
|
|
81
|
+
return fail("RATE_LIMITED", rateLimitMsg, true, source);
|
|
82
|
+
}
|
|
83
|
+
const start = Date.now();
|
|
46
84
|
try {
|
|
47
85
|
const result = await handler(params);
|
|
48
|
-
if (isStructuredResponse(result))
|
|
86
|
+
if (isStructuredResponse(result)) {
|
|
87
|
+
const r = result;
|
|
88
|
+
auditLog({ ts: new Date().toISOString(), tool: source, success: r.success, errorCode: r.success ? undefined : r.error?.code, durationMs: Date.now() - start });
|
|
49
89
|
return result;
|
|
50
|
-
if (result && typeof result === "object" && "error" in result && !("success" in result)) {
|
|
51
|
-
return fail("TOOL_RETURNED_ERROR", String(result.error), false, source);
|
|
52
90
|
}
|
|
91
|
+
if (result && typeof result === "object") {
|
|
92
|
+
if ("error" in result && !("success" in result)) {
|
|
93
|
+
const msg = String(result.error);
|
|
94
|
+
auditLog({ ts: new Date().toISOString(), tool: source, success: false, errorCode: "TOOL_RETURNED_ERROR", durationMs: Date.now() - start });
|
|
95
|
+
return fail("TOOL_RETURNED_ERROR", msg, false, source);
|
|
96
|
+
}
|
|
97
|
+
// Defense-in-depth: non-ToolResponse shapes with success:false must not surface as ok()
|
|
98
|
+
if ("success" in result && result.success === false) {
|
|
99
|
+
const msg = "error" in result ? String(result.error) : "Tool returned failure without ToolResponse shape";
|
|
100
|
+
auditLog({ ts: new Date().toISOString(), tool: source, success: false, errorCode: "TOOL_RETURNED_ERROR", durationMs: Date.now() - start });
|
|
101
|
+
return fail("TOOL_RETURNED_ERROR", msg, false, source);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
auditLog({ ts: new Date().toISOString(), tool: source, success: true, durationMs: Date.now() - start });
|
|
53
105
|
return ok(result);
|
|
54
106
|
}
|
|
55
107
|
catch (err) {
|
|
108
|
+
auditLog({ ts: new Date().toISOString(), tool: source, success: false, errorCode: "TOOL_EXECUTION_FAILED", durationMs: Date.now() - start });
|
|
56
109
|
return fail("TOOL_EXECUTION_FAILED", err instanceof Error ? err.message : String(err), false, source);
|
|
57
110
|
}
|
|
58
111
|
}
|
|
@@ -85,86 +138,86 @@ if (process.argv.includes("--demo")) {
|
|
|
85
138
|
}
|
|
86
139
|
// āāā CLI Help āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
87
140
|
if (process.argv.includes("--help") || process.argv.includes("-h")) {
|
|
88
|
-
process.stdout.write(`
|
|
89
|
-
š”ļø SafeHands-Pharos ā Transaction Safety Firewall for AI Agents
|
|
90
|
-
v1.
|
|
91
|
-
|
|
92
|
-
USAGE
|
|
93
|
-
npx safehands-pharos
|
|
94
|
-
Start SafeHands as an MCP server over stdio.
|
|
95
|
-
|
|
96
|
-
npx safehands-pharos --help
|
|
97
|
-
Show this help.
|
|
98
|
-
|
|
99
|
-
npx safehands-pharos init
|
|
100
|
-
Launch the interactive setup wizard to configure your .env file safely.
|
|
101
|
-
|
|
102
|
-
npx safehands-pharos --demo
|
|
103
|
-
Run the deterministic non-destructive hackathon demo.
|
|
104
|
-
|
|
105
|
-
npx safehands-pharos skill <tool_name> --input-json '<json>'
|
|
106
|
-
Run a Pharos Skill Engine-compatible SafeHands CLI tool.
|
|
107
|
-
|
|
108
|
-
POSITIONING
|
|
109
|
-
SafeHands is a guardrail layer, not a generic Web3 toolbox.
|
|
110
|
-
It checks whether an AI agent action is safe before execution.
|
|
111
|
-
|
|
112
|
-
User intent
|
|
113
|
-
ā SafeHands preflight
|
|
114
|
-
ā ALLOW / WARN / BLOCK / REQUIRE_CONFIRMATION
|
|
115
|
-
ā Pharos Skill Engine or MCP execution only if safe
|
|
116
|
-
ā SafeHands risk report
|
|
117
|
-
|
|
118
|
-
SAFEHANDS BRANDED TOOLS
|
|
119
|
-
safehands_preflight_check Policy preflight for payments, approvals, swaps, x402, and custom calls
|
|
120
|
-
safehands_safe_execute Guarded wrapper that preflights before execution
|
|
121
|
-
safehands_wallet_health Wallet/signer/gas/x402 readiness report
|
|
122
|
-
safehands_x402_preflight URL, payment, token, and signer safety check before x402 payment
|
|
123
|
-
safehands_risk_report Human-readable judge/demo risk report
|
|
124
|
-
explain_risk Explain ALLOW/WARN/BLOCK decisions in plain English
|
|
125
|
-
token_registry_status Classify canonical, test, custom, unknown, or invalid token address
|
|
126
|
-
|
|
127
|
-
OTHER MCP TOOLS
|
|
128
|
-
Core safety: assess_risk, check_token_security, simulate_transaction, estimate_gas
|
|
129
|
-
Execution: execute_swap, send_payment, approve_token
|
|
130
|
-
Market: get_token_price, get_pool_info, get_gas_price
|
|
131
|
-
Wallet/history: get_wallet_balance, check_allowance, get_transaction_status, get_execution_history
|
|
132
|
-
Risk registry: publish_risk_score, query_risk_registry
|
|
133
|
-
x402: x402_pay_and_fetch
|
|
134
|
-
Managed testnet wallet: create_agent_wallet, get_agent_wallet, get_agent_wallet_balance
|
|
135
|
-
|
|
136
|
-
PHAROS ATLANTIC TESTNET
|
|
137
|
-
Environment: atlantic-testnet
|
|
138
|
-
Chain ID: 688689
|
|
139
|
-
RPC: https://atlantic.dplabs-internal.com
|
|
140
|
-
Explorer: https://atlantic.pharosscan.xyz/
|
|
141
|
-
RiskRegistry: 0x61962a6c812ee9f57b207e1ea47c19ae70bb7141
|
|
142
|
-
|
|
143
|
-
x402 BEHAVIOR
|
|
144
|
-
Free endpoints, such as /supported and /health, do not require a private key.
|
|
145
|
-
Paid endpoints are fetched normally first. Only after HTTP 402 does SafeHands run x402 preflight and request a signer.
|
|
146
|
-
Signed payment payloads and payment headers are not logged or returned.
|
|
147
|
-
|
|
148
|
-
DEFAULT SAFETY
|
|
149
|
-
WALLET_MODE=none
|
|
150
|
-
WRITE_TOOLS_ENABLED=false
|
|
151
|
-
ALLOW_UNLIMITED_APPROVAL=false
|
|
152
|
-
ALLOW_LOCAL_X402_FETCH=false
|
|
153
|
-
|
|
154
|
-
No wallet is created on install, import, or startup.
|
|
155
|
-
Write tools are disabled by default.
|
|
156
|
-
Unlimited approvals are blocked by default.
|
|
157
|
-
Mainnet actions are blocked.
|
|
158
|
-
SSRF-sensitive x402 URLs are blocked by default.
|
|
159
|
-
|
|
160
|
-
EXAMPLES
|
|
161
|
-
npx safehands-pharos skill safehands_preflight_check --input-json '{"actionType":"send_payment","chainId":688689,"isMainnet":false,"amount":"0.001","recipient":"0x0000000000000000000000000000000000000001"}'
|
|
162
|
-
|
|
163
|
-
npx safehands-pharos skill token_registry_status --input-json '{"tokenAddress":"0xE0BE08c77f415F577A1B3A9aD7a1Df1479564ec8"}'
|
|
164
|
-
|
|
165
|
-
DOCS
|
|
166
|
-
README.md
|
|
167
|
-
skill/SKILL.md
|
|
141
|
+
process.stdout.write(`
|
|
142
|
+
š”ļø SafeHands-Pharos ā Transaction Safety Firewall for AI Agents
|
|
143
|
+
v1.3.0 | Pharos Atlantic Testnet | Chain ID 688689
|
|
144
|
+
|
|
145
|
+
USAGE
|
|
146
|
+
npx safehands-pharos
|
|
147
|
+
Start SafeHands as an MCP server over stdio.
|
|
148
|
+
|
|
149
|
+
npx safehands-pharos --help
|
|
150
|
+
Show this help.
|
|
151
|
+
|
|
152
|
+
npx safehands-pharos init
|
|
153
|
+
Launch the interactive setup wizard to configure your .env file safely.
|
|
154
|
+
|
|
155
|
+
npx safehands-pharos --demo
|
|
156
|
+
Run the deterministic non-destructive hackathon demo.
|
|
157
|
+
|
|
158
|
+
npx safehands-pharos skill <tool_name> --input-json '<json>'
|
|
159
|
+
Run a Pharos Skill Engine-compatible SafeHands CLI tool.
|
|
160
|
+
|
|
161
|
+
POSITIONING
|
|
162
|
+
SafeHands is a guardrail layer, not a generic Web3 toolbox.
|
|
163
|
+
It checks whether an AI agent action is safe before execution.
|
|
164
|
+
|
|
165
|
+
User intent
|
|
166
|
+
ā SafeHands preflight
|
|
167
|
+
ā ALLOW / WARN / BLOCK / REQUIRE_CONFIRMATION
|
|
168
|
+
ā Pharos Skill Engine or MCP execution only if safe
|
|
169
|
+
ā SafeHands risk report
|
|
170
|
+
|
|
171
|
+
SAFEHANDS BRANDED TOOLS
|
|
172
|
+
safehands_preflight_check Policy preflight for payments, approvals, swaps, x402, and custom calls
|
|
173
|
+
safehands_safe_execute Guarded wrapper that preflights before execution
|
|
174
|
+
safehands_wallet_health Wallet/signer/gas/x402 readiness report
|
|
175
|
+
safehands_x402_preflight URL, payment, token, and signer safety check before x402 payment
|
|
176
|
+
safehands_risk_report Human-readable judge/demo risk report
|
|
177
|
+
explain_risk Explain ALLOW/WARN/BLOCK decisions in plain English
|
|
178
|
+
token_registry_status Classify canonical, test, custom, unknown, or invalid token address
|
|
179
|
+
|
|
180
|
+
OTHER MCP TOOLS
|
|
181
|
+
Core safety: assess_risk, check_token_security, simulate_transaction, estimate_gas
|
|
182
|
+
Execution: execute_swap, send_payment, approve_token
|
|
183
|
+
Market: get_token_price, get_pool_info, get_gas_price
|
|
184
|
+
Wallet/history: get_wallet_balance, check_allowance, get_transaction_status, get_execution_history
|
|
185
|
+
Risk registry: publish_risk_score, query_risk_registry
|
|
186
|
+
x402: x402_pay_and_fetch
|
|
187
|
+
Managed testnet wallet: create_agent_wallet, get_agent_wallet, get_agent_wallet_balance
|
|
188
|
+
|
|
189
|
+
PHAROS ATLANTIC TESTNET
|
|
190
|
+
Environment: atlantic-testnet
|
|
191
|
+
Chain ID: 688689
|
|
192
|
+
RPC: https://atlantic.dplabs-internal.com
|
|
193
|
+
Explorer: https://atlantic.pharosscan.xyz/
|
|
194
|
+
RiskRegistry: 0x61962a6c812ee9f57b207e1ea47c19ae70bb7141
|
|
195
|
+
|
|
196
|
+
x402 BEHAVIOR
|
|
197
|
+
Free endpoints, such as /supported and /health, do not require a private key.
|
|
198
|
+
Paid endpoints are fetched normally first. Only after HTTP 402 does SafeHands run x402 preflight and request a signer.
|
|
199
|
+
Signed payment payloads and payment headers are not logged or returned.
|
|
200
|
+
|
|
201
|
+
DEFAULT SAFETY
|
|
202
|
+
WALLET_MODE=none
|
|
203
|
+
WRITE_TOOLS_ENABLED=false
|
|
204
|
+
ALLOW_UNLIMITED_APPROVAL=false
|
|
205
|
+
ALLOW_LOCAL_X402_FETCH=false
|
|
206
|
+
|
|
207
|
+
No wallet is created on install, import, or startup.
|
|
208
|
+
Write tools are disabled by default.
|
|
209
|
+
Unlimited approvals are blocked by default.
|
|
210
|
+
Mainnet actions are blocked.
|
|
211
|
+
SSRF-sensitive x402 URLs are blocked by default.
|
|
212
|
+
|
|
213
|
+
EXAMPLES
|
|
214
|
+
npx safehands-pharos skill safehands_preflight_check --input-json '{"actionType":"send_payment","chainId":688689,"isMainnet":false,"amount":"0.001","recipient":"0x0000000000000000000000000000000000000001"}'
|
|
215
|
+
|
|
216
|
+
npx safehands-pharos skill token_registry_status --input-json '{"tokenAddress":"0xE0BE08c77f415F577A1B3A9aD7a1Df1479564ec8"}'
|
|
217
|
+
|
|
218
|
+
DOCS
|
|
219
|
+
README.md
|
|
220
|
+
skill/SKILL.md
|
|
168
221
|
`);
|
|
169
222
|
process.exit(0);
|
|
170
223
|
}
|
|
@@ -186,7 +239,7 @@ else if (!hasExplicitSignerMode) {
|
|
|
186
239
|
// āāā Server Setup āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
187
240
|
const server = new McpServer({
|
|
188
241
|
name: "safehands",
|
|
189
|
-
version: "1.
|
|
242
|
+
version: "1.3.0",
|
|
190
243
|
});
|
|
191
244
|
// āāā Tool Registration āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
192
245
|
server.tool("safehands_preflight_check", "Run a SafeHands policy preflight before an AI agent sends payment, approves tokens, swaps, publishes risk data, or pays x402.", safehandsPreflightCheckSchema.shape, async (params) => mcpText(await invokeTool(handleSafeHandsPreflightCheck, params, "safehands_preflight_check")));
|
|
@@ -221,7 +274,7 @@ server.tool("get_agent_wallet_balance", "Get PHRS, USDC, and USDT balances for a
|
|
|
221
274
|
async function main() {
|
|
222
275
|
const transport = new StdioServerTransport();
|
|
223
276
|
await server.connect(transport);
|
|
224
|
-
console.error("SafeHands-Pharos MCP Server v1.
|
|
277
|
+
console.error("SafeHands-Pharos MCP Server v1.3.0 running on stdio");
|
|
225
278
|
}
|
|
226
279
|
main().catch((error) => {
|
|
227
280
|
console.error("Fatal error:", error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function runInit(): Promise<void>;
|
|
1
|
+
export declare function runInit(): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=init.d.ts.map
|
package/dist/init.js
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import * as readline from "readline/promises";
|
|
2
|
-
import { writeFileSync, existsSync, readFileSync } from "fs";
|
|
3
|
-
import { resolve } from "path";
|
|
4
|
-
export async function runInit() {
|
|
5
|
-
console.log("\nš”ļø Welcome to SafeHands-Pharos Setup Wizard\n");
|
|
6
|
-
const rl = readline.createInterface({
|
|
7
|
-
input: process.stdin,
|
|
8
|
-
output: process.stdout
|
|
9
|
-
});
|
|
10
|
-
const envPath = resolve(process.cwd(), ".env");
|
|
11
|
-
let existingEnv = "";
|
|
12
|
-
if (existsSync(envPath)) {
|
|
13
|
-
existingEnv = readFileSync(envPath, "utf-8");
|
|
14
|
-
}
|
|
15
|
-
const ansWrite = await rl.question("1. Do you want your AI Agent to execute write operations (Swap, Transfer, Approve)? (y/N): ");
|
|
16
|
-
const enableWrite = ansWrite.trim().toLowerCase() === "y";
|
|
17
|
-
let pk = "";
|
|
18
|
-
if (enableWrite) {
|
|
19
|
-
pk = await rl.question("2. Enter your Pharos Testnet Private Key (leave blank to auto-generate a managed agent wallet instead): ");
|
|
20
|
-
}
|
|
21
|
-
const ansBackup = await rl.question("3. Do you want to enable persistent local backups for auto-generated agent wallets? (y/N): ");
|
|
22
|
-
const enableBackup = ansBackup.trim().toLowerCase() === "y";
|
|
23
|
-
const dodoKey = await rl.question("4. (Optional) Enter your DODO API Key for live testnet routing (press Enter to skip): ");
|
|
24
|
-
rl.close();
|
|
25
|
-
// Build .env content
|
|
26
|
-
let newEnv = "";
|
|
27
|
-
newEnv += `WRITE_TOOLS_ENABLED=${enableWrite ? "true" : "false"}\n`;
|
|
28
|
-
if (pk.trim()) {
|
|
29
|
-
newEnv += `WALLET_MODE=env\n`;
|
|
30
|
-
newEnv += `PRIVATE_KEY=${pk.trim()}\n`;
|
|
31
|
-
}
|
|
32
|
-
else if (enableWrite) {
|
|
33
|
-
newEnv += `WALLET_MODE=managed-testnet\n`;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
newEnv += `WALLET_MODE=none\n`;
|
|
37
|
-
}
|
|
38
|
-
if (enableBackup) {
|
|
39
|
-
newEnv += `WALLET_STORE_PATH=./.agents/wallets.json\n`;
|
|
40
|
-
}
|
|
41
|
-
if (dodoKey.trim()) {
|
|
42
|
-
newEnv += `DODO_API_KEY=${dodoKey.trim()}\n`;
|
|
43
|
-
}
|
|
44
|
-
// Preserve existing lines if they don't conflict (basic merge)
|
|
45
|
-
const finalEnvLines = [];
|
|
46
|
-
const generatedKeys = ["WRITE_TOOLS_ENABLED", "WALLET_MODE", "PRIVATE_KEY", "WALLET_STORE_PATH", "DODO_API_KEY"];
|
|
47
|
-
if (existingEnv) {
|
|
48
|
-
const lines = existingEnv.split("\n");
|
|
49
|
-
for (const line of lines) {
|
|
50
|
-
const key = line.split("=")[0];
|
|
51
|
-
if (key && !generatedKeys.includes(key)) {
|
|
52
|
-
finalEnvLines.push(line);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const finalContent = finalEnvLines.join("\n") + "\n" + newEnv;
|
|
57
|
-
writeFileSync(envPath, finalContent.trim() + "\n");
|
|
58
|
-
console.log("\nā
Configuration saved to .env!");
|
|
59
|
-
if (!pk.trim() && enableWrite) {
|
|
60
|
-
console.log(" Since you enabled write tools without providing a Private Key,");
|
|
61
|
-
console.log(" SafeHands will use 'managed-testnet' mode.");
|
|
62
|
-
console.log(" Run 'npx safehands-pharos skill create_agent_wallet --input-json \"{}\"' to generate one.");
|
|
63
|
-
}
|
|
64
|
-
console.log("š SafeHands is ready to protect your AI Agent!\n");
|
|
65
|
-
}
|
|
1
|
+
import * as readline from "readline/promises";
|
|
2
|
+
import { writeFileSync, existsSync, readFileSync } from "fs";
|
|
3
|
+
import { resolve } from "path";
|
|
4
|
+
export async function runInit() {
|
|
5
|
+
console.log("\nš”ļø Welcome to SafeHands-Pharos Setup Wizard\n");
|
|
6
|
+
const rl = readline.createInterface({
|
|
7
|
+
input: process.stdin,
|
|
8
|
+
output: process.stdout
|
|
9
|
+
});
|
|
10
|
+
const envPath = resolve(process.cwd(), ".env");
|
|
11
|
+
let existingEnv = "";
|
|
12
|
+
if (existsSync(envPath)) {
|
|
13
|
+
existingEnv = readFileSync(envPath, "utf-8");
|
|
14
|
+
}
|
|
15
|
+
const ansWrite = await rl.question("1. Do you want your AI Agent to execute write operations (Swap, Transfer, Approve)? (y/N): ");
|
|
16
|
+
const enableWrite = ansWrite.trim().toLowerCase() === "y";
|
|
17
|
+
let pk = "";
|
|
18
|
+
if (enableWrite) {
|
|
19
|
+
pk = await rl.question("2. Enter your Pharos Testnet Private Key (leave blank to auto-generate a managed agent wallet instead): ");
|
|
20
|
+
}
|
|
21
|
+
const ansBackup = await rl.question("3. Do you want to enable persistent local backups for auto-generated agent wallets? (y/N): ");
|
|
22
|
+
const enableBackup = ansBackup.trim().toLowerCase() === "y";
|
|
23
|
+
const dodoKey = await rl.question("4. (Optional) Enter your DODO API Key for live testnet routing (press Enter to skip): ");
|
|
24
|
+
rl.close();
|
|
25
|
+
// Build .env content
|
|
26
|
+
let newEnv = "";
|
|
27
|
+
newEnv += `WRITE_TOOLS_ENABLED=${enableWrite ? "true" : "false"}\n`;
|
|
28
|
+
if (pk.trim()) {
|
|
29
|
+
newEnv += `WALLET_MODE=env\n`;
|
|
30
|
+
newEnv += `PRIVATE_KEY=${pk.trim()}\n`;
|
|
31
|
+
}
|
|
32
|
+
else if (enableWrite) {
|
|
33
|
+
newEnv += `WALLET_MODE=managed-testnet\n`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
newEnv += `WALLET_MODE=none\n`;
|
|
37
|
+
}
|
|
38
|
+
if (enableBackup) {
|
|
39
|
+
newEnv += `WALLET_STORE_PATH=./.agents/wallets.json\n`;
|
|
40
|
+
}
|
|
41
|
+
if (dodoKey.trim()) {
|
|
42
|
+
newEnv += `DODO_API_KEY=${dodoKey.trim()}\n`;
|
|
43
|
+
}
|
|
44
|
+
// Preserve existing lines if they don't conflict (basic merge)
|
|
45
|
+
const finalEnvLines = [];
|
|
46
|
+
const generatedKeys = ["WRITE_TOOLS_ENABLED", "WALLET_MODE", "PRIVATE_KEY", "WALLET_STORE_PATH", "DODO_API_KEY"];
|
|
47
|
+
if (existingEnv) {
|
|
48
|
+
const lines = existingEnv.split("\n");
|
|
49
|
+
for (const line of lines) {
|
|
50
|
+
const key = line.split("=")[0];
|
|
51
|
+
if (key && !generatedKeys.includes(key)) {
|
|
52
|
+
finalEnvLines.push(line);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const finalContent = finalEnvLines.join("\n") + "\n" + newEnv;
|
|
57
|
+
writeFileSync(envPath, finalContent.trim() + "\n");
|
|
58
|
+
console.log("\nā
Configuration saved to .env!");
|
|
59
|
+
if (!pk.trim() && enableWrite) {
|
|
60
|
+
console.log(" Since you enabled write tools without providing a Private Key,");
|
|
61
|
+
console.log(" SafeHands will use 'managed-testnet' mode.");
|
|
62
|
+
console.log(" Run 'npx safehands-pharos skill create_agent_wallet --input-json \"{}\"' to generate one.");
|
|
63
|
+
}
|
|
64
|
+
console.log("š SafeHands is ready to protect your AI Agent!\n");
|
|
65
|
+
}
|
|
66
66
|
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditLog.d.ts","sourceRoot":"","sources":["../../src/lib/auditLog.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAWhD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// āāā Audit Log āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
2
|
+
// Append-only JSON log of every MCP tool invocation.
|
|
3
|
+
// Activated by setting AUDIT_LOG_PATH in .env.
|
|
4
|
+
// Each line is a JSON object ā parseable with `jq` or log aggregators.
|
|
5
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
6
|
+
import { appendFileSync, mkdirSync, existsSync } from "fs";
|
|
7
|
+
import { dirname } from "path";
|
|
8
|
+
const LOG_PATH = process.env.AUDIT_LOG_PATH || "";
|
|
9
|
+
function ensureDir(filePath) {
|
|
10
|
+
const dir = dirname(filePath);
|
|
11
|
+
if (dir && !existsSync(dir)) {
|
|
12
|
+
mkdirSync(dir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
let dirEnsured = false;
|
|
16
|
+
export function auditLog(entry) {
|
|
17
|
+
if (!LOG_PATH)
|
|
18
|
+
return;
|
|
19
|
+
try {
|
|
20
|
+
if (!dirEnsured) {
|
|
21
|
+
ensureDir(LOG_PATH);
|
|
22
|
+
dirEnsured = true;
|
|
23
|
+
}
|
|
24
|
+
appendFileSync(LOG_PATH, JSON.stringify(entry) + "\n", "utf-8");
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Never throw from audit log ā logging must not affect tool behavior
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=auditLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditLog.js","sourceRoot":"","sources":["../../src/lib/auditLog.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,qDAAqD;AACrD,+CAA+C;AAC/C,uEAAuE;AACvE,2EAA2E;AAE3E,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAU/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;AAElD,SAAS,SAAS,CAAC,QAAgB;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,MAAM,UAAU,QAAQ,CAAC,KAAiB;IACxC,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;AACH,CAAC"}
|