@devbond/gc 1.0.0 → 2.0.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/dist/autonomy/behavior.d.ts +3 -2
- package/dist/autonomy/behavior.js +2 -2
- package/dist/autonomy/behavior.js.map +1 -1
- package/dist/autonomy/llm-client.d.ts +5 -9
- package/dist/autonomy/llm-client.js +13 -138
- package/dist/autonomy/llm-client.js.map +1 -1
- package/dist/finance/action/buyback.d.ts +36 -0
- package/dist/finance/action/buyback.js +27 -0
- package/dist/finance/action/buyback.js.map +1 -0
- package/dist/finance/action/gas-refill.d.ts +29 -0
- package/dist/finance/action/gas-refill.js +106 -0
- package/dist/finance/action/gas-refill.js.map +1 -0
- package/dist/finance/action/index.d.ts +8 -0
- package/dist/finance/action/index.js +9 -0
- package/dist/finance/action/index.js.map +1 -0
- package/dist/finance/action/pay-bills.d.ts +35 -0
- package/dist/finance/action/pay-bills.js +39 -0
- package/dist/finance/action/pay-bills.js.map +1 -0
- package/dist/finance/action/treasury.d.ts +26 -0
- package/dist/finance/action/treasury.js +46 -0
- package/dist/finance/action/treasury.js.map +1 -0
- package/dist/finance/action/x402.d.ts +124 -0
- package/dist/finance/action/x402.js +200 -0
- package/dist/finance/action/x402.js.map +1 -0
- package/dist/finance/earn.d.ts +49 -0
- package/dist/finance/earn.js +77 -0
- package/dist/finance/earn.js.map +1 -0
- package/dist/finance/index.d.ts +5 -0
- package/dist/finance/index.js +5 -0
- package/dist/finance/index.js.map +1 -0
- package/dist/finance/spend.d.ts +53 -0
- package/dist/finance/spend.js +89 -0
- package/dist/finance/spend.js.map +1 -0
- package/dist/finance/wallet.d.ts +23 -0
- package/dist/finance/wallet.js +82 -0
- package/dist/finance/wallet.js.map +1 -0
- package/dist/index.js +15 -9
- package/dist/index.js.map +1 -1
- package/dist/survival/survival-manager.d.ts +4 -2
- package/dist/survival/survival-manager.js +9 -3
- package/dist/survival/survival-manager.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* spend.ts — Agent 支出管理
|
|
3
|
+
*
|
|
4
|
+
* 自持数据与持久化,负责记录、汇总 agent 的各类支出(gas、llm、invest、other)。
|
|
5
|
+
*/
|
|
6
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
const SPEND_LOG_FILE = "wallet-spending.json";
|
|
9
|
+
// ─── SpendManager ───────────────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* 管理当前 agent 的支出:记录、分类、汇总、持久化。
|
|
12
|
+
* 自持 spendLog 数据,不依赖 AgentWallet。
|
|
13
|
+
*/
|
|
14
|
+
export class SpendManager {
|
|
15
|
+
config;
|
|
16
|
+
spendLog = [];
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.config = config;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 记录一笔支出。
|
|
22
|
+
*/
|
|
23
|
+
record(category, amount, txHash) {
|
|
24
|
+
this.spendLog.push({
|
|
25
|
+
category,
|
|
26
|
+
amount: amount.toString(),
|
|
27
|
+
txHash,
|
|
28
|
+
timestamp: new Date().toISOString(),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 获取当前支出汇总(按类别与总览)。
|
|
33
|
+
*/
|
|
34
|
+
getSummary() {
|
|
35
|
+
const byCategory = {
|
|
36
|
+
gas: 0n,
|
|
37
|
+
llm: 0n,
|
|
38
|
+
invest: 0n,
|
|
39
|
+
other: 0n,
|
|
40
|
+
};
|
|
41
|
+
let total = 0n;
|
|
42
|
+
for (const entry of this.spendLog) {
|
|
43
|
+
const amt = BigInt(entry.amount);
|
|
44
|
+
byCategory[entry.category] += amt;
|
|
45
|
+
total += amt;
|
|
46
|
+
}
|
|
47
|
+
return { total, byCategory, entries: [...this.spendLog] };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 获取原始支出条目列表。
|
|
51
|
+
*/
|
|
52
|
+
getEntries() {
|
|
53
|
+
return [...this.spendLog];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 按类别筛选支出条目。
|
|
57
|
+
*/
|
|
58
|
+
getEntriesByCategory(category) {
|
|
59
|
+
return this.spendLog.filter((e) => e.category === category);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 从 dataDir 加载持久化的支出日志。
|
|
63
|
+
*/
|
|
64
|
+
async load() {
|
|
65
|
+
try {
|
|
66
|
+
const path = join(this.config.dataDir, SPEND_LOG_FILE);
|
|
67
|
+
const data = await readFile(path, "utf-8");
|
|
68
|
+
this.spendLog = JSON.parse(data);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// No log yet, start fresh
|
|
72
|
+
this.spendLog = [];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 持久化支出日志到 dataDir。
|
|
77
|
+
*/
|
|
78
|
+
async save() {
|
|
79
|
+
try {
|
|
80
|
+
await mkdir(this.config.dataDir, { recursive: true });
|
|
81
|
+
const path = join(this.config.dataDir, SPEND_LOG_FILE);
|
|
82
|
+
await writeFile(path, JSON.stringify(this.spendLog, null, 2), "utf-8");
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
console.error("[spend] Failed to save spending log:", err);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=spend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend.js","sourceRoot":"","sources":["../../src/finance/spend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAuBjC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAE9C,2EAA2E;AAE3E;;;GAGG;AACH,MAAM,OAAO,YAAY;IAGH;IAFZ,QAAQ,GAAiB,EAAE,CAAC;IAEpC,YAAoB,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAElD;;OAEG;IACH,MAAM,CACJ,QAAuB,EACvB,MAAc,EACd,MAAe;QAEf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;YACzB,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,UAAU,GAAkC;YAChD,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;SACV,CAAC;QACF,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;YAClC,KAAK,IAAI,GAAG,CAAC;QACf,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,QAAuB;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
export declare class AgentWallet {
|
|
3
|
+
private wallet;
|
|
4
|
+
private provider;
|
|
5
|
+
private tokenAddress;
|
|
6
|
+
private stableTokenContract;
|
|
7
|
+
private tokenContract;
|
|
8
|
+
private stableTokenAddr;
|
|
9
|
+
private stableDecimals;
|
|
10
|
+
constructor(privateKey: string, tokenAddress: string, provider: ethers.JsonRpcProvider);
|
|
11
|
+
/** One-time init: read immutable config from contract */
|
|
12
|
+
init(): Promise<void>;
|
|
13
|
+
getStableBalance(): Promise<bigint>;
|
|
14
|
+
getNativeBalance(): Promise<bigint>;
|
|
15
|
+
getTokenBalance(): Promise<bigint>;
|
|
16
|
+
approveSpend(spender: string, amount: bigint): Promise<string>;
|
|
17
|
+
get signer(): ethers.Wallet;
|
|
18
|
+
get address(): string;
|
|
19
|
+
get rpcProvider(): ethers.JsonRpcProvider;
|
|
20
|
+
get tokenAddr(): string;
|
|
21
|
+
get stableAddr(): string;
|
|
22
|
+
get stableDecimalCount(): number;
|
|
23
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
// ─── ABIs ───────────────────────────────────────────────────────────────
|
|
3
|
+
const ERC20_ABI = [
|
|
4
|
+
"function balanceOf(address) view returns (uint256)",
|
|
5
|
+
"function approve(address spender, uint256 amount) returns (bool)",
|
|
6
|
+
"function transfer(address to, uint256 amount) returns (bool)",
|
|
7
|
+
"function allowance(address owner, address spender) view returns (uint256)",
|
|
8
|
+
];
|
|
9
|
+
const TOKEN_WALLET_ABI = [
|
|
10
|
+
"function stableToken() view returns (address)",
|
|
11
|
+
"function stableDecimals() view returns (uint8)",
|
|
12
|
+
"function balanceOf(address) view returns (uint256)",
|
|
13
|
+
];
|
|
14
|
+
// ─── AgentWallet ────────────────────────────────────────────────────────
|
|
15
|
+
export class AgentWallet {
|
|
16
|
+
wallet;
|
|
17
|
+
provider;
|
|
18
|
+
tokenAddress;
|
|
19
|
+
// Contracts (initialized in init())
|
|
20
|
+
stableTokenContract;
|
|
21
|
+
tokenContract;
|
|
22
|
+
// Cached immutables
|
|
23
|
+
stableTokenAddr = "";
|
|
24
|
+
stableDecimals = 18;
|
|
25
|
+
constructor(privateKey, tokenAddress, provider) {
|
|
26
|
+
this.wallet = new ethers.Wallet(privateKey, provider);
|
|
27
|
+
this.provider = provider;
|
|
28
|
+
this.tokenAddress = tokenAddress;
|
|
29
|
+
}
|
|
30
|
+
/** One-time init: read immutable config from contract */
|
|
31
|
+
async init() {
|
|
32
|
+
const readToken = new ethers.Contract(this.tokenAddress, TOKEN_WALLET_ABI, this.provider);
|
|
33
|
+
// Read immutables in parallel
|
|
34
|
+
const [stableAddr, stableDecimals] = await Promise.all([
|
|
35
|
+
readToken.stableToken(),
|
|
36
|
+
readToken.stableDecimals(),
|
|
37
|
+
]);
|
|
38
|
+
this.stableTokenAddr = stableAddr;
|
|
39
|
+
this.stableDecimals = Number(stableDecimals);
|
|
40
|
+
// Create contract instances with signer
|
|
41
|
+
this.stableTokenContract = new ethers.Contract(this.stableTokenAddr, ERC20_ABI, this.wallet);
|
|
42
|
+
this.tokenContract = new ethers.Contract(this.tokenAddress, TOKEN_WALLET_ABI, this.wallet);
|
|
43
|
+
console.log(`[wallet] Initialized: addr=${this.wallet.address}, ` +
|
|
44
|
+
`stable=${this.stableTokenAddr}`);
|
|
45
|
+
}
|
|
46
|
+
// ─── Balance queries ────────────────────────────────────────────────
|
|
47
|
+
async getStableBalance() {
|
|
48
|
+
return this.stableTokenContract.balanceOf(this.wallet.address);
|
|
49
|
+
}
|
|
50
|
+
async getNativeBalance() {
|
|
51
|
+
return this.provider.getBalance(this.wallet.address);
|
|
52
|
+
}
|
|
53
|
+
async getTokenBalance() {
|
|
54
|
+
return this.tokenContract.balanceOf(this.wallet.address);
|
|
55
|
+
}
|
|
56
|
+
// ─── Fund operations ────────────────────────────────────────────────
|
|
57
|
+
async approveSpend(spender, amount) {
|
|
58
|
+
const tx = await this.stableTokenContract.approve(spender, amount);
|
|
59
|
+
const receipt = await tx.wait();
|
|
60
|
+
return receipt.hash;
|
|
61
|
+
}
|
|
62
|
+
// ─── Accessors ──────────────────────────────────────────────────────
|
|
63
|
+
get signer() {
|
|
64
|
+
return this.wallet;
|
|
65
|
+
}
|
|
66
|
+
get address() {
|
|
67
|
+
return this.wallet.address;
|
|
68
|
+
}
|
|
69
|
+
get rpcProvider() {
|
|
70
|
+
return this.provider;
|
|
71
|
+
}
|
|
72
|
+
get tokenAddr() {
|
|
73
|
+
return this.tokenAddress;
|
|
74
|
+
}
|
|
75
|
+
get stableAddr() {
|
|
76
|
+
return this.stableTokenAddr;
|
|
77
|
+
}
|
|
78
|
+
get stableDecimalCount() {
|
|
79
|
+
return this.stableDecimals;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/finance/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,9 @@ if (process.env.VITEST !== "true") {
|
|
|
5
5
|
}
|
|
6
6
|
import { ChainMonitor, SurvivalManager } from "./survival/index.js";
|
|
7
7
|
import { AutonomousBehavior } from "./autonomy/behavior.js";
|
|
8
|
-
import { AgentWallet } from "./
|
|
8
|
+
import { AgentWallet } from "./finance/wallet.js";
|
|
9
|
+
import { SpendManager } from "./finance/spend.js";
|
|
10
|
+
import { detectTreasuryCapabilities } from "./finance/action/treasury.js";
|
|
9
11
|
import { shellExecuteTool } from "./tools/shell-execute.js";
|
|
10
12
|
import { readChainStateTool } from "./tools/read-chain-state.js";
|
|
11
13
|
import { readFileTool } from "./tools/read-file.js";
|
|
@@ -87,15 +89,19 @@ export async function main() {
|
|
|
87
89
|
const monitor = new ChainMonitor(config);
|
|
88
90
|
await monitor.init();
|
|
89
91
|
console.log(`Agent wallet: ${monitor.walletAddress}`);
|
|
90
|
-
// Initialize agent wallet (
|
|
92
|
+
// Initialize agent wallet (keys, signing, balance queries)
|
|
91
93
|
const agentWallet = new AgentWallet(config.walletPrivateKey, config.tokenAddress, monitor.rpcProvider);
|
|
92
94
|
await agentWallet.init();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
// Detect treasury capabilities (V2 withdraw support)
|
|
96
|
+
const treasuryCaps = await detectTreasuryCapabilities(config.tokenAddress, monitor.rpcProvider);
|
|
97
|
+
console.log(`Treasury withdraw: ${treasuryCaps.hasWithdrawToWallet}`);
|
|
98
|
+
// Initialize spend manager (self-contained persistence)
|
|
99
|
+
const spendManager = new SpendManager({ dataDir: config.dataDir });
|
|
100
|
+
await spendManager.load();
|
|
95
101
|
// Initialize survival manager
|
|
96
|
-
const survival = new SurvivalManager(monitor, config, agentWallet);
|
|
102
|
+
const survival = new SurvivalManager(monitor, config, agentWallet, spendManager);
|
|
97
103
|
// Initialize autonomous behavior
|
|
98
|
-
const behavior = new AutonomousBehavior(monitor, survival, config, agentWallet);
|
|
104
|
+
const behavior = new AutonomousBehavior(monitor, survival, config, agentWallet, spendManager);
|
|
99
105
|
// Register tools
|
|
100
106
|
behavior.registerTool(shellExecuteTool);
|
|
101
107
|
behavior.registerTool(readChainStateTool);
|
|
@@ -118,7 +124,7 @@ export async function main() {
|
|
|
118
124
|
const shutdown = async () => {
|
|
119
125
|
console.log("\nShutting down...");
|
|
120
126
|
running = false;
|
|
121
|
-
await
|
|
127
|
+
await spendManager.save();
|
|
122
128
|
};
|
|
123
129
|
process.on("SIGINT", () => { shutdown(); });
|
|
124
130
|
process.on("SIGTERM", () => { shutdown(); });
|
|
@@ -133,8 +139,8 @@ export async function main() {
|
|
|
133
139
|
console.log(` [summary] ${obs.summary.slice(0, 200)}`);
|
|
134
140
|
}
|
|
135
141
|
console.log();
|
|
136
|
-
// Periodically save
|
|
137
|
-
await
|
|
142
|
+
// Periodically save spending log
|
|
143
|
+
await spendManager.save();
|
|
138
144
|
// If dead, stop
|
|
139
145
|
if (state.status === AgentStatus.DEAD) {
|
|
140
146
|
console.log("Goo Agent is Dead. Core stopping.");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,8CAA8C;AAC3D,CAAC;AACD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ChainState, type RuntimeConfig } from "../types.js";
|
|
2
2
|
import type { ChainMonitor } from "./chain-monitor.js";
|
|
3
|
-
import type { AgentWallet } from "../
|
|
3
|
+
import type { AgentWallet } from "../finance/index.js";
|
|
4
|
+
import type { SpendManager } from "../finance/spend.js";
|
|
4
5
|
/**
|
|
5
6
|
* Survival module — Goo Core economic actions (survivalSell, Pulse).
|
|
6
7
|
*
|
|
@@ -15,7 +16,8 @@ export declare class SurvivalManager {
|
|
|
15
16
|
private token;
|
|
16
17
|
private lastPulseTime;
|
|
17
18
|
private agentWallet?;
|
|
18
|
-
|
|
19
|
+
private spendManager?;
|
|
20
|
+
constructor(monitor: ChainMonitor, config: RuntimeConfig, agentWallet?: AgentWallet, spendManager?: SpendManager);
|
|
19
21
|
/**
|
|
20
22
|
* Evaluate chain state and execute survival actions if needed.
|
|
21
23
|
* Called on every heartbeat. Returns a list of actions taken.
|
|
@@ -2,6 +2,7 @@ import { ethers } from "ethers";
|
|
|
2
2
|
import { AgentStatus } from "../types.js";
|
|
3
3
|
import { emitPulse as emitPulseOnChain } from "./pulse.js";
|
|
4
4
|
import { TOKEN_WRITE_ABI } from "../const.js";
|
|
5
|
+
import { ensureWalletGas } from "../finance/action/gas-refill.js";
|
|
5
6
|
/**
|
|
6
7
|
* Survival module — Goo Core economic actions (survivalSell, Pulse).
|
|
7
8
|
*
|
|
@@ -16,12 +17,14 @@ export class SurvivalManager {
|
|
|
16
17
|
token;
|
|
17
18
|
lastPulseTime = 0;
|
|
18
19
|
agentWallet;
|
|
19
|
-
|
|
20
|
+
spendManager;
|
|
21
|
+
constructor(monitor, config, agentWallet, spendManager) {
|
|
20
22
|
this.monitor = monitor;
|
|
21
23
|
this.config = config;
|
|
22
24
|
this.wallet = new ethers.Wallet(config.walletPrivateKey, monitor.rpcProvider);
|
|
23
25
|
this.token = new ethers.Contract(config.tokenAddress, TOKEN_WRITE_ABI, this.wallet);
|
|
24
26
|
this.agentWallet = agentWallet;
|
|
27
|
+
this.spendManager = spendManager;
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* Evaluate chain state and execute survival actions if needed.
|
|
@@ -32,11 +35,14 @@ export class SurvivalManager {
|
|
|
32
35
|
if (state.status === AgentStatus.DEAD) {
|
|
33
36
|
return ["Agent is DEAD. No actions possible."];
|
|
34
37
|
}
|
|
35
|
-
// 1. Gas refill: auto-swap via
|
|
38
|
+
// 1. Gas refill: auto-swap via gas-refill module if wallet available, otherwise warn
|
|
36
39
|
if (state.nativeBalance < this.config.minGasBalance) {
|
|
37
40
|
if (this.agentWallet) {
|
|
38
41
|
try {
|
|
39
|
-
const result = await this.agentWallet
|
|
42
|
+
const result = await ensureWalletGas(this.agentWallet, {
|
|
43
|
+
minGasBalance: this.config.minGasBalance,
|
|
44
|
+
gasRefillAmount: this.config.gasRefillAmount,
|
|
45
|
+
}, this.spendManager);
|
|
40
46
|
if (result.refilled) {
|
|
41
47
|
actions.push(`Gas refilled: swapped stablecoin → native (tx: ${result.txHash})`);
|
|
42
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"survival-manager.js","sourceRoot":"","sources":["../../src/survival/survival-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAuC,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"survival-manager.js","sourceRoot":"","sources":["../../src/survival/survival-manager.ts"],"names":[],"mappings":"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"}
|