safehands-pharos 1.3.0 → 1.5.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.
Files changed (118) hide show
  1. package/.env.example +64 -26
  2. package/README.md +444 -445
  3. package/dist/cli.d.ts +1 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +36 -8
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +208 -147
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/auditLog.d.ts +9 -0
  12. package/dist/lib/auditLog.d.ts.map +1 -0
  13. package/dist/lib/auditLog.js +30 -0
  14. package/dist/lib/auditLog.js.map +1 -0
  15. package/dist/lib/constants.d.ts +12 -0
  16. package/dist/lib/constants.d.ts.map +1 -1
  17. package/dist/lib/constants.js +10 -0
  18. package/dist/lib/constants.js.map +1 -1
  19. package/dist/lib/dodoApi.d.ts +8 -0
  20. package/dist/lib/dodoApi.d.ts.map +1 -1
  21. package/dist/lib/dodoApi.js +22 -4
  22. package/dist/lib/dodoApi.js.map +1 -1
  23. package/dist/lib/envLoader.d.ts +2 -0
  24. package/dist/lib/envLoader.d.ts.map +1 -0
  25. package/dist/lib/envLoader.js +44 -0
  26. package/dist/lib/envLoader.js.map +1 -0
  27. package/dist/lib/pharosClient.d.ts.map +1 -1
  28. package/dist/lib/pharosClient.js +13 -3
  29. package/dist/lib/pharosClient.js.map +1 -1
  30. package/dist/lib/riskEngine.d.ts.map +1 -1
  31. package/dist/lib/riskEngine.js +50 -45
  32. package/dist/lib/riskEngine.js.map +1 -1
  33. package/dist/lib/signer/index.d.ts.map +1 -1
  34. package/dist/lib/signer/index.js +3 -4
  35. package/dist/lib/signer/index.js.map +1 -1
  36. package/dist/lib/spendAccumulator.d.ts +10 -0
  37. package/dist/lib/spendAccumulator.d.ts.map +1 -0
  38. package/dist/lib/spendAccumulator.js +54 -0
  39. package/dist/lib/spendAccumulator.js.map +1 -0
  40. package/dist/lib/testRpc.d.ts +1 -1
  41. package/dist/lib/testRpc.js +29 -29
  42. package/dist/lib/testTools.d.ts +1 -1
  43. package/dist/lib/testTools.js +4 -5
  44. package/dist/lib/wallet/index.d.ts +19 -0
  45. package/dist/lib/wallet/index.d.ts.map +1 -1
  46. package/dist/lib/wallet/index.js +65 -7
  47. package/dist/lib/wallet/index.js.map +1 -1
  48. package/dist/tools/approveToken.d.ts +0 -1
  49. package/dist/tools/approveToken.d.ts.map +1 -1
  50. package/dist/tools/approveToken.js +3 -1
  51. package/dist/tools/approveToken.js.map +1 -1
  52. package/dist/tools/assessRisk.d.ts.map +1 -1
  53. package/dist/tools/assessRisk.js +18 -7
  54. package/dist/tools/assessRisk.js.map +1 -1
  55. package/dist/tools/checkAllowance.d.ts +9 -2
  56. package/dist/tools/checkAllowance.d.ts.map +1 -1
  57. package/dist/tools/checkAllowance.js +20 -6
  58. package/dist/tools/checkAllowance.js.map +1 -1
  59. package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
  60. package/dist/tools/checkTokenSecurity.js +7 -0
  61. package/dist/tools/checkTokenSecurity.js.map +1 -1
  62. package/dist/tools/createAgentWallet.d.ts +2 -0
  63. package/dist/tools/createAgentWallet.d.ts.map +1 -1
  64. package/dist/tools/createAgentWallet.js +30 -7
  65. package/dist/tools/createAgentWallet.js.map +1 -1
  66. package/dist/tools/executeSwap.d.ts +3 -1
  67. package/dist/tools/executeSwap.d.ts.map +1 -1
  68. package/dist/tools/executeSwap.js +13 -1
  69. package/dist/tools/executeSwap.js.map +1 -1
  70. package/dist/tools/getExecutionHistory.d.ts +15 -17
  71. package/dist/tools/getExecutionHistory.d.ts.map +1 -1
  72. package/dist/tools/getExecutionHistory.js +125 -64
  73. package/dist/tools/getExecutionHistory.js.map +1 -1
  74. package/dist/tools/getTransactionStatus.d.ts +5 -19
  75. package/dist/tools/getTransactionStatus.d.ts.map +1 -1
  76. package/dist/tools/getTransactionStatus.js +10 -18
  77. package/dist/tools/getTransactionStatus.js.map +1 -1
  78. package/dist/tools/publishRiskScore.d.ts.map +1 -1
  79. package/dist/tools/publishRiskScore.js +3 -0
  80. package/dist/tools/publishRiskScore.js.map +1 -1
  81. package/dist/tools/queryRiskRegistry.d.ts +3 -13
  82. package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
  83. package/dist/tools/queryRiskRegistry.js +6 -11
  84. package/dist/tools/queryRiskRegistry.js.map +1 -1
  85. package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
  86. package/dist/tools/safehandsSafeExecute.js +12 -6
  87. package/dist/tools/safehandsSafeExecute.js.map +1 -1
  88. package/dist/tools/sendPayment.d.ts +0 -1
  89. package/dist/tools/sendPayment.d.ts.map +1 -1
  90. package/dist/tools/sendPayment.js +10 -1
  91. package/dist/tools/sendPayment.js.map +1 -1
  92. package/dist/tools/simulateTransaction.d.ts +2 -23
  93. package/dist/tools/simulateTransaction.d.ts.map +1 -1
  94. package/dist/tools/simulateTransaction.js +10 -15
  95. package/dist/tools/simulateTransaction.js.map +1 -1
  96. package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
  97. package/dist/tools/x402PayAndFetch.js +4 -1
  98. package/dist/tools/x402PayAndFetch.js.map +1 -1
  99. package/dist/x402Server.js +51 -3
  100. package/dist/x402Server.js.map +1 -1
  101. package/package.json +73 -84
  102. package/.agents/skill/safehands/SKILL.md +0 -212
  103. package/.agents/skill/safehands/assets/networks.json +0 -24
  104. package/.agents/skill/safehands/assets/tokens.json +0 -66
  105. package/.agents/wallets.json +0 -20
  106. package/docs/reports/OFFICIAL_DOCS_ALIGNMENT_REPORT.md +0 -137
  107. package/docs/reports/final_audit_report.md +0 -307
  108. package/docs/reports/live_verification_report.md +0 -147
  109. package/docs/reports/pharos_skill_engine_alignment_report.md +0 -85
  110. package/examples/pharos-skill-engine/SKILL.safehands.md +0 -85
  111. package/examples/pharos-skill-engine/assets/safehands/example-actions.json +0 -49
  112. package/examples/pharos-skill-engine/assets/safehands/policy-defaults.json +0 -11
  113. package/examples/pharos-skill-engine/references/safehands.md +0 -345
  114. package/examples/scenario-hack.ts +0 -38
  115. package/skill/SKILL.md +0 -133
  116. package/skill/assets/safehands/example-actions.json +0 -49
  117. package/skill/assets/safehands/policy-defaults.json +0 -11
  118. package/skill/references/safehands.md +0 -345
@@ -1 +1 @@
1
- {"version":3,"file":"checkTokenSecurity.js","sourceRoot":"","sources":["../../src/tools/checkTokenSecurity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkTokenSecurity.js","sourceRoot":"","sources":["../../src/tools/checkTokenSecurity.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ interface CreateAgentWalletData {
21
21
  createdAt: string;
22
22
  warning: string;
23
23
  instructions: string;
24
+ riskRegistryAuthorized: boolean;
25
+ riskRegistryAuthTxHash: string | null;
24
26
  }
25
27
  export declare function handleCreateAgentWallet(params: CreateAgentWalletParams): Promise<ToolResponse<CreateAgentWalletData>>;
26
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"createAgentWallet.d.ts","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAIrE,eAAO,MAAM,uBAAuB;;;;;;;;;EAWlC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAsD9C"}
1
+ {"version":3,"file":"createAgentWallet.d.ts","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKrE,eAAO,MAAM,uBAAuB;;;;;;;;;EAWlC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CA6E9C"}
@@ -1,12 +1,13 @@
1
1
  // ─── create_agent_wallet ────────────────────────────────────────────────
2
2
  // Creates a new managed testnet agent wallet.
3
- // Private key is obfuscated before storage, never returned in response.
3
+ // Private key is AES-256-GCM encrypted before storage, never returned in response.
4
4
  // ────────────────────────────────────────────────────────────────────────
5
5
  import { z } from "zod";
6
6
  import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
7
7
  import { ok, fail } from "../lib/toolResponse.js";
8
- import { walletStore, obfuscateKey, usesPersistentWalletStore } from "../lib/wallet/index.js";
9
- import { CHAIN_ID, PHAROS_ENVIRONMENT, IS_MAINNET } from "../lib/constants.js";
8
+ import { walletStore, encryptKey, usesPersistentWalletStore, getEffectiveEncryptionKey } from "../lib/wallet/index.js";
9
+ import { CHAIN_ID, PHAROS_ENVIRONMENT, IS_MAINNET, RISK_REGISTRY_ADDRESS, RISK_REGISTRY_ABI } from "../lib/constants.js";
10
+ import { createPharosWalletClientFromAccount } from "../lib/pharosClient.js";
10
11
  export const createAgentWalletSchema = z.object({
11
12
  agentId: z
12
13
  .string()
@@ -32,9 +33,8 @@ export async function handleCreateAgentWallet(params) {
32
33
  // Generate new wallet
33
34
  const privateKey = generatePrivateKey();
34
35
  const account = privateKeyToAccount(privateKey);
35
- // Obfuscate key before storage
36
- const encryptionKey = process.env.WALLET_ENCRYPTION_KEY || "safehands-testnet-default-key";
37
- const encryptedKey = obfuscateKey(privateKey, encryptionKey);
36
+ // Encrypt key before storage (AES-256-GCM)
37
+ const encryptedKey = encryptKey(privateKey, getEffectiveEncryptionKey());
38
38
  // Store wallet
39
39
  await walletStore.set(agentId, {
40
40
  agentId,
@@ -45,6 +45,27 @@ export async function handleCreateAgentWallet(params) {
45
45
  isMainnet: false,
46
46
  createdAt: new Date().toISOString(),
47
47
  });
48
+ // Auto-authorize new wallet in RiskRegistry if deployer key is available
49
+ let riskRegistryAuthorized = false;
50
+ let riskRegistryAuthTxHash = null;
51
+ const deployerKey = process.env.PRIVATE_KEY;
52
+ if (deployerKey && process.env.WRITE_TOOLS_ENABLED === "true") {
53
+ try {
54
+ const deployerAccount = privateKeyToAccount(deployerKey);
55
+ const deployerWallet = createPharosWalletClientFromAccount(deployerAccount);
56
+ const txHash = await deployerWallet.writeContract({
57
+ address: RISK_REGISTRY_ADDRESS,
58
+ abi: RISK_REGISTRY_ABI,
59
+ functionName: "setAuthorizedAgent",
60
+ args: [account.address, true],
61
+ });
62
+ riskRegistryAuthorized = true;
63
+ riskRegistryAuthTxHash = txHash;
64
+ }
65
+ catch {
66
+ // Authorization failed — wallet still created, just not authorized for publish
67
+ }
68
+ }
48
69
  return ok({
49
70
  agentId,
50
71
  address: account.address,
@@ -53,8 +74,10 @@ export async function handleCreateAgentWallet(params) {
53
74
  isMainnet: IS_MAINNET,
54
75
  isTestnet: true,
55
76
  createdAt: new Date().toISOString(),
56
- warning: "This is a TESTNET wallet only. Never use for mainnet funds. Private key is stored locally and obfuscated not production-grade encryption.",
77
+ warning: "This is a TESTNET wallet only. Never use for mainnet funds. Private key is AES-256-GCM encrypted locally — testnet-grade, not KMS/Vault.",
57
78
  instructions: `Fund this wallet with testnet PHRS from https://testnet.pharosnetwork.xyz/ before executing write operations. Set WRITE_TOOLS_ENABLED=true to enable transactions.`,
79
+ riskRegistryAuthorized,
80
+ riskRegistryAuthTxHash,
58
81
  });
59
82
  }
60
83
  //# sourceMappingURL=createAgentWallet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAgentWallet.js","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,8CAA8C;AAC9C,wEAAwE;AACxE,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC,CAAC;AAgBH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEtC,iCAAiC;IACjC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CACT,uBAAuB,EACvB,yBAAyB,OAAO,6FAA6F,EAC7H,KAAK,EACL,cAAc,CACf,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtE,OAAO,IAAI,CACT,gCAAgC,EAChC,iJAAiJ,EACjJ,KAAK,EACL,cAAc,CACf,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,+BAA+B,CAAC;IAC3F,MAAM,YAAY,GAAG,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAE7D,eAAe;IACf,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;QAC7B,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY;QACZ,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;QACR,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO,EACL,6IAA6I;QAC/I,YAAY,EAAE,oKAAoK;KACnL,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"createAgentWallet.js","sourceRoot":"","sources":["../../src/tools/createAgentWallet.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,8CAA8C;AAC9C,mFAAmF;AACnF,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzH,OAAO,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC,CAAC;AAkBH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAEtC,iCAAiC;IACjC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CACT,uBAAuB,EACvB,yBAAyB,OAAO,6FAA6F,EAC7H,KAAK,EACL,cAAc,CACf,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtE,OAAO,IAAI,CACT,gCAAgC,EAChC,iJAAiJ,EACjJ,KAAK,EACL,cAAc,CACf,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhD,2CAA2C;IAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAEzE,eAAe;IACf,MAAM,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;QAC7B,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY;QACZ,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;IAEH,yEAAyE;IACzE,IAAI,sBAAsB,GAAG,KAAK,CAAC;IACnC,IAAI,sBAAsB,GAAkB,IAAI,CAAC;IAEjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5C,IAAI,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAA4B,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,mCAAmC,CAAC,eAAe,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC;gBAChD,OAAO,EAAE,qBAAqB;gBAC9B,GAAG,EAAE,iBAAiB;gBACtB,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;aAC9B,CAAC,CAAC;YACH,sBAAsB,GAAG,IAAI,CAAC;YAC9B,sBAAsB,GAAG,MAAM,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,+EAA+E;QACjF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;QACR,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO,EACL,0IAA0I;QAC5I,YAAY,EAAE,oKAAoK;QAClL,sBAAsB;QACtB,sBAAsB;KACvB,CAAC,CAAC;AACL,CAAC"}
@@ -43,10 +43,12 @@ export declare const executeSwapTool: {
43
43
  }>;
44
44
  };
45
45
  export declare function handleExecuteSwap(raw: ExecuteSwapInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
46
- txSuccess: boolean;
47
46
  txHash: `0x${string}`;
48
47
  explorerUrl: string;
49
48
  amountOut: string;
49
+ usedFromToken: string;
50
+ usedToToken: string;
51
+ wasSubstituted: boolean;
50
52
  signerMode: import("../lib/signer/index.js").SignerMode;
51
53
  walletAddress: `0x${string}`;
52
54
  gasUsed: string;
@@ -1 +1 @@
1
- {"version":3,"file":"executeSwap.d.ts","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CAI3B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB;;;;;;;;;;;;;;IA6H5D"}
1
+ {"version":3,"file":"executeSwap.d.ts","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CAI3B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB;;;;;;;;;;;;;;;;IAgJ5D"}
@@ -7,6 +7,7 @@ import { fail, ok, classifyExternalError } from "../lib/toolResponse.js";
7
7
  import { DODO_APPROVE_ADDRESS, ERC20_ABI, RISK_BLOCK_THRESHOLD, MAX_TX_AMOUNT_PHRS, CHAIN_ID, PHAROS_ENVIRONMENT } from "../lib/constants.js";
8
8
  import { getSigner, isSignerFailure } from "../lib/signer/index.js";
9
9
  import { evaluateActionPolicy } from "../lib/policy/actionPolicyEngine.js";
10
+ import { checkDailyLimit, recordSpend, estimateUsd } from "../lib/spendAccumulator.js";
10
11
  export const executeSwapSchema = z.object({
11
12
  tokenIn: z.string(),
12
13
  tokenOut: z.string(),
@@ -47,6 +48,11 @@ export async function handleExecuteSwap(raw) {
47
48
  if (Number(input.amountIn) > Number(MAX_TX_AMOUNT_PHRS) && input.tokenIn.toUpperCase() === "PHRS") {
48
49
  return fail("TX_LIMIT_EXCEEDED", `Swap amount exceeds configured testnet limit (${MAX_TX_AMOUNT_PHRS}).`, false, "execute_swap");
49
50
  }
51
+ const amountUsd = estimateUsd(input.amountIn, input.tokenIn);
52
+ const dailyCheck = checkDailyLimit(walletAddress, amountUsd);
53
+ if (!dailyCheck.allowed) {
54
+ return fail("DAILY_SPEND_LIMIT_EXCEEDED", `Daily spend limit reached. Spent $${dailyCheck.currentUsd.toFixed(2)} of $${dailyCheck.limitUsd.toFixed(2)} USD today. Remaining: $${dailyCheck.remainingUsd.toFixed(2)}. Resets at UTC midnight.`, false, "execute_swap");
55
+ }
50
56
  const risk = await assessRisk({
51
57
  action: "swap",
52
58
  tokenIn: input.tokenIn,
@@ -110,11 +116,17 @@ export async function handleExecuteSwap(raw) {
110
116
  gas: BigInt(quote.gasLimit),
111
117
  });
112
118
  const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
119
+ if (receipt.status !== "success") {
120
+ return fail("TX_REVERTED", "execute_swap transaction was mined but reverted on-chain.", false, "execute_swap");
121
+ }
122
+ recordSpend(walletAddress, amountUsd);
113
123
  return ok({
114
- txSuccess: receipt.status === "success",
115
124
  txHash,
116
125
  explorerUrl: getExplorerUrl(txHash),
117
126
  amountOut: quote.amountOut,
127
+ usedFromToken: quote.usedFromToken,
128
+ usedToToken: quote.usedToToken,
129
+ wasSubstituted: quote.wasSubstituted,
118
130
  signerMode: signer.mode,
119
131
  walletAddress,
120
132
  gasUsed: receipt.gasUsed.toString(),
@@ -1 +1 @@
1
- {"version":3,"file":"executeSwap.js","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,mCAAmC,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,EAAE,EAA4B,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9I,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;CAC3G,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,qGAAqG;IAClH,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAqB;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO,IAAI,CACT,sBAAsB,EACtB,uGAAuG,EACvG,KAAK,EACL,cAAc,CACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IAErC,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE,KAAK,CAAC,QAAQ;QACtB,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,mCAAmC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACxH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QAClG,OAAO,IAAI,CAAC,mBAAmB,EAAE,iDAAiD,kBAAkB,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACnI,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC;QAC5B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,QAAQ;QACtB,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,SAAS,GAAG,oBAAoB,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,IAAI,CAAC,SAAS,SAAS,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9H,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;YAC/B,SAAS,EAAE,KAAK,CAAC,OAAO;YACxB,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,WAAW,EAAE,KAAK,CAAC,QAAQ;YAC3B,aAAa;YACb,QAAQ,EAAE,KAAK,CAAC,iBAAiB;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,MAAM,GAAG,mCAAmC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAE1D,MAAM,SAAS,GAAG,CAAC,MAAM,YAAY,CAAC,YAAY,CAAC;gBACjD,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,SAAS;gBACd,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC;aAC5C,CAAC,CAAW,CAAC;YAEd,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;gBAC1B,MAAM,cAAc,GAAG,oBAAoB,CAAC;oBAC1C,UAAU,EAAE,eAAe;oBAC3B,cAAc,EAAE,KAAK,CAAC,QAAQ;oBAC9B,OAAO,EAAE,oBAAoB;oBAC7B,eAAe,EAAE,IAAI;oBACrB,OAAO,EAAE,QAAQ;oBACjB,WAAW,EAAE,kBAAkB;oBAC/B,SAAS,EAAE,KAAK;oBAChB,eAAe,EAAE,IAAI;oBACrB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;gBACH,IAAI,cAAc,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACxC,OAAO,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;gBACrH,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;oBAC7C,OAAO,EAAE,SAAS;oBAClB,GAAG,EAAE,SAAS;oBACd,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,CAAC,oBAAoB,EAAE,SAAS,CAAC;iBACxC,CAAC,CAAC;gBACH,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YAC1C,EAAE,EAAE,KAAK,CAAC,EAAmB;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,EAAE,KAAK,CAAC,QAAyB;YACrC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC5B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/E,OAAO,EAAE,CAAC;YACR,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS;YACvC,MAAM;YACN,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,aAAa;YACb,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;YACnC,MAAM;YACN,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;YAChE,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,qBAAqB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"executeSwap.js","sourceRoot":"","sources":["../../src/tools/executeSwap.ts"],"names":[],"mappings":"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"}
@@ -30,23 +30,21 @@ export declare const getExecutionHistoryTool: {
30
30
  limit?: number | undefined;
31
31
  }>;
32
32
  };
33
- export declare function handleGetExecutionHistory(input: GetExecutionHistoryInput): Promise<{
33
+ interface HistoryEntry {
34
+ txHash: string;
35
+ explorerUrl: string;
36
+ type: "swap" | "transfer" | "other";
37
+ timestamp: string;
38
+ status: "success" | "failed" | "unknown";
39
+ value: string;
40
+ details: string;
41
+ blockNumber: string;
42
+ }
43
+ export declare function handleGetExecutionHistory(input: GetExecutionHistoryInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
34
44
  walletAddress: string;
35
45
  totalFetched: number;
36
- history: never[];
37
- error: string;
38
- } | {
39
- walletAddress: string;
40
- totalFetched: number;
41
- history: {
42
- txHash: string;
43
- explorerUrl: string;
44
- type: "swap" | "transfer" | "other";
45
- timestamp: string;
46
- status: "success" | "failed";
47
- value: string;
48
- details: string;
49
- }[];
50
- error?: undefined;
51
- }>;
46
+ history: HistoryEntry[];
47
+ note: string;
48
+ }>>;
49
+ export {};
52
50
  //# sourceMappingURL=getExecutionHistory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getExecutionHistory.d.ts","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAInC,CAAC;AAEF,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB;;;;;;;;;gBAEnE,MAAM;qBACD,MAAM;cACb,MAAM,GAAG,UAAU,GAAG,OAAO;mBACxB,MAAM;gBACT,SAAS,GAAG,QAAQ;eACrB,MAAM;iBACJ,MAAM;;;GAiFlB"}
1
+ {"version":3,"file":"getExecutionHistory.d.ts","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAgBjF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;CAKnC,CAAC;AAEF,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB;;;;;IA4I9E"}
@@ -1,94 +1,155 @@
1
1
  // ─── Tool: get_execution_history ───────────────────────────────────────
2
+ // Uses eth_getLogs for ERC-20 Transfer events (fast, covers token swaps)
3
+ // and a parallelised block scan of the last 100 blocks for native PHRS transfers.
4
+ // Prior approach scanned 500 blocks sequentially — 500+ RPC calls, always timed out.
5
+ // ────────────────────────────────────────────────────────────────────────
2
6
  import { z } from "zod";
3
7
  import { publicClient, getExplorerUrl } from "../lib/pharosClient.js";
4
- import { DODO_ROUTE_PROXY_ADDRESS } from "../lib/constants.js";
5
- import { formatEther } from "viem";
8
+ import { DODO_ROUTE_PROXY_ADDRESS, USDC_ADDRESS, USDT_ADDRESS, WBTC_ADDRESS, WETH_ADDRESS, WPHRS_ADDRESS, CIRCLE_USDC_ADDRESS, } from "../lib/constants.js";
9
+ import { formatEther, parseAbiItem } from "viem";
10
+ import { ok, fail } from "../lib/toolResponse.js";
11
+ const TRANSFER_EVENT = parseAbiItem("event Transfer(address indexed from, address indexed to, uint256 value)");
6
12
  export const getExecutionHistorySchema = z.object({
7
13
  walletAddress: z.string(),
8
14
  limit: z.number().optional().default(20),
9
15
  filter: z.enum(["swap", "transfer", "all"]).optional().default("all"),
10
16
  });
17
+ // All known token addresses to scan for Transfer events (mutable array for viem compatibility)
18
+ const KNOWN_TOKEN_ADDRESSES = [
19
+ USDC_ADDRESS,
20
+ USDT_ADDRESS,
21
+ WBTC_ADDRESS,
22
+ WETH_ADDRESS,
23
+ WPHRS_ADDRESS,
24
+ CIRCLE_USDC_ADDRESS,
25
+ ];
26
+ const ERC20_LOG_RANGE = 10000n; // blocks to scan for ERC-20 events
27
+ const NATIVE_SCAN_RANGE = 100n; // blocks for native PHRS scan
28
+ const NATIVE_BATCH_SIZE = 10; // parallel block fetches per batch
11
29
  export const getExecutionHistoryTool = {
12
30
  name: "get_execution_history",
13
- description: "Pull on-chain transaction history for a wallet on Pharos. Filters by swap, transfer, or all.",
31
+ description: "Pull on-chain transaction history for a wallet. Uses eth_getLogs for ERC-20 transfers and parallel block scan for native PHRS. Filters by swap, transfer, or all.",
14
32
  inputSchema: getExecutionHistorySchema,
15
33
  };
16
34
  export async function handleGetExecutionHistory(input) {
35
+ const seen = new Set();
17
36
  const history = [];
18
37
  try {
19
38
  const blockNumber = await publicClient.getBlockNumber();
20
- // Scan last ~500 blocks for transactions
21
- const fromBlock = blockNumber > 500n ? blockNumber - 500n : 0n;
22
- // Use eth_getLogs to find transactions involving the wallet
23
- // For a more complete solution, we'd use an indexer. Here we check recent blocks.
24
- const batchSize = 50;
25
- let found = 0;
26
- for (let b = blockNumber; b > fromBlock && found < input.limit; b -= 1n) {
27
- try {
28
- const block = await publicClient.getBlock({
29
- blockNumber: b,
30
- includeTransactions: true,
31
- });
32
- for (const tx of block.transactions) {
33
- if (found >= input.limit)
34
- break;
35
- if (typeof tx === "string")
36
- continue;
37
- const isFrom = tx.from.toLowerCase() === input.walletAddress.toLowerCase();
38
- const isTo = tx.to?.toLowerCase() === input.walletAddress.toLowerCase();
39
- if (!isFrom && !isTo)
40
- continue;
41
- const isDodoSwap = tx.to?.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase();
42
- const txType = isDodoSwap
43
- ? "swap"
44
- : tx.value > 0n
45
- ? "transfer"
46
- : "other";
47
- if (input.filter !== "all" && txType !== input.filter)
39
+ const erc20FromBlock = blockNumber > ERC20_LOG_RANGE ? blockNumber - ERC20_LOG_RANGE : 0n;
40
+ const nativeFromBlock = blockNumber > NATIVE_SCAN_RANGE ? blockNumber - NATIVE_SCAN_RANGE : 0n;
41
+ const walletAddr = input.walletAddress;
42
+ // ── ERC-20 Transfer logs ─────────────────────────────────────────────
43
+ // Two queries: wallet as sender (from) and wallet as receiver (to)
44
+ const empty = [];
45
+ const [sentLogs, receivedLogs] = await Promise.all([
46
+ publicClient.getLogs({
47
+ fromBlock: erc20FromBlock,
48
+ toBlock: blockNumber,
49
+ address: KNOWN_TOKEN_ADDRESSES,
50
+ event: TRANSFER_EVENT,
51
+ args: { from: walletAddr },
52
+ strict: true,
53
+ }).catch(() => empty),
54
+ publicClient.getLogs({
55
+ fromBlock: erc20FromBlock,
56
+ toBlock: blockNumber,
57
+ address: KNOWN_TOKEN_ADDRESSES,
58
+ event: TRANSFER_EVENT,
59
+ args: { to: walletAddr },
60
+ strict: true,
61
+ }).catch(() => empty),
62
+ ]);
63
+ const allLogs = [...sentLogs, ...receivedLogs];
64
+ // Resolve block timestamps in bulk for unique block numbers in logs
65
+ const uniqueBlocks = [...new Set(allLogs.map((l) => l.blockNumber))];
66
+ const blockTimestampMap = new Map();
67
+ for (let i = 0; i < uniqueBlocks.length; i += NATIVE_BATCH_SIZE) {
68
+ const batch = uniqueBlocks.slice(i, i + NATIVE_BATCH_SIZE);
69
+ const blocks = await Promise.all(batch.map((bn) => publicClient.getBlock({ blockNumber: bn }).catch(() => null)));
70
+ for (const block of blocks) {
71
+ if (block) {
72
+ blockTimestampMap.set(block.number, new Date(Number(block.timestamp) * 1000).toISOString());
73
+ }
74
+ }
75
+ }
76
+ for (const log of allLogs) {
77
+ if (history.length >= input.limit)
78
+ break;
79
+ if (!log.transactionHash || seen.has(log.transactionHash))
80
+ continue;
81
+ const isDodoSwap = log.address.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase()
82
+ || sentLogs.some((l) => l.transactionHash === log.transactionHash && l.address.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase())
83
+ || receivedLogs.some((l) => l.transactionHash === log.transactionHash && l.address.toLowerCase() === DODO_ROUTE_PROXY_ADDRESS.toLowerCase());
84
+ const txType = isDodoSwap ? "swap" : "transfer";
85
+ if (input.filter !== "all" && txType !== input.filter)
86
+ continue;
87
+ seen.add(log.transactionHash);
88
+ history.push({
89
+ txHash: log.transactionHash,
90
+ explorerUrl: getExplorerUrl(log.transactionHash),
91
+ type: txType,
92
+ timestamp: blockTimestampMap.get(log.blockNumber) ?? "unknown",
93
+ status: "unknown", // receipt not fetched per-log to avoid N+1
94
+ value: "0",
95
+ details: `ERC-20 Transfer on block ${log.blockNumber.toString()}`,
96
+ blockNumber: log.blockNumber.toString(),
97
+ });
98
+ }
99
+ // ── Native PHRS transfers — parallel block scan (last 100 blocks) ───
100
+ if (input.filter !== "swap" && history.length < input.limit) {
101
+ const blockNums = [];
102
+ for (let b = blockNumber; b > nativeFromBlock; b--) {
103
+ blockNums.push(b);
104
+ }
105
+ for (let i = 0; i < blockNums.length && history.length < input.limit; i += NATIVE_BATCH_SIZE) {
106
+ const batch = blockNums.slice(i, i + NATIVE_BATCH_SIZE);
107
+ const blocks = await Promise.all(batch.map((bn) => publicClient.getBlock({ blockNumber: bn, includeTransactions: true }).catch(() => null)));
108
+ for (const block of blocks) {
109
+ if (!block)
48
110
  continue;
49
- // Get receipt for status
50
- let status = "success";
51
- try {
52
- const receipt = await publicClient.getTransactionReceipt({ hash: tx.hash });
53
- status = receipt.status === "success" ? "success" : "failed";
54
- }
55
- catch {
56
- // skip
57
- }
58
- history.push({
59
- txHash: tx.hash,
60
- explorerUrl: getExplorerUrl(tx.hash),
61
- type: txType,
62
- timestamp: new Date(Number(block.timestamp) * 1000).toISOString(),
63
- status,
64
- value: formatEther(tx.value),
65
- details: isDodoSwap
66
- ? `Swap via FaroSwap (DODO)`
67
- : isFrom
111
+ const ts = new Date(Number(block.timestamp) * 1000).toISOString();
112
+ for (const tx of block.transactions) {
113
+ if (history.length >= input.limit)
114
+ break;
115
+ if (typeof tx === "string")
116
+ continue;
117
+ if (tx.value === 0n)
118
+ continue; // no native transfer
119
+ const isFrom = tx.from.toLowerCase() === input.walletAddress.toLowerCase();
120
+ const isTo = tx.to?.toLowerCase() === input.walletAddress.toLowerCase();
121
+ if (!isFrom && !isTo)
122
+ continue;
123
+ if (seen.has(tx.hash))
124
+ continue;
125
+ seen.add(tx.hash);
126
+ history.push({
127
+ txHash: tx.hash,
128
+ explorerUrl: getExplorerUrl(tx.hash),
129
+ type: "transfer",
130
+ timestamp: ts,
131
+ status: "unknown",
132
+ value: formatEther(tx.value),
133
+ details: isFrom
68
134
  ? `Sent ${formatEther(tx.value)} PHRS to ${tx.to}`
69
135
  : `Received ${formatEther(tx.value)} PHRS from ${tx.from}`,
70
- });
71
- found++;
136
+ blockNumber: block.number.toString(),
137
+ });
138
+ }
72
139
  }
73
140
  }
74
- catch {
75
- // skip blocks that fail to load
76
- continue;
77
- }
78
141
  }
142
+ // Sort descending by block number
143
+ history.sort((a, b) => Number(BigInt(b.blockNumber) - BigInt(a.blockNumber)));
79
144
  }
80
145
  catch (err) {
81
- return {
82
- walletAddress: input.walletAddress,
83
- totalFetched: 0,
84
- history: [],
85
- error: `Failed to fetch history: ${err.message}`,
86
- };
146
+ return fail("HISTORY_FETCH_FAILED", `Failed to fetch history: ${err.message}`, true, "get_execution_history");
87
147
  }
88
- return {
148
+ return ok({
89
149
  walletAddress: input.walletAddress,
90
150
  totalFetched: history.length,
91
151
  history,
92
- };
152
+ note: "ERC-20 history covers last 10,000 blocks via eth_getLogs. Native PHRS transfers cover last 100 blocks via parallel block scan.",
153
+ });
93
154
  }
94
155
  //# sourceMappingURL=getExecutionHistory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getExecutionHistory.js","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getExecutionHistory.js","sourceRoot":"","sources":["../../src/tools/getExecutionHistory.ts"],"names":[],"mappings":"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"}
@@ -18,9 +18,9 @@ export declare const getTransactionStatusTool: {
18
18
  txHash: string;
19
19
  }>;
20
20
  };
21
- export declare function handleGetTransactionStatus(raw: GetTransactionStatusInput): Promise<{
21
+ export declare function handleGetTransactionStatus(raw: GetTransactionStatusInput): Promise<import("../lib/toolResponse.js").ToolFailure | import("../lib/toolResponse.js").ToolSuccess<{
22
+ txStatus: string;
22
23
  txHash: string;
23
- status: string;
24
24
  blockNumber: string;
25
25
  blockHash: `0x${string}`;
26
26
  from: `0x${string}`;
@@ -29,10 +29,9 @@ export declare function handleGetTransactionStatus(raw: GetTransactionStatusInpu
29
29
  effectiveGasPrice: string;
30
30
  value: string;
31
31
  explorerUrl: string;
32
- error?: undefined;
33
- } | {
32
+ }> | import("../lib/toolResponse.js").ToolSuccess<{
34
33
  txHash: string;
35
- status: "pending";
34
+ txStatus: "pending";
36
35
  blockNumber: null;
37
36
  blockHash: null;
38
37
  from: `0x${string}`;
@@ -41,18 +40,5 @@ export declare function handleGetTransactionStatus(raw: GetTransactionStatusInpu
41
40
  effectiveGasPrice: null;
42
41
  value: string;
43
42
  explorerUrl: string;
44
- error?: undefined;
45
- } | {
46
- txHash: string;
47
- status: "not_found";
48
- blockNumber: null;
49
- blockHash: null;
50
- from: null;
51
- to: null;
52
- gasUsed: null;
53
- effectiveGasPrice: null;
54
- value: null;
55
- explorerUrl: string;
56
- error: string;
57
- }>;
43
+ }>>;
58
44
  //# sourceMappingURL=getTransactionStatus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../src/tools/getTransactionStatus.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEnF,eAAO,MAAM,wBAAwB;;;;;;;;;;CAKpC,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqD9E"}
1
+ {"version":3,"file":"getTransactionStatus.d.ts","sourceRoot":"","sources":["../../src/tools/getTransactionStatus.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,0BAA0B;;;;;;EAErC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEnF,eAAO,MAAM,wBAAwB;;;;;;;;;;CAKpC,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,yBAAyB;;;;;;;;;;;;;;;;;;;;;;IA8C9E"}
@@ -3,6 +3,7 @@
3
3
  // ────────────────────────────────────────────────────────────────────────
4
4
  import { z } from "zod";
5
5
  import { publicClient, getExplorerUrl } from "../lib/pharosClient.js";
6
+ import { ok, fail } from "../lib/toolResponse.js";
6
7
  export const getTransactionStatusSchema = z.object({
7
8
  txHash: z.string().describe("Transaction hash to look up"),
8
9
  });
@@ -18,9 +19,8 @@ export async function handleGetTransactionStatus(raw) {
18
19
  try {
19
20
  const receipt = await publicClient.getTransactionReceipt({ hash });
20
21
  const tx = await publicClient.getTransaction({ hash });
21
- return {
22
+ const details = {
22
23
  txHash: input.txHash,
23
- status: receipt.status === "success" ? "success" : "failed",
24
24
  blockNumber: receipt.blockNumber.toString(),
25
25
  blockHash: receipt.blockHash,
26
26
  from: receipt.from,
@@ -30,14 +30,18 @@ export async function handleGetTransactionStatus(raw) {
30
30
  value: tx.value.toString(),
31
31
  explorerUrl: getExplorerUrl(input.txHash),
32
32
  };
33
+ if (receipt.status !== "success") {
34
+ return fail("TX_REVERTED", "Transaction was mined but reverted on-chain.", false, "get_transaction_status");
35
+ }
36
+ return ok({ ...details, txStatus: "success" });
33
37
  }
34
38
  catch {
35
39
  // Receipt not found — check if the tx exists at all (pending)
36
40
  try {
37
41
  const tx = await publicClient.getTransaction({ hash });
38
- return {
42
+ return ok({
39
43
  txHash: input.txHash,
40
- status: "pending",
44
+ txStatus: "pending",
41
45
  blockNumber: null,
42
46
  blockHash: null,
43
47
  from: tx.from,
@@ -46,22 +50,10 @@ export async function handleGetTransactionStatus(raw) {
46
50
  effectiveGasPrice: null,
47
51
  value: tx.value.toString(),
48
52
  explorerUrl: getExplorerUrl(input.txHash),
49
- };
53
+ });
50
54
  }
51
55
  catch {
52
- return {
53
- txHash: input.txHash,
54
- status: "not_found",
55
- blockNumber: null,
56
- blockHash: null,
57
- from: null,
58
- to: null,
59
- gasUsed: null,
60
- effectiveGasPrice: null,
61
- value: null,
62
- explorerUrl: getExplorerUrl(input.txHash),
63
- error: "Transaction not found on chain",
64
- };
56
+ return fail("TX_NOT_FOUND", "Transaction not found on chain.", false, "get_transaction_status");
65
57
  }
66
58
  }
67
59
  }