@clawnch/clawtomaton 0.5.1 → 0.7.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/agent/index.d.ts +5 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +92 -11
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/prompt.d.ts +4 -0
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +211 -28
- package/dist/agent/prompt.js.map +1 -1
- package/dist/constants.d.ts +17 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -1
- package/dist/heartbeat/index.d.ts +13 -0
- package/dist/heartbeat/index.d.ts.map +1 -1
- package/dist/heartbeat/index.js +245 -20
- package/dist/heartbeat/index.js.map +1 -1
- package/dist/market/index.d.ts +12 -1
- package/dist/market/index.d.ts.map +1 -1
- package/dist/market/index.js +34 -4
- package/dist/market/index.js.map +1 -1
- package/dist/skills/index.d.ts +2 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +5 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/wayfinder.d.ts +13 -0
- package/dist/skills/wayfinder.d.ts.map +1 -0
- package/dist/skills/wayfinder.js +475 -0
- package/dist/skills/wayfinder.js.map +1 -0
- package/dist/state/index.d.ts +3 -1
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +16 -0
- package/dist/state/index.js.map +1 -1
- package/dist/survival/index.d.ts +8 -3
- package/dist/survival/index.d.ts.map +1 -1
- package/dist/survival/index.js +14 -7
- package/dist/survival/index.js.map +1 -1
- package/dist/types.d.ts +263 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/dist/agent/index.d.ts
CHANGED
|
@@ -27,6 +27,11 @@ export declare class ClawtomatonAgent {
|
|
|
27
27
|
* stops, runs out of gas budget, or hits MAX_TURNS_PER_RUN.
|
|
28
28
|
*/
|
|
29
29
|
run(externalInput?: string): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Record gas cost for a skill execution that produced a transaction.
|
|
32
|
+
* Extracts txHash from metadata or result text, fetches receipt, records cost.
|
|
33
|
+
*/
|
|
34
|
+
private recordGasIfTxHash;
|
|
30
35
|
/**
|
|
31
36
|
* Handle persistent side effects of skill calls.
|
|
32
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EACjB,mBAAmB,EAKpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EACjB,mBAAmB,EAKpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAa/C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,iBAAiB;IAyErC;;;OAGG;IACG,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgLhD;;;OAGG;YACW,iBAAiB;IAoC/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+K9B;;OAEG;YACW,aAAa;YA6Bb,aAAa;YAmCb,cAAc;IA+B5B,QAAQ,IAAI,UAAU;IACtB,WAAW,IAAI,mBAAmB;IAClC,SAAS,IAAI,OAAO;IACpB,SAAS,IAAI,kBAAkB;IAE/B,aAAa,IAAI,UAAU,GAAG,IAAI;IAE5B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAUhC"}
|
package/dist/agent/index.js
CHANGED
|
@@ -13,15 +13,16 @@ import { MarketIntelligence } from '../market/index.js';
|
|
|
13
13
|
import { buildClients } from '../identity/index.js';
|
|
14
14
|
import { buildSystemPrompt } from './prompt.js';
|
|
15
15
|
import { getSkillsForTier } from '../skills/index.js';
|
|
16
|
-
import { ClawnchTrader } from '@clawnch/clawncher-sdk';
|
|
16
|
+
import { ClawnchTrader, ClawnchOrders } from '@clawnch/clawncher-sdk';
|
|
17
17
|
import { XmtpClient } from '../xmtp/client.js';
|
|
18
18
|
import { readFileSync } from 'node:fs';
|
|
19
19
|
import { join } from 'node:path';
|
|
20
20
|
// ============================================================================
|
|
21
21
|
// Agent
|
|
22
22
|
// ============================================================================
|
|
23
|
-
const
|
|
24
|
-
const
|
|
23
|
+
const DEFAULT_MAX_TOOL_CALLS_PER_TURN = 5;
|
|
24
|
+
const DEFAULT_MAX_TURNS_PER_RUN = 20;
|
|
25
|
+
const DEFAULT_SURVIVAL_REFRESH_INTERVAL = 5;
|
|
25
26
|
export class ClawtomatonAgent {
|
|
26
27
|
state;
|
|
27
28
|
config;
|
|
@@ -41,8 +42,8 @@ export class ClawtomatonAgent {
|
|
|
41
42
|
}
|
|
42
43
|
this.identity = identity;
|
|
43
44
|
const { publicClient } = buildClients(identity, config.rpcUrl);
|
|
44
|
-
this.survivalMonitor = new SurvivalMonitor(publicClient, identity.address, this.state);
|
|
45
|
-
this.market = new MarketIntelligence(publicClient, identity.address, this.state);
|
|
45
|
+
this.survivalMonitor = new SurvivalMonitor(publicClient, identity.address, this.state, config.autonomy);
|
|
46
|
+
this.market = new MarketIntelligence(publicClient, identity.address, this.state, 'mainnet', { minClaimProfitWei: config.autonomy?.claiming?.minProfitWei });
|
|
46
47
|
// Load constitution from package
|
|
47
48
|
try {
|
|
48
49
|
// import.meta.dirname available in Node 21.2+; fileURLToPath fallback for Node 18-20
|
|
@@ -67,6 +68,26 @@ export class ClawtomatonAgent {
|
|
|
67
68
|
}
|
|
68
69
|
this.xmtpClient = new XmtpClient(xmtpConfig, identity.privateKey, this.state);
|
|
69
70
|
}
|
|
71
|
+
// Apply risk defaults from autonomy config (only seeds if no risk config exists yet)
|
|
72
|
+
if (config.autonomy?.riskDefaults) {
|
|
73
|
+
try {
|
|
74
|
+
const orders = new ClawnchOrders(this.state, this.state.asRiskStorage());
|
|
75
|
+
const existing = orders.getRiskConfig();
|
|
76
|
+
// Only apply if risk config is at defaults (peak = 0 means never used)
|
|
77
|
+
if (existing.peakPortfolioEth === 0 && existing.recentExecutions.length === 0) {
|
|
78
|
+
const rd = config.autonomy.riskDefaults;
|
|
79
|
+
orders.updateRiskConfig({
|
|
80
|
+
...(rd.maxPositionPct !== undefined && { maxPositionPct: rd.maxPositionPct }),
|
|
81
|
+
...(rd.maxDrawdownPct !== undefined && { maxDrawdownPct: rd.maxDrawdownPct }),
|
|
82
|
+
...(rd.failureCooldownMs !== undefined && { failureCooldownMs: rd.failureCooldownMs }),
|
|
83
|
+
...(rd.maxExecutionsPerHour !== undefined && { maxExecutionsPerHour: rd.maxExecutionsPerHour }),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Non-fatal — risk defaults are convenience, not critical
|
|
89
|
+
}
|
|
90
|
+
}
|
|
70
91
|
}
|
|
71
92
|
/**
|
|
72
93
|
* Run a single agent session — multiple ReAct turns until the agent
|
|
@@ -116,6 +137,11 @@ export class ClawtomatonAgent {
|
|
|
116
137
|
stateStore: this.state,
|
|
117
138
|
xmtpClient: this.xmtpClient ?? undefined,
|
|
118
139
|
};
|
|
140
|
+
// Inject Wayfinder API key into context for the wayfinder skill
|
|
141
|
+
const wayfinderKey = this.config.autonomy?.wayfinder?.apiKey ?? process.env.WAYFINDER_API_KEY;
|
|
142
|
+
if (wayfinderKey) {
|
|
143
|
+
ctx.__wayfinderApiKey = wayfinderKey;
|
|
144
|
+
}
|
|
119
145
|
// If there's external input (from heartbeat), add it as context
|
|
120
146
|
if (externalInput) {
|
|
121
147
|
const inputTurn = {
|
|
@@ -132,14 +158,19 @@ export class ClawtomatonAgent {
|
|
|
132
158
|
snapshot,
|
|
133
159
|
conditions,
|
|
134
160
|
state: this.state,
|
|
161
|
+
inferenceCostWei: this.config.autonomy?.inferenceCostWei,
|
|
162
|
+
autonomy: this.config.autonomy,
|
|
135
163
|
};
|
|
136
164
|
const systemPrompt = buildSystemPrompt(promptCtx);
|
|
137
165
|
// ReAct loop
|
|
138
|
-
|
|
166
|
+
const maxTurns = this.config.autonomy?.maxTurnsPerRun ?? DEFAULT_MAX_TURNS_PER_RUN;
|
|
167
|
+
const maxToolCalls = this.config.autonomy?.maxToolCallsPerTurn ?? DEFAULT_MAX_TOOL_CALLS_PER_TURN;
|
|
168
|
+
const refreshInterval = this.config.autonomy?.survivalRefreshInterval ?? DEFAULT_SURVIVAL_REFRESH_INTERVAL;
|
|
169
|
+
for (let i = 0; i < maxTurns; i++) {
|
|
139
170
|
turn++;
|
|
140
171
|
ctx.turn = turn;
|
|
141
|
-
// Refresh survival + market
|
|
142
|
-
if (i > 0 && i %
|
|
172
|
+
// Refresh survival + market periodically (to catch balance changes from txs)
|
|
173
|
+
if (i > 0 && i % refreshInterval === 0) {
|
|
143
174
|
ctx.survival = await this.survivalMonitor.check();
|
|
144
175
|
if (ctx.survival.tier === 'dead') {
|
|
145
176
|
this.state.audit('run_halted', 'Agent ran out of ETH mid-run.');
|
|
@@ -169,7 +200,7 @@ export class ClawtomatonAgent {
|
|
|
169
200
|
}
|
|
170
201
|
// Execute tool calls sequentially (avoid nonce conflicts)
|
|
171
202
|
const toolResults = [];
|
|
172
|
-
for (const call of toolCalls.slice(0,
|
|
203
|
+
for (const call of toolCalls.slice(0, maxToolCalls)) {
|
|
173
204
|
const skill = ctx.skills.find((s) => s.name === call.skill);
|
|
174
205
|
if (!skill) {
|
|
175
206
|
toolResults.push({
|
|
@@ -187,6 +218,10 @@ export class ClawtomatonAgent {
|
|
|
187
218
|
toolResults.push(result);
|
|
188
219
|
// Persist side effects
|
|
189
220
|
this.handleSkillSideEffects(call, result, ctx);
|
|
221
|
+
// Record gas cost if a tx was executed (non-blocking)
|
|
222
|
+
if (result.success && this.config.autonomy?.gasTracking !== false) {
|
|
223
|
+
this.recordGasIfTxHash(call.skill, result).catch(() => { });
|
|
224
|
+
}
|
|
190
225
|
this.state.audit('skill_result', `${call.skill}: ${result.success ? 'OK' : 'FAIL'} — ${String(result.result ?? result.error).slice(0, 200)}`);
|
|
191
226
|
}
|
|
192
227
|
catch (err) {
|
|
@@ -210,6 +245,42 @@ export class ClawtomatonAgent {
|
|
|
210
245
|
this.running = false;
|
|
211
246
|
}
|
|
212
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Record gas cost for a skill execution that produced a transaction.
|
|
250
|
+
* Extracts txHash from metadata or result text, fetches receipt, records cost.
|
|
251
|
+
*/
|
|
252
|
+
async recordGasIfTxHash(skill, result) {
|
|
253
|
+
// Try to extract txHash from structured metadata first, then from result text
|
|
254
|
+
let txHash;
|
|
255
|
+
if (result.metadata) {
|
|
256
|
+
const meta = result.metadata;
|
|
257
|
+
txHash = meta.txHash ?? meta.tx_hash;
|
|
258
|
+
}
|
|
259
|
+
if (!txHash && result.result) {
|
|
260
|
+
const match = String(result.result).match(/(?:TX|tx|txHash|hash):\s*(0x[a-fA-F0-9]{64})/);
|
|
261
|
+
txHash = match?.[1];
|
|
262
|
+
}
|
|
263
|
+
if (!txHash || !/^0x[a-fA-F0-9]{64}$/.test(txHash))
|
|
264
|
+
return;
|
|
265
|
+
try {
|
|
266
|
+
const { publicClient } = buildClients(this.identity, this.config.rpcUrl);
|
|
267
|
+
const receipt = await publicClient.getTransactionReceipt({
|
|
268
|
+
hash: txHash,
|
|
269
|
+
});
|
|
270
|
+
if (receipt) {
|
|
271
|
+
const trader = new ClawnchTrader(this.state.asTraderStorage());
|
|
272
|
+
trader.recordGasCost({
|
|
273
|
+
txHash,
|
|
274
|
+
skill,
|
|
275
|
+
gasUsed: receipt.gasUsed,
|
|
276
|
+
effectiveGasPrice: receipt.effectiveGasPrice,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// Non-fatal — don't break the agent if gas recording fails
|
|
282
|
+
}
|
|
283
|
+
}
|
|
213
284
|
/**
|
|
214
285
|
* Handle persistent side effects of skill calls.
|
|
215
286
|
*/
|
|
@@ -246,7 +317,7 @@ export class ClawtomatonAgent {
|
|
|
246
317
|
this.survivalMonitor.recordFeeClaim(0n); // timestamp update; actual amount tracked by on-chain balance
|
|
247
318
|
}
|
|
248
319
|
// Swap execution — auto-record trade in portfolio tracker
|
|
249
|
-
if (call.skill === 'swap' && result.success && result.result) {
|
|
320
|
+
if (call.skill === 'swap' && result.success && result.result && this.config.autonomy?.tradeRecording !== false) {
|
|
250
321
|
try {
|
|
251
322
|
const resultStr = String(result.result);
|
|
252
323
|
// Parse swap result: "Swap complete!\nSold: 0.01\nBought: 1234.56 FOO\nTX: 0x...\nGas used: ..."
|
|
@@ -293,7 +364,7 @@ export class ClawtomatonAgent {
|
|
|
293
364
|
}
|
|
294
365
|
}
|
|
295
366
|
// Uniswap swap — record trade via structured metadata (no regex parsing needed)
|
|
296
|
-
if (call.skill === 'uniswap_swap' && result.success && result.metadata) {
|
|
367
|
+
if (call.skill === 'uniswap_swap' && result.success && result.metadata && this.config.autonomy?.tradeRecording !== false) {
|
|
297
368
|
try {
|
|
298
369
|
const meta = result.metadata;
|
|
299
370
|
if (meta.trade && meta.txHash) {
|
|
@@ -348,6 +419,16 @@ export class ClawtomatonAgent {
|
|
|
348
419
|
this.state.audit('order_cancelled', `Order ${call.params.orderId} cancelled`);
|
|
349
420
|
}
|
|
350
421
|
}
|
|
422
|
+
// Wayfinder swap — audit event
|
|
423
|
+
if (call.skill === 'wayfinder' && result.success) {
|
|
424
|
+
const action = call.params.action;
|
|
425
|
+
if (action === 'execute_swap') {
|
|
426
|
+
this.state.audit('wayfinder_swap', String(result.result).slice(0, 300));
|
|
427
|
+
}
|
|
428
|
+
else if (action === 'strategy') {
|
|
429
|
+
this.state.audit('wayfinder_strategy', `${call.params.strategy}: ${call.params.strategyAction ?? 'status'}`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
351
432
|
// Bunker deploy — the bunker skill persists state internally via its own StateStore,
|
|
352
433
|
// but we audit the event here for the main agent's record
|
|
353
434
|
if (call.skill === 'bunker' && result.success) {
|
package/dist/agent/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/prompt.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export interface PromptContext {
|
|
|
17
17
|
snapshot?: MarketSnapshot;
|
|
18
18
|
conditions?: MarketConditions;
|
|
19
19
|
state?: StateStore;
|
|
20
|
+
/** Override inference cost in wei (from autonomy config) */
|
|
21
|
+
inferenceCostWei?: string;
|
|
22
|
+
/** Full autonomy config for reserve/yield/services sections */
|
|
23
|
+
autonomy?: import('../types.js').AutonomyConfig;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
26
|
* Build the full system prompt for an inference call.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/agent/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/agent/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,aAAa,EAAE,cAAc,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAoJ5D"}
|
package/dist/agent/prompt.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { formatSnapshot } from '../market/index.js';
|
|
13
13
|
import { formatSurvivalStatus } from '../survival/index.js';
|
|
14
14
|
import { ClawnchTrader, ClawnchOrders } from '@clawnch/clawncher-sdk';
|
|
15
|
+
import { INFERENCE_COST_ETH_EQUIV } from '../constants.js';
|
|
15
16
|
/**
|
|
16
17
|
* Build the full system prompt for an inference call.
|
|
17
18
|
* If a market snapshot is available, it's injected as hard data.
|
|
@@ -94,7 +95,7 @@ Don't rush — a bad launch wastes gas and your one deploy slot.`);
|
|
|
94
95
|
if (riskSection) {
|
|
95
96
|
sections.push(riskSection);
|
|
96
97
|
}
|
|
97
|
-
const portfolioSection = buildPortfolioSection(ctx.state);
|
|
98
|
+
const portfolioSection = buildPortfolioSection(ctx.state, ctx.inferenceCostWei);
|
|
98
99
|
if (portfolioSection) {
|
|
99
100
|
sections.push(portfolioSection);
|
|
100
101
|
}
|
|
@@ -117,17 +118,35 @@ Call a skill:
|
|
|
117
118
|
{"skill": "skill_name", "params": {"key": "value"}}
|
|
118
119
|
</tool_call>
|
|
119
120
|
\`\`\``);
|
|
120
|
-
// 11.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
121
|
+
// 11. Reserve management (if configured)
|
|
122
|
+
if (ctx.autonomy?.reserves && snapshot) {
|
|
123
|
+
const reserveSection = buildReserveSection(ctx);
|
|
124
|
+
if (reserveSection) {
|
|
125
|
+
sections.push(reserveSection);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// 12. Signal-based trading strategy (when analytics is enabled)
|
|
129
|
+
if (ctx.autonomy?.analyticsWake) {
|
|
130
|
+
sections.push(buildSignalTradingSection());
|
|
131
|
+
}
|
|
132
|
+
// 13. Claiming policy guidance (from autonomy config)
|
|
133
|
+
if (ctx.autonomy?.claiming && snapshot) {
|
|
134
|
+
const claimSection = buildClaimingSection(ctx.autonomy.claiming, snapshot, ctx.state);
|
|
135
|
+
if (claimSection) {
|
|
136
|
+
sections.push(claimSection);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// 14. Operating rules
|
|
140
|
+
const rules = [
|
|
141
|
+
`- Think before acting. State your reasoning, then use skills.`,
|
|
142
|
+
`- NEVER claim fees just because you can. The claim_fees skill checks profitability for you.`,
|
|
143
|
+
`- Let fees pool up. Claim when the skill tells you it's profitable, or in survival emergencies.`,
|
|
144
|
+
`- Every tx costs gas. Be frugal.`,
|
|
145
|
+
`- Update SOUL.md to remember important decisions and observations.`,
|
|
146
|
+
`- If nothing needs doing, say so and end your turn. Silence is fine.`,
|
|
147
|
+
`- If you receive XMTP messages, respond authentically. Be helpful, concise, and on-brand.`,
|
|
148
|
+
];
|
|
149
|
+
sections.push(`# Rules\n\n${rules.join('\n')}\n- Turn: ${agent.turn}`);
|
|
131
150
|
return sections.join('\n\n---\n\n');
|
|
132
151
|
}
|
|
133
152
|
/**
|
|
@@ -210,29 +229,49 @@ function buildRiskSection(state) {
|
|
|
210
229
|
}
|
|
211
230
|
/**
|
|
212
231
|
* Build a compact portfolio section for the system prompt.
|
|
213
|
-
* Shows positions, P&L, and
|
|
232
|
+
* Shows positions, P&L, gas costs, and net earnings.
|
|
214
233
|
*/
|
|
215
|
-
function buildPortfolioSection(state) {
|
|
234
|
+
function buildPortfolioSection(state, inferenceCostWei) {
|
|
216
235
|
try {
|
|
217
236
|
const trader = new ClawnchTrader(state.asTraderStorage());
|
|
218
237
|
const positions = trader.getPositions().filter(p => parseFloat(p.amount) > 0);
|
|
219
|
-
|
|
238
|
+
const gasSummary = trader.getGasSummary(7 * 24 * 60 * 60 * 1000); // 7-day window
|
|
239
|
+
// Show section if there are positions OR gas costs recorded
|
|
240
|
+
if (positions.length === 0 && gasSummary.txCount === 0)
|
|
220
241
|
return null;
|
|
221
242
|
const lines = [`# Trading Portfolio`];
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
243
|
+
if (positions.length > 0) {
|
|
244
|
+
let totalCost = 0;
|
|
245
|
+
for (const p of positions) {
|
|
246
|
+
const amount = parseFloat(p.amount);
|
|
247
|
+
const cost = amount * p.avgCostEth;
|
|
248
|
+
totalCost += cost;
|
|
249
|
+
const pnlSign = p.realizedPnlEth >= 0 ? '+' : '';
|
|
250
|
+
lines.push(` $${p.symbol}: ${amount.toFixed(2)} tokens | avg cost: ${p.avgCostEth.toExponential(3)} ETH | realized P&L: ${pnlSign}${p.realizedPnlEth.toFixed(6)} ETH | ${p.tradeCount} trades`);
|
|
251
|
+
}
|
|
252
|
+
lines.push(`Total cost basis: ${totalCost.toFixed(6)} ETH`);
|
|
253
|
+
// Recent performance
|
|
254
|
+
const perf24h = trader.getPerformance(24 * 60 * 60 * 1000);
|
|
255
|
+
if (perf24h) {
|
|
256
|
+
const sign = perf24h.changePct >= 0 ? '+' : '';
|
|
257
|
+
lines.push(`24h: ${sign}${perf24h.changePct.toFixed(1)}% (${sign}${perf24h.changeEth.toFixed(6)} ETH)`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
// Gas costs (7-day)
|
|
261
|
+
if (gasSummary.txCount > 0) {
|
|
262
|
+
lines.push(``);
|
|
263
|
+
lines.push(ClawnchTrader.formatGasSummary(gasSummary));
|
|
229
264
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
const sign =
|
|
235
|
-
lines.push(
|
|
265
|
+
// Net P&L (7-day): realized trade P&L + fees claimed - gas costs - inference costs
|
|
266
|
+
const netEarnings = computeNetEarnings(state, gasSummary, inferenceCostWei);
|
|
267
|
+
if (netEarnings !== null) {
|
|
268
|
+
lines.push(``);
|
|
269
|
+
const sign = netEarnings.netEth >= 0 ? '+' : '';
|
|
270
|
+
lines.push(`=== Net P&L (7d) ===`);
|
|
271
|
+
lines.push(`Trade P&L: ${netEarnings.realizedPnlEth >= 0 ? '+' : ''}${netEarnings.realizedPnlEth.toFixed(6)} ETH`);
|
|
272
|
+
lines.push(`Gas costs: -${netEarnings.gasCostEth.toFixed(6)} ETH`);
|
|
273
|
+
lines.push(`Est. inference: -${netEarnings.inferenceCostEth.toFixed(6)} ETH`);
|
|
274
|
+
lines.push(`NET: ${sign}${netEarnings.netEth.toFixed(6)} ETH${netEarnings.netEth < 0 ? ' (LOSING MONEY)' : ''}`);
|
|
236
275
|
}
|
|
237
276
|
lines.push(``, `Use portfolio action=view for full P&L with live pricing.`);
|
|
238
277
|
return lines.join('\n');
|
|
@@ -241,6 +280,37 @@ function buildPortfolioSection(state) {
|
|
|
241
280
|
return null;
|
|
242
281
|
}
|
|
243
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Compute 7-day net earnings: realized trade P&L - gas costs - inference costs.
|
|
285
|
+
*/
|
|
286
|
+
function computeNetEarnings(state, gasSummary, inferenceCostWeiOverride) {
|
|
287
|
+
try {
|
|
288
|
+
const trader = new ClawnchTrader(state.asTraderStorage());
|
|
289
|
+
const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
|
|
290
|
+
// Sum realized P&L from recent trades
|
|
291
|
+
const recentTrades = trader.getTrades().filter(t => t.timestamp >= sevenDaysAgo);
|
|
292
|
+
const positions = trader.getPositions();
|
|
293
|
+
// Approximation: sum realized P&L from positions active in window
|
|
294
|
+
const realizedPnlEth = positions.reduce((sum, p) => sum + p.realizedPnlEth, 0);
|
|
295
|
+
// Estimate inference costs: ~INFERENCE_COST_ETH_EQUIV per trade/skill call
|
|
296
|
+
// Use tx count as proxy for inference calls (each tx typically = 1 inference run)
|
|
297
|
+
const costPerCall = inferenceCostWeiOverride
|
|
298
|
+
? Number(BigInt(inferenceCostWeiOverride)) / 1e18
|
|
299
|
+
: Number(INFERENCE_COST_ETH_EQUIV) / 1e18;
|
|
300
|
+
const inferenceCallEstimate = Math.max(gasSummary.txCount, recentTrades.length) * 2; // ~2 inference calls per tx
|
|
301
|
+
const inferenceCostEth = inferenceCallEstimate * costPerCall;
|
|
302
|
+
const netEth = realizedPnlEth - gasSummary.totalCostEth - inferenceCostEth;
|
|
303
|
+
return {
|
|
304
|
+
realizedPnlEth,
|
|
305
|
+
gasCostEth: gasSummary.totalCostEth,
|
|
306
|
+
inferenceCostEth,
|
|
307
|
+
netEth,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
244
314
|
/**
|
|
245
315
|
* Build the active orders section for the system prompt.
|
|
246
316
|
* Shows pending/triggered orders so the agent knows about them.
|
|
@@ -309,6 +379,119 @@ function buildXmtpSection(agent) {
|
|
|
309
379
|
lines.push(`Users can message you directly. Respond via xmtp skill.`);
|
|
310
380
|
return lines.join('\n');
|
|
311
381
|
}
|
|
382
|
+
/**
|
|
383
|
+
* Build a reserve management section for the prompt.
|
|
384
|
+
* Shows ETH runway, USDC balance, and reserve policy guidance.
|
|
385
|
+
*/
|
|
386
|
+
function buildReserveSection(ctx) {
|
|
387
|
+
const autonomy = ctx.autonomy;
|
|
388
|
+
if (!autonomy?.reserves)
|
|
389
|
+
return null;
|
|
390
|
+
const reservesCfg = autonomy.reserves;
|
|
391
|
+
const snap = ctx.snapshot;
|
|
392
|
+
if (!snap)
|
|
393
|
+
return null;
|
|
394
|
+
const lines = [`# Reserve Management`];
|
|
395
|
+
// ETH runway
|
|
396
|
+
const ethBalanceEth = Number(snap.ethBalance) / 1e18;
|
|
397
|
+
const dailyCost = reservesCfg.dailyCostEth ?? 0.01;
|
|
398
|
+
const runwayDays = dailyCost > 0 ? ethBalanceEth / dailyCost : Infinity;
|
|
399
|
+
lines.push(`ETH balance: ${snap.ethFormatted} ETH`);
|
|
400
|
+
lines.push(`Est. daily cost: ${dailyCost} ETH`);
|
|
401
|
+
lines.push(`Runway: ~${Math.round(runwayDays)} days`);
|
|
402
|
+
if (reservesCfg.targetEthWei) {
|
|
403
|
+
const targetEth = Number(BigInt(reservesCfg.targetEthWei)) / 1e18;
|
|
404
|
+
if (ethBalanceEth < targetEth) {
|
|
405
|
+
lines.push(`WARNING: ETH below target reserve (${targetEth.toFixed(4)} ETH). Consider claiming fees or converting assets.`);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
lines.push(`ETH reserve: OK (target: ${targetEth.toFixed(4)} ETH)`);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (reservesCfg.targetUsdc) {
|
|
412
|
+
lines.push(``);
|
|
413
|
+
const targetUsdc = parseFloat(reservesCfg.targetUsdc);
|
|
414
|
+
if (snap.usdcBalance !== null && snap.usdcBalanceFormatted) {
|
|
415
|
+
const currentUsdc = parseFloat(snap.usdcBalanceFormatted);
|
|
416
|
+
lines.push(`USDC balance: $${snap.usdcBalanceFormatted} (target: $${reservesCfg.targetUsdc})`);
|
|
417
|
+
if (currentUsdc < targetUsdc) {
|
|
418
|
+
const deficit = targetUsdc - currentUsdc;
|
|
419
|
+
lines.push(`WARNING: USDC below target by $${deficit.toFixed(2)}. Consider swapping ETH → USDC to replenish stablecoin reserve.`);
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
lines.push(`USDC reserve: OK`);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
lines.push(`USDC target: $${reservesCfg.targetUsdc}`);
|
|
427
|
+
lines.push(`Check USDC balance with check_balance and swap to maintain reserves if needed.`);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
// Idle capital hint
|
|
431
|
+
if (autonomy.idleCapital) {
|
|
432
|
+
const threshold = autonomy.idleCapital.thresholdEth ?? 0.05;
|
|
433
|
+
const reserveEth = reservesCfg.targetEthWei
|
|
434
|
+
? Number(BigInt(reservesCfg.targetEthWei)) / 1e18
|
|
435
|
+
: dailyCost * 30; // default: 30 days reserve
|
|
436
|
+
const surplus = ethBalanceEth - reserveEth - threshold;
|
|
437
|
+
if (surplus > 0) {
|
|
438
|
+
lines.push(``);
|
|
439
|
+
lines.push(`IDLE CAPITAL: ~${surplus.toFixed(4)} ETH above reserve + threshold.`);
|
|
440
|
+
lines.push(`Consider deploying to yield via Wayfinder or liquidity positions.`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
return lines.join('\n');
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Build signal-based trading strategy section.
|
|
447
|
+
* Provides the agent with a framework for acting on analytics signals.
|
|
448
|
+
*/
|
|
449
|
+
function buildSignalTradingSection() {
|
|
450
|
+
return [
|
|
451
|
+
`# Signal-Based Trading Strategy`,
|
|
452
|
+
``,
|
|
453
|
+
`Your analytics system monitors on-chain data and produces signals: strong_buy, buy, neutral, sell, strong_sell.`,
|
|
454
|
+
`When the heartbeat wakes you on an analytics signal, it provides specific trading suggestions.`,
|
|
455
|
+
``,
|
|
456
|
+
`General principles:`,
|
|
457
|
+
`- NEVER go all-in on a single signal. Use position sizing (default max: 25% of portfolio per position).`,
|
|
458
|
+
`- Prefer DCA orders over single large buys — spread your entry to reduce timing risk.`,
|
|
459
|
+
`- Set stop losses on new positions to limit downside.`,
|
|
460
|
+
`- Strong signals (strength > 70) warrant larger positions; weak signals (< 40) warrant smaller ones or no action.`,
|
|
461
|
+
`- Always check gas costs vs position size. A 0.001 ETH buy with 0.0005 ETH gas is wasteful.`,
|
|
462
|
+
`- Use manage_orders to create conditional orders. Use uniswap_swap or swap for immediate execution.`,
|
|
463
|
+
`- Record reasoning in SOUL.md so you can track your strategy evolution.`,
|
|
464
|
+
].join('\n');
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Build claiming policy section based on autonomy config.
|
|
468
|
+
* Surfaces suggestClaimAboveWei and maxHoursBetweenClaims as prompt guidance.
|
|
469
|
+
*/
|
|
470
|
+
function buildClaimingSection(claiming, snapshot, state) {
|
|
471
|
+
const lines = [];
|
|
472
|
+
// Suggest claiming when unclaimed fees exceed threshold
|
|
473
|
+
if (claiming.suggestClaimAboveWei) {
|
|
474
|
+
const threshold = BigInt(claiming.suggestClaimAboveWei);
|
|
475
|
+
if (snapshot.unclaimedFeesWeth > threshold) {
|
|
476
|
+
const thresholdEth = Number(threshold) / 1e18;
|
|
477
|
+
const unclaimedEth = Number(snapshot.unclaimedFeesWeth) / 1e18;
|
|
478
|
+
lines.push(`CLAIM OPPORTUNITY: Unclaimed fees (${unclaimedEth.toFixed(6)} WETH) exceed your configured threshold (${thresholdEth.toFixed(6)} WETH). Consider claiming if gas is reasonable.`);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
// Time-based claim nudge
|
|
482
|
+
if (claiming.maxHoursBetweenClaims && state) {
|
|
483
|
+
const survival = state.getSurvival();
|
|
484
|
+
if (survival.lastFeeClaim > 0) {
|
|
485
|
+
const hoursSinceClaim = (Date.now() - survival.lastFeeClaim) / (1000 * 60 * 60);
|
|
486
|
+
if (hoursSinceClaim > claiming.maxHoursBetweenClaims && snapshot.unclaimedFeesWeth > 0n) {
|
|
487
|
+
lines.push(`TIME-BASED CLAIM: ${Math.round(hoursSinceClaim)}h since last claim (max: ${claiming.maxHoursBetweenClaims}h). Consider claiming to keep fees flowing.`);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
if (lines.length === 0)
|
|
492
|
+
return null;
|
|
493
|
+
return `# Claiming Policy\n\n${lines.join('\n')}`;
|
|
494
|
+
}
|
|
312
495
|
function getActionGuidance(conditions, tier) {
|
|
313
496
|
if (tier === 'dead') {
|
|
314
497
|
return 'You are dead. No ETH, no actions. Wait for external funding.';
|