safehands-pharos 1.2.0 → 1.2.3

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.
Files changed (175) hide show
  1. package/.env.example +26 -0
  2. package/README.md +311 -350
  3. package/contracts/RiskRegistry.json +75 -1
  4. package/contracts/RiskRegistry.sol +29 -1
  5. package/dist/cli.d.ts +6 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +91 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/demo.d.ts +2 -0
  10. package/dist/demo.d.ts.map +1 -0
  11. package/dist/demo.js +172 -0
  12. package/dist/demo.js.map +1 -0
  13. package/dist/index.js +181 -169
  14. package/dist/index.js.map +1 -1
  15. package/dist/init.d.ts +2 -0
  16. package/dist/init.d.ts.map +1 -0
  17. package/dist/init.js +66 -0
  18. package/dist/init.js.map +1 -0
  19. package/dist/lib/constants.d.ts +122 -7
  20. package/dist/lib/constants.d.ts.map +1 -1
  21. package/dist/lib/constants.js +139 -13
  22. package/dist/lib/constants.js.map +1 -1
  23. package/dist/lib/dodoApi.d.ts +14 -0
  24. package/dist/lib/dodoApi.d.ts.map +1 -1
  25. package/dist/lib/dodoApi.js +78 -22
  26. package/dist/lib/dodoApi.js.map +1 -1
  27. package/dist/lib/http.d.ts +15 -0
  28. package/dist/lib/http.d.ts.map +1 -0
  29. package/dist/lib/http.js +119 -0
  30. package/dist/lib/http.js.map +1 -0
  31. package/dist/lib/pharosClient.d.ts +4 -3
  32. package/dist/lib/pharosClient.d.ts.map +1 -1
  33. package/dist/lib/pharosClient.js +8 -5
  34. package/dist/lib/pharosClient.js.map +1 -1
  35. package/dist/lib/policy/actionPolicyEngine.d.ts +54 -0
  36. package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -0
  37. package/dist/lib/policy/actionPolicyEngine.js +213 -0
  38. package/dist/lib/policy/actionPolicyEngine.js.map +1 -0
  39. package/dist/lib/signer/index.d.ts +25 -0
  40. package/dist/lib/signer/index.d.ts.map +1 -0
  41. package/dist/lib/signer/index.js +90 -0
  42. package/dist/lib/signer/index.js.map +1 -0
  43. package/dist/lib/testDodoLive.d.ts +2 -0
  44. package/dist/lib/testDodoLive.d.ts.map +1 -0
  45. package/dist/lib/testDodoLive.js +105 -0
  46. package/dist/lib/testDodoLive.js.map +1 -0
  47. package/dist/lib/testLiveSafehands.d.ts +2 -0
  48. package/dist/lib/testLiveSafehands.d.ts.map +1 -0
  49. package/dist/lib/testLiveSafehands.js +93 -0
  50. package/dist/lib/testLiveSafehands.js.map +1 -0
  51. package/dist/lib/testRpcLive.d.ts +2 -0
  52. package/dist/lib/testRpcLive.d.ts.map +1 -0
  53. package/dist/lib/testRpcLive.js +89 -0
  54. package/dist/lib/testRpcLive.js.map +1 -0
  55. package/dist/lib/testTools.js +363 -354
  56. package/dist/lib/testTools.js.map +1 -1
  57. package/dist/lib/testX402Live.d.ts +2 -0
  58. package/dist/lib/testX402Live.d.ts.map +1 -0
  59. package/dist/lib/testX402Live.js +160 -0
  60. package/dist/lib/testX402Live.js.map +1 -0
  61. package/dist/lib/toolResponse.d.ts +26 -0
  62. package/dist/lib/toolResponse.d.ts.map +1 -0
  63. package/dist/lib/toolResponse.js +54 -0
  64. package/dist/lib/toolResponse.js.map +1 -0
  65. package/dist/lib/wallet/index.d.ts +19 -0
  66. package/dist/lib/wallet/index.d.ts.map +1 -0
  67. package/dist/lib/wallet/index.js +71 -0
  68. package/dist/lib/wallet/index.js.map +1 -0
  69. package/dist/tools/approveToken.d.ts +19 -20
  70. package/dist/tools/approveToken.d.ts.map +1 -1
  71. package/dist/tools/approveToken.js +44 -21
  72. package/dist/tools/approveToken.js.map +1 -1
  73. package/dist/tools/assessRisk.d.ts +22 -9
  74. package/dist/tools/assessRisk.d.ts.map +1 -1
  75. package/dist/tools/assessRisk.js +32 -9
  76. package/dist/tools/assessRisk.js.map +1 -1
  77. package/dist/tools/checkAllowance.d.ts +6 -6
  78. package/dist/tools/checkTokenSecurity.d.ts +9 -16
  79. package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
  80. package/dist/tools/checkTokenSecurity.js +17 -22
  81. package/dist/tools/checkTokenSecurity.js.map +1 -1
  82. package/dist/tools/createAgentWallet.d.ts +27 -0
  83. package/dist/tools/createAgentWallet.d.ts.map +1 -0
  84. package/dist/tools/createAgentWallet.js +60 -0
  85. package/dist/tools/createAgentWallet.js.map +1 -0
  86. package/dist/tools/estimateGas.d.ts +31 -21
  87. package/dist/tools/estimateGas.d.ts.map +1 -1
  88. package/dist/tools/estimateGas.js +91 -95
  89. package/dist/tools/estimateGas.js.map +1 -1
  90. package/dist/tools/executeSwap.d.ts +13 -29
  91. package/dist/tools/executeSwap.d.ts.map +1 -1
  92. package/dist/tools/executeSwap.js +68 -46
  93. package/dist/tools/executeSwap.js.map +1 -1
  94. package/dist/tools/explainRisk.d.ts +30 -0
  95. package/dist/tools/explainRisk.d.ts.map +1 -0
  96. package/dist/tools/explainRisk.js +33 -0
  97. package/dist/tools/explainRisk.js.map +1 -0
  98. package/dist/tools/getAgentWallet.d.ts +22 -0
  99. package/dist/tools/getAgentWallet.d.ts.map +1 -0
  100. package/dist/tools/getAgentWallet.js +28 -0
  101. package/dist/tools/getAgentWallet.js.map +1 -0
  102. package/dist/tools/getAgentWalletBalance.d.ts +12 -0
  103. package/dist/tools/getAgentWalletBalance.d.ts.map +1 -0
  104. package/dist/tools/getAgentWalletBalance.js +71 -0
  105. package/dist/tools/getAgentWalletBalance.js.map +1 -0
  106. package/dist/tools/getExecutionHistory.d.ts +4 -4
  107. package/dist/tools/getGasPrice.d.ts +26 -8
  108. package/dist/tools/getGasPrice.d.ts.map +1 -1
  109. package/dist/tools/getGasPrice.js +43 -35
  110. package/dist/tools/getGasPrice.js.map +1 -1
  111. package/dist/tools/getPoolInfo.d.ts +47 -59
  112. package/dist/tools/getPoolInfo.d.ts.map +1 -1
  113. package/dist/tools/getPoolInfo.js +96 -57
  114. package/dist/tools/getPoolInfo.js.map +1 -1
  115. package/dist/tools/getTokenPrice.d.ts +95 -9
  116. package/dist/tools/getTokenPrice.d.ts.map +1 -1
  117. package/dist/tools/getTokenPrice.js +95 -56
  118. package/dist/tools/getTokenPrice.js.map +1 -1
  119. package/dist/tools/getWalletBalance.d.ts +40 -11
  120. package/dist/tools/getWalletBalance.d.ts.map +1 -1
  121. package/dist/tools/getWalletBalance.js +64 -47
  122. package/dist/tools/getWalletBalance.js.map +1 -1
  123. package/dist/tools/publishRiskScore.d.ts +12 -10
  124. package/dist/tools/publishRiskScore.d.ts.map +1 -1
  125. package/dist/tools/publishRiskScore.js +33 -19
  126. package/dist/tools/publishRiskScore.js.map +1 -1
  127. package/dist/tools/queryRiskRegistry.d.ts +3 -3
  128. package/dist/tools/safehandsPreflightCheck.d.ts +78 -0
  129. package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -0
  130. package/dist/tools/safehandsPreflightCheck.js +48 -0
  131. package/dist/tools/safehandsPreflightCheck.js.map +1 -0
  132. package/dist/tools/safehandsRiskReport.d.ts +82 -0
  133. package/dist/tools/safehandsRiskReport.d.ts.map +1 -0
  134. package/dist/tools/safehandsRiskReport.js +29 -0
  135. package/dist/tools/safehandsRiskReport.js.map +1 -0
  136. package/dist/tools/safehandsSafeExecute.d.ts +21 -0
  137. package/dist/tools/safehandsSafeExecute.d.ts.map +1 -0
  138. package/dist/tools/safehandsSafeExecute.js +76 -0
  139. package/dist/tools/safehandsSafeExecute.js.map +1 -0
  140. package/dist/tools/safehandsWalletHealth.d.ts +15 -0
  141. package/dist/tools/safehandsWalletHealth.d.ts.map +1 -0
  142. package/dist/tools/safehandsWalletHealth.js +104 -0
  143. package/dist/tools/safehandsWalletHealth.js.map +1 -0
  144. package/dist/tools/safehandsX402Preflight.d.ts +27 -0
  145. package/dist/tools/safehandsX402Preflight.d.ts.map +1 -0
  146. package/dist/tools/safehandsX402Preflight.js +66 -0
  147. package/dist/tools/safehandsX402Preflight.js.map +1 -0
  148. package/dist/tools/sendPayment.d.ts +13 -35
  149. package/dist/tools/sendPayment.d.ts.map +1 -1
  150. package/dist/tools/sendPayment.js +53 -47
  151. package/dist/tools/sendPayment.js.map +1 -1
  152. package/dist/tools/simulateTransaction.d.ts +4 -4
  153. package/dist/tools/tokenRegistryStatus.d.ts +27 -0
  154. package/dist/tools/tokenRegistryStatus.d.ts.map +1 -0
  155. package/dist/tools/tokenRegistryStatus.js +97 -0
  156. package/dist/tools/tokenRegistryStatus.js.map +1 -0
  157. package/dist/tools/x402PayAndFetch.d.ts +40 -16
  158. package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
  159. package/dist/tools/x402PayAndFetch.js +115 -47
  160. package/dist/tools/x402PayAndFetch.js.map +1 -1
  161. package/dist/x402Server.js +149 -115
  162. package/dist/x402Server.js.map +1 -1
  163. package/examples/pharos-skill-engine/SKILL.safehands.md +85 -0
  164. package/examples/pharos-skill-engine/assets/safehands/example-actions.json +49 -0
  165. package/examples/pharos-skill-engine/assets/safehands/policy-defaults.json +11 -0
  166. package/examples/pharos-skill-engine/references/safehands.md +345 -0
  167. package/examples/scenario-hack.ts +38 -0
  168. package/package.json +19 -5
  169. package/skill/SKILL.md +127 -0
  170. package/skill/assets/safehands/example-actions.json +49 -0
  171. package/skill/assets/safehands/policy-defaults.json +11 -0
  172. package/skill/references/safehands.md +345 -0
  173. package/.agents/skill/safehands/SKILL.md +0 -200
  174. package/.agents/skill/safehands/assets/networks.json +0 -24
  175. package/.agents/skill/safehands/assets/tokens.json +0 -60
@@ -1,49 +1,74 @@
1
1
  // ─── Tool: get_pool_info ───────────────────────────────────────────────
2
- // Fetches DODO liquidity pool data for a token pair on Pharos.
2
+ // Fetches DODO/FaroSwap route-derived liquidity info for a token pair on
3
+ // Pharos Atlantic Testnet. API key is optional: public mode is tried first
4
+ // when DODO_API_KEY is not configured.
3
5
  // ────────────────────────────────────────────────────────────────────────
4
6
  import { z } from "zod";
5
7
  import { resolveTokenAddress } from "../lib/dodoApi.js";
6
- import { DODO_API_BASE, DODO_API_KEY, CHAIN_ID } from "../lib/constants.js";
8
+ import { DODO_API_BASE, DODO_API_KEY, CHAIN_ID, PHAROS_ENVIRONMENT } from "../lib/constants.js";
9
+ import { fetchWithTimeoutAndRetry } from "../lib/http.js";
10
+ import { classifyExternalError, fail, ok } from "../lib/toolResponse.js";
7
11
  export const getPoolInfoSchema = z.object({
8
12
  tokenA: z.enum(["PHRS", "USDC", "USDT"]).describe("First token in the pair"),
9
13
  tokenB: z.enum(["PHRS", "USDC", "USDT"]).describe("Second token in the pair"),
10
14
  });
11
15
  export const getPoolInfoTool = {
12
16
  name: "get_pool_info",
13
- description: "Fetch DODO liquidity pool info for a token pair on Pharos. Returns liquidity, volume, fees, and price ratio.",
17
+ description: "Fetch DODO/FaroSwap route-derived liquidity info for a token pair on Pharos testnet. API key is optional; public mode is attempted first.",
14
18
  inputSchema: getPoolInfoSchema,
15
19
  };
20
+ function addOptionalApiKey(url) {
21
+ const key = DODO_API_KEY?.trim();
22
+ if (!key)
23
+ return false;
24
+ url.searchParams.set("apikey", key);
25
+ return true;
26
+ }
27
+ function isAuthErrorStatus(status) {
28
+ return status === 401 || status === 403;
29
+ }
16
30
  export async function handleGetPoolInfo(raw) {
17
31
  const input = getPoolInfoSchema.parse(raw);
18
32
  if (input.tokenA === input.tokenB) {
19
- return {
20
- pair: `${input.tokenA}/${input.tokenB}`,
21
- error: "Cannot query pool for identical tokens",
22
- };
33
+ return fail("INVALID_PAIR", "Cannot query pool for identical tokens.", false, "get_pool_info");
23
34
  }
24
- const addrA = resolveTokenAddress(input.tokenA);
25
- const addrB = resolveTokenAddress(input.tokenB);
26
- // Try DODO pair list endpoint
27
- const pairUrl = `${DODO_API_BASE}/route-service/v2/widget/getdodoroute` +
28
- `?chainId=${CHAIN_ID}` +
29
- `&fromTokenAddress=${addrA}` +
30
- `&toTokenAddress=${addrB}` +
31
- `&fromAmount=1000000000000000000` + // 1 token in wei (18 decimals)
32
- `&userAddr=0x0000000000000000000000000000000000000001` +
33
- `&slippage=3` +
34
- `&source=dodoV2AndMixWasm` +
35
- `&estimateGas=true` +
36
- `&apikey=${DODO_API_KEY}`;
37
35
  try {
38
- const routeResponse = await fetch(pairUrl);
36
+ const addrA = resolveTokenAddress(input.tokenA);
37
+ const addrB = resolveTokenAddress(input.tokenB);
38
+ const routeUrl = new URL(`${DODO_API_BASE}/route-service/v2/widget/getdodoroute`);
39
+ routeUrl.searchParams.set("chainId", String(CHAIN_ID));
40
+ routeUrl.searchParams.set("fromTokenAddress", addrA);
41
+ routeUrl.searchParams.set("toTokenAddress", addrB);
42
+ routeUrl.searchParams.set("fromAmount", "1000000000000000000");
43
+ routeUrl.searchParams.set("userAddr", "0x0000000000000000000000000000000000000001");
44
+ routeUrl.searchParams.set("slippage", "3");
45
+ routeUrl.searchParams.set("source", "dodoV2AndMixWasm");
46
+ routeUrl.searchParams.set("estimateGas", "true");
47
+ const routeUsedApiKey = addOptionalApiKey(routeUrl);
48
+ const routeResponse = await fetchWithTimeoutAndRetry(routeUrl, { timeoutMs: 10_000, retries: 2, retryDelayMs: 300 });
49
+ if (isAuthErrorStatus(routeResponse.status)) {
50
+ return fail("DODO_API_AUTH_REQUIRED", "DODO/FaroSwap route API rejected public mode. Configure DODO_API_KEY only if this endpoint requires authenticated access.", false, "dodo_api");
51
+ }
52
+ if (!routeResponse.ok) {
53
+ return fail("DODO_API_UNAVAILABLE", `DODO route API returned ${routeResponse.status} ${routeResponse.statusText}.`, true, "dodo_api");
54
+ }
39
55
  const routeJson = (await routeResponse.json());
40
56
  if (!routeJson.data || routeJson.status !== 200) {
41
- return {
57
+ const msg = (routeJson.message || "").toLowerCase();
58
+ if (msg.includes("api key") || msg.includes("apikey") || msg.includes("unauthorized") || msg.includes("forbidden")) {
59
+ return fail("DODO_API_AUTH_REQUIRED", "DODO/FaroSwap route API rejected public mode. Configure DODO_API_KEY only if this endpoint requires authenticated access.", false, "dodo_api");
60
+ }
61
+ return ok({
42
62
  pair: `${input.tokenA}/${input.tokenB}`,
43
63
  available: false,
44
- message: "No active DODO liquidity pool found for this pair on Pharos",
45
- timestamp: new Date().toISOString(),
46
- };
64
+ message: "No active DODO/FaroSwap route found for this pair on Pharos testnet.",
65
+ source: "DODO/FaroSwap public route API",
66
+ sourceStatus: "no_route_available",
67
+ publicMode: !routeUsedApiKey,
68
+ chainId: CHAIN_ID,
69
+ environment: PHAROS_ENVIRONMENT,
70
+ isMainnet: false,
71
+ });
47
72
  }
48
73
  const d = routeJson.data;
49
74
  const resAmount = parseFloat(String(d.resAmount || "0"));
@@ -51,49 +76,63 @@ export async function handleGetPoolInfo(raw) {
51
76
  const fee = parseFloat(String(d.baseFeeAmount || "0"));
52
77
  const pricePerFrom = parseFloat(String(d.resPricePerFromToken || "0"));
53
78
  const pricePerTo = parseFloat(String(d.resPricePerToToken || "0"));
54
- // Also try the pools endpoint for liquidity data
55
79
  let liquidityInfo = null;
80
+ let poolListStatus = "unavailable";
56
81
  try {
57
- const poolsUrl = `${DODO_API_BASE}/dodo-pair/list` +
58
- `?chainId=${CHAIN_ID}` +
59
- `&baseToken=${addrA}` +
60
- `&quoteToken=${addrB}` +
61
- `&apikey=${DODO_API_KEY}`;
62
- const poolsResp = await fetch(poolsUrl);
63
- const poolsJson = (await poolsResp.json());
64
- if (poolsJson.data?.list && poolsJson.data.list.length > 0) {
65
- const pool = poolsJson.data.list[0];
66
- liquidityInfo = {
67
- baseLiquidity: pool.baseLiquidity || "unknown",
68
- quoteLiquidity: pool.quoteLiquidity || "unknown",
69
- poolType: pool.type || "unknown",
70
- };
82
+ const poolsUrl = new URL(`${DODO_API_BASE}/dodo-pair/list`);
83
+ poolsUrl.searchParams.set("chainId", String(CHAIN_ID));
84
+ poolsUrl.searchParams.set("baseToken", addrA);
85
+ poolsUrl.searchParams.set("quoteToken", addrB);
86
+ addOptionalApiKey(poolsUrl);
87
+ const poolsResp = await fetchWithTimeoutAndRetry(poolsUrl, { timeoutMs: 10_000, retries: 1, retryDelayMs: 300 });
88
+ if (poolsResp.ok) {
89
+ const poolsJson = (await poolsResp.json());
90
+ if (poolsJson.data?.list && poolsJson.data.list.length > 0) {
91
+ const pool = poolsJson.data.list[0];
92
+ liquidityInfo = {
93
+ baseLiquidity: pool.baseLiquidity || "unknown",
94
+ quoteLiquidity: pool.quoteLiquidity || "unknown",
95
+ poolType: pool.type || "unknown",
96
+ };
97
+ poolListStatus = "ok";
98
+ }
99
+ else {
100
+ poolListStatus = "empty";
101
+ }
102
+ }
103
+ else if (isAuthErrorStatus(poolsResp.status)) {
104
+ poolListStatus = "auth_required";
71
105
  }
72
106
  }
73
107
  catch {
74
- // Pool list endpoint may not be available — non-critical
108
+ poolListStatus = "unavailable";
75
109
  }
76
- return {
110
+ return ok({
77
111
  pair: `${input.tokenA}/${input.tokenB}`,
78
112
  available: true,
79
- priceRatio: resAmount > 0 ? `1 ${input.tokenA} = ${resAmount} ${input.tokenB}` : "unavailable",
80
- priceImpact: `${priceImpact.toFixed(4)}%`,
81
- pricePerFromToken: pricePerFrom > 0 ? pricePerFrom.toFixed(6) : "unavailable",
82
- pricePerToToken: pricePerTo > 0 ? pricePerTo.toFixed(6) : "unavailable",
83
- fee: fee > 0 ? fee.toString() : "included in quote",
84
- liquidity: liquidityInfo || "Query via route API (pool list unavailable)",
85
- source: "DODO Aggregation API",
113
+ priceRatio: resAmount > 0 ? { value: resAmount.toString(), unit: input.tokenB, per: `1 ${input.tokenA}` } : null,
114
+ priceImpact: { value: priceImpact.toFixed(4), unit: "percent" },
115
+ pricePerFromToken: pricePerFrom > 0 ? { value: pricePerFrom.toFixed(6), unit: input.tokenB } : null,
116
+ pricePerToToken: pricePerTo > 0 ? { value: pricePerTo.toFixed(6), unit: input.tokenA } : null,
117
+ fee: fee > 0 ? { value: fee.toString(), unit: "raw" } : null,
118
+ liquidity: liquidityInfo,
119
+ poolListStatus,
120
+ source: "DODO/FaroSwap public route API",
121
+ sourceStatus: "ok",
122
+ publicMode: !routeUsedApiKey,
123
+ routeAvailable: true,
124
+ confidence: liquidityInfo ? "medium" : "low",
86
125
  chainId: CHAIN_ID,
87
- timestamp: new Date().toISOString(),
88
- };
126
+ environment: PHAROS_ENVIRONMENT,
127
+ isMainnet: false,
128
+ });
89
129
  }
90
130
  catch (err) {
91
- return {
92
- pair: `${input.tokenA}/${input.tokenB}`,
93
- available: false,
94
- error: `Failed to fetch pool info: ${err.message}`,
95
- timestamp: new Date().toISOString(),
96
- };
131
+ const message = err instanceof Error ? err.message : String(err);
132
+ if (message.includes("INVALID_TOKEN_ADDRESS")) {
133
+ return fail("INVALID_TOKEN_ADDRESS", message, false, "get_pool_info");
134
+ }
135
+ return classifyExternalError("dodo_api", err);
97
136
  }
98
137
  }
99
138
  //# sourceMappingURL=getPoolInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPoolInfo.js","sourceRoot":"","sources":["../../src/tools/getPoolInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPoolInfo.js","sourceRoot":"","sources":["../../src/tools/getPoolInfo.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@ import { z } from "zod";
2
2
  export declare const getTokenPriceSchema: z.ZodObject<{
3
3
  token: z.ZodEnum<["PHRS", "USDC", "USDT"]>;
4
4
  }, "strip", z.ZodTypeAny, {
5
- token: "PHRS" | "USDT" | "USDC";
5
+ token: "PHRS" | "USDC" | "USDT";
6
6
  }, {
7
- token: "PHRS" | "USDT" | "USDC";
7
+ token: "PHRS" | "USDC" | "USDT";
8
8
  }>;
9
9
  export type GetTokenPriceInput = z.input<typeof getTokenPriceSchema>;
10
10
  export declare const getTokenPriceTool: {
@@ -13,16 +13,102 @@ export declare const getTokenPriceTool: {
13
13
  inputSchema: z.ZodObject<{
14
14
  token: z.ZodEnum<["PHRS", "USDC", "USDT"]>;
15
15
  }, "strip", z.ZodTypeAny, {
16
- token: "PHRS" | "USDT" | "USDC";
16
+ token: "PHRS" | "USDC" | "USDT";
17
17
  }, {
18
- token: "PHRS" | "USDT" | "USDC";
18
+ token: "PHRS" | "USDC" | "USDT";
19
19
  }>;
20
20
  };
21
- export declare function handleGetTokenPrice(raw: GetTokenPriceInput): Promise<{
21
+ export declare function handleGetTokenPrice(raw: GetTokenPriceInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
22
22
  token: string;
23
- priceUsd: string;
24
- priceInPHRS: string;
23
+ tokenRegistry: {
24
+ readonly symbol: "USDC";
25
+ readonly address: "0xE0BE08c77f415F577A1B3A9aD7a1Df1479564ec8";
26
+ readonly decimals: 6;
27
+ readonly chainId: number;
28
+ readonly environment: string;
29
+ readonly isMainnet: false;
30
+ readonly isCanonical: true;
31
+ readonly isTestToken: true;
32
+ readonly purpose: "Pharos Skill Engine USDC — the USDC listed in the official pharos-skill-engine-0.1.0 assets/tokens.json for atlantic-testnet";
33
+ readonly docsSource: "pharos-skill-engine-0.1.0/assets/tokens.json";
34
+ readonly verificationStatus: "DOCS_VERIFIED_FROM_PHAROS_SKILL_ENGINE";
35
+ };
36
+ priceUsd: {
37
+ value: string;
38
+ unit: string;
39
+ };
40
+ priceInPHRS: {
41
+ value: string | null;
42
+ unit: string;
43
+ };
25
44
  source: string;
26
- timestamp: string;
27
- }>;
45
+ sourceStatus: "ok" | "unavailable" | "no_route_available" | "auth_required";
46
+ routeAvailable: boolean;
47
+ publicMode: boolean;
48
+ confidence: string;
49
+ chainId: number;
50
+ environment: string;
51
+ isMainnet: boolean;
52
+ }> | import("../lib/toolResponse.js").ToolSuccess<{
53
+ token: string;
54
+ tokenRegistry: {
55
+ readonly symbol: "USDT";
56
+ readonly address: "0xE7E84B8B4f39C507499c40B4ac199B050e2882d5";
57
+ readonly decimals: 6;
58
+ readonly chainId: number;
59
+ readonly environment: string;
60
+ readonly isMainnet: false;
61
+ readonly isCanonical: true;
62
+ readonly isTestToken: true;
63
+ readonly purpose: "canonical Pharos Atlantic Testnet USDT (Tether USD)";
64
+ readonly docsSource: "https://docs.pharos.xyz/getting-started/token-registry";
65
+ readonly verificationStatus: "DOCS_VERIFIED";
66
+ };
67
+ priceUsd: {
68
+ value: string;
69
+ unit: string;
70
+ };
71
+ priceInPHRS: {
72
+ value: string | null;
73
+ unit: string;
74
+ };
75
+ source: string;
76
+ sourceStatus: string;
77
+ routeAvailable: boolean;
78
+ publicMode: boolean;
79
+ confidence: string;
80
+ chainId: number;
81
+ environment: string;
82
+ isMainnet: boolean;
83
+ }> | import("../lib/toolResponse.js").ToolSuccess<{
84
+ token: string;
85
+ tokenRegistry: {
86
+ readonly symbol: "PHRS";
87
+ readonly address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
88
+ readonly decimals: 18;
89
+ readonly chainId: number;
90
+ readonly environment: string;
91
+ readonly isMainnet: false;
92
+ readonly isCanonical: true;
93
+ readonly isTestToken: true;
94
+ readonly purpose: "native PHRS sentinel address for DODO route API";
95
+ readonly docsSource: "https://docs.pharos.xyz/";
96
+ };
97
+ priceUsd: {
98
+ value: string;
99
+ unit: string;
100
+ };
101
+ priceInPHRS: {
102
+ value: string;
103
+ unit: string;
104
+ };
105
+ source: string;
106
+ sourceStatus: "ok" | "unavailable" | "no_route_available" | "auth_required";
107
+ routeAvailable: boolean;
108
+ publicMode: boolean;
109
+ confidence: string;
110
+ chainId: number;
111
+ environment: string;
112
+ isMainnet: boolean;
113
+ }>>;
28
114
  //# sourceMappingURL=getTokenPrice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenPrice.d.ts","sourceRoot":"","sources":["../../src/tools/getTokenPrice.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,iBAAiB;;;;;;;;;;CAK7B,CAAC;AAKF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,kBAAkB;;;;;;GAuEhE"}
1
+ {"version":3,"file":"getTokenPrice.d.ts","sourceRoot":"","sources":["../../src/tools/getTokenPrice.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,iBAAiB;;;;;;;;;;CAK7B,CAAC;AAKF,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+GhE"}
@@ -1,79 +1,118 @@
1
1
  // ─── Tool: get_token_price ─────────────────────────────────────────────
2
- // Fetches real-time token price from DODO API by quoting a swap against
3
- // a known stablecoin pair.
2
+ // Fetches testnet token price from DODO/FaroSwap route quotes.
4
3
  // ────────────────────────────────────────────────────────────────────────
5
4
  import { z } from "zod";
6
5
  import { getDodoRoute } from "../lib/dodoApi.js";
6
+ import { CHAIN_ID, PHAROS_ENVIRONMENT, TOKEN_REGISTRY } from "../lib/constants.js";
7
+ import { classifyExternalError, fail, ok } from "../lib/toolResponse.js";
7
8
  export const getTokenPriceSchema = z.object({
8
9
  token: z.enum(["PHRS", "USDC", "USDT"]).describe("Token to get price for"),
9
10
  });
10
11
  export const getTokenPriceTool = {
11
12
  name: "get_token_price",
12
- description: "Fetch real-time price of PHRS, USDC, or USDT on Pharos Atlantic Testnet using DODO liquidity quotes.",
13
+ description: "Fetch real-time testnet price of PHRS, USDC, or USDT on Pharos using DODO/FaroSwap liquidity quotes.",
13
14
  inputSchema: getTokenPriceSchema,
14
15
  };
15
16
  // Read-only address for price quotes (never signs transactions)
16
17
  const QUOTE_WALLET = "0x0000000000000000000000000000000000000001";
17
18
  export async function handleGetTokenPrice(raw) {
18
19
  const input = getTokenPriceSchema.parse(raw);
19
- const timestamp = new Date().toISOString();
20
- if (input.token === "USDC") {
21
- // USDC is the quote stablecoin price ~$1, get price in PHRS by quoting 1 USDC → PHRS
22
- const quote = await getDodoRoute({
23
- fromToken: "USDC",
24
- toToken: "PHRS",
25
- amountHuman: "1",
26
- walletAddress: QUOTE_WALLET,
27
- });
28
- const priceInPHRS = quote.routeAvailable ? parseFloat(quote.amountOut) : 0;
29
- return {
30
- token: "USDC",
31
- priceUsd: "1.00",
32
- priceInPHRS: priceInPHRS > 0 ? priceInPHRS.toFixed(6) : "unavailable",
33
- source: "DODO Route API (Pharos Atlantic)",
34
- timestamp,
35
- };
36
- }
37
- if (input.token === "USDT") {
38
- // USDT — quote 1 USDT → USDC to get USD price, then 1 USDT → PHRS
39
- const usdQuote = await getDodoRoute({
40
- fromToken: "USDT",
20
+ try {
21
+ if (input.token === "USDC") {
22
+ const quote = await getDodoRoute({
23
+ fromToken: "USDC",
24
+ toToken: "PHRS",
25
+ amountHuman: "1",
26
+ walletAddress: QUOTE_WALLET,
27
+ });
28
+ return ok({
29
+ token: "USDC",
30
+ tokenRegistry: TOKEN_REGISTRY.USDC,
31
+ priceUsd: { value: "1.00", unit: "USD" },
32
+ priceInPHRS: {
33
+ value: quote.routeAvailable ? parseFloat(quote.amountOut).toFixed(6) : null,
34
+ unit: "PHRS",
35
+ },
36
+ source: "DODO Route API / FaroSwap liquidity on Pharos testnet",
37
+ sourceStatus: quote.sourceStatus,
38
+ routeAvailable: quote.routeAvailable,
39
+ publicMode: !quote.usedApiKey,
40
+ confidence: quote.routeAvailable ? "medium" : "low",
41
+ chainId: CHAIN_ID,
42
+ environment: PHAROS_ENVIRONMENT,
43
+ isMainnet: false,
44
+ });
45
+ }
46
+ if (input.token === "USDT") {
47
+ const usdQuote = await getDodoRoute({
48
+ fromToken: "USDT",
49
+ toToken: "USDC",
50
+ amountHuman: "1",
51
+ walletAddress: QUOTE_WALLET,
52
+ });
53
+ const phrsQuote = await getDodoRoute({
54
+ fromToken: "USDT",
55
+ toToken: "PHRS",
56
+ amountHuman: "1",
57
+ walletAddress: QUOTE_WALLET,
58
+ });
59
+ return ok({
60
+ token: "USDT",
61
+ tokenRegistry: TOKEN_REGISTRY.USDT,
62
+ priceUsd: {
63
+ value: usdQuote.routeAvailable ? parseFloat(usdQuote.amountOut).toFixed(4) : "~1.00",
64
+ unit: "USD",
65
+ },
66
+ priceInPHRS: {
67
+ value: phrsQuote.routeAvailable ? parseFloat(phrsQuote.amountOut).toFixed(6) : null,
68
+ unit: "PHRS",
69
+ },
70
+ source: "DODO Route API / FaroSwap liquidity on Pharos testnet",
71
+ sourceStatus: usdQuote.routeAvailable && phrsQuote.routeAvailable ? "ok" : usdQuote.routeAvailable || phrsQuote.routeAvailable ? "partial" : "no_route_available",
72
+ routeAvailable: usdQuote.routeAvailable || phrsQuote.routeAvailable,
73
+ publicMode: !usdQuote.usedApiKey && !phrsQuote.usedApiKey,
74
+ confidence: usdQuote.routeAvailable && phrsQuote.routeAvailable ? "medium" : "low",
75
+ chainId: CHAIN_ID,
76
+ environment: PHAROS_ENVIRONMENT,
77
+ isMainnet: false,
78
+ });
79
+ }
80
+ const usdcQuote = await getDodoRoute({
81
+ fromToken: "PHRS",
41
82
  toToken: "USDC",
42
83
  amountHuman: "1",
43
84
  walletAddress: QUOTE_WALLET,
44
85
  });
45
- const phrsQuote = await getDodoRoute({
46
- fromToken: "USDT",
47
- toToken: "PHRS",
48
- amountHuman: "1",
49
- walletAddress: QUOTE_WALLET,
86
+ if (!usdcQuote.routeAvailable) {
87
+ return fail("NO_ROUTE_AVAILABLE", "No PHRS -> USDC route is available for price discovery.", true, "dodo_api");
88
+ }
89
+ return ok({
90
+ token: "PHRS",
91
+ tokenRegistry: TOKEN_REGISTRY.PHRS,
92
+ priceUsd: { value: parseFloat(usdcQuote.amountOut).toFixed(4), unit: "USD" },
93
+ priceInPHRS: { value: "1.000000", unit: "PHRS" },
94
+ source: "DODO Route API / FaroSwap liquidity on Pharos testnet",
95
+ sourceStatus: usdcQuote.sourceStatus,
96
+ routeAvailable: true,
97
+ publicMode: !usdcQuote.usedApiKey,
98
+ confidence: "medium",
99
+ chainId: CHAIN_ID,
100
+ environment: PHAROS_ENVIRONMENT,
101
+ isMainnet: false,
50
102
  });
51
- const priceUsd = usdQuote.routeAvailable ? parseFloat(usdQuote.amountOut).toFixed(4) : "~1.00";
52
- const priceInPHRS = phrsQuote.routeAvailable ? parseFloat(phrsQuote.amountOut).toFixed(6) : "unavailable";
53
- return {
54
- token: "USDT",
55
- priceUsd,
56
- priceInPHRS,
57
- source: "DODO Route API (Pharos Atlantic)",
58
- timestamp,
59
- };
60
103
  }
61
- // PHRS — quote 1 PHRS → USDC for USD price
62
- const usdcQuote = await getDodoRoute({
63
- fromToken: "PHRS",
64
- toToken: "USDC",
65
- amountHuman: "1",
66
- walletAddress: QUOTE_WALLET,
67
- });
68
- const priceUsd = usdcQuote.routeAvailable
69
- ? parseFloat(usdcQuote.amountOut).toFixed(4)
70
- : "unavailable";
71
- return {
72
- token: "PHRS",
73
- priceUsd,
74
- priceInPHRS: "1.000000",
75
- source: "DODO Route API (Pharos Atlantic)",
76
- timestamp,
77
- };
104
+ catch (err) {
105
+ const message = err instanceof Error ? err.message : String(err);
106
+ if (message.includes("DODO_API_AUTH_REQUIRED")) {
107
+ return fail("DODO_API_AUTH_REQUIRED", "DODO/FaroSwap route API rejected public mode. Configure DODO_API_KEY only if this endpoint requires authenticated access.", false, "dodo_api");
108
+ }
109
+ if (message.includes("DODO_API_RATE_LIMITED")) {
110
+ return fail("DODO_API_RATE_LIMITED", message, true, "dodo_api");
111
+ }
112
+ if (message.includes("INVALID_TOKEN_ADDRESS")) {
113
+ return fail("INVALID_TOKEN_ADDRESS", message, false, "dodo_api");
114
+ }
115
+ return classifyExternalError("dodo_api", err);
116
+ }
78
117
  }
79
118
  //# sourceMappingURL=getTokenPrice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenPrice.js","sourceRoot":"","sources":["../../src/tools/getTokenPrice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getTokenPrice.js","sourceRoot":"","sources":["../../src/tools/getTokenPrice.ts"],"names":[],"mappings":"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"}
@@ -18,23 +18,52 @@ export declare const getWalletBalanceTool: {
18
18
  walletAddress: string;
19
19
  }>;
20
20
  };
21
- export declare function handleGetWalletBalance(raw: GetWalletBalanceInput): Promise<{
22
- walletAddress: string;
21
+ export declare function handleGetWalletBalance(raw: GetWalletBalanceInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
22
+ walletAddress: `0x${string}`;
23
23
  balances: {
24
24
  PHRS: {
25
- balance: string;
26
- valueUsd: string;
25
+ balance: {
26
+ value: string;
27
+ unit: string;
28
+ };
29
+ valueUsd: {
30
+ value: string;
31
+ unit: string;
32
+ };
27
33
  };
28
34
  USDC: {
29
- balance: string;
30
- valueUsd: string;
35
+ balance: {
36
+ value: string;
37
+ unit: string;
38
+ };
39
+ valueUsd: {
40
+ value: string;
41
+ unit: string;
42
+ };
31
43
  };
32
44
  USDT: {
33
- balance: string;
34
- valueUsd: string;
45
+ balance: {
46
+ value: string;
47
+ unit: string;
48
+ };
49
+ valueUsd: {
50
+ value: string;
51
+ unit: string;
52
+ };
35
53
  };
36
54
  };
37
- totalUsd: string;
38
- phrsPrice: string;
39
- }>;
55
+ totalUsd: {
56
+ value: string;
57
+ unit: string;
58
+ };
59
+ phrsPrice: {
60
+ value: string;
61
+ unit: string;
62
+ } | null;
63
+ priceSourceStatus: string;
64
+ chainId: number;
65
+ environment: string;
66
+ isMainnet: boolean;
67
+ source: string;
68
+ }>>;
40
69
  //# sourceMappingURL=getWalletBalance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getWalletBalance.d.ts","sourceRoot":"","sources":["../../src/tools/getWalletBalance.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE3E,eAAO,MAAM,oBAAoB;;;;;;;;;;CAKhC,CAAC;AAIF,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;GAwDtE"}
1
+ {"version":3,"file":"getWalletBalance.d.ts","sourceRoot":"","sources":["../../src/tools/getWalletBalance.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE3E,eAAO,MAAM,oBAAoB;;;;;;;;;;CAKhC,CAAC;AAIF,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsEtE"}