@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.
Files changed (41) hide show
  1. package/dist/agent/index.d.ts +5 -0
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +92 -11
  4. package/dist/agent/index.js.map +1 -1
  5. package/dist/agent/prompt.d.ts +4 -0
  6. package/dist/agent/prompt.d.ts.map +1 -1
  7. package/dist/agent/prompt.js +211 -28
  8. package/dist/agent/prompt.js.map +1 -1
  9. package/dist/constants.d.ts +17 -0
  10. package/dist/constants.d.ts.map +1 -1
  11. package/dist/constants.js +21 -0
  12. package/dist/constants.js.map +1 -1
  13. package/dist/heartbeat/index.d.ts +13 -0
  14. package/dist/heartbeat/index.d.ts.map +1 -1
  15. package/dist/heartbeat/index.js +245 -20
  16. package/dist/heartbeat/index.js.map +1 -1
  17. package/dist/market/index.d.ts +12 -1
  18. package/dist/market/index.d.ts.map +1 -1
  19. package/dist/market/index.js +34 -4
  20. package/dist/market/index.js.map +1 -1
  21. package/dist/skills/index.d.ts +2 -1
  22. package/dist/skills/index.d.ts.map +1 -1
  23. package/dist/skills/index.js +5 -1
  24. package/dist/skills/index.js.map +1 -1
  25. package/dist/skills/wayfinder.d.ts +13 -0
  26. package/dist/skills/wayfinder.d.ts.map +1 -0
  27. package/dist/skills/wayfinder.js +475 -0
  28. package/dist/skills/wayfinder.js.map +1 -0
  29. package/dist/state/index.d.ts +3 -1
  30. package/dist/state/index.d.ts.map +1 -1
  31. package/dist/state/index.js +16 -0
  32. package/dist/state/index.js.map +1 -1
  33. package/dist/survival/index.d.ts +8 -3
  34. package/dist/survival/index.d.ts.map +1 -1
  35. package/dist/survival/index.js +14 -7
  36. package/dist/survival/index.js.map +1 -1
  37. package/dist/types.d.ts +263 -0
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js +13 -0
  40. package/dist/types.js.map +1 -1
  41. package/package.json +2 -2
@@ -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;AAY/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;IAkDrC;;;OAGG;IACG,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgKhD;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqK9B;;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"}
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"}
@@ -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 MAX_TOOL_CALLS_PER_TURN = 5;
24
- const MAX_TURNS_PER_RUN = 20;
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
- for (let i = 0; i < MAX_TURNS_PER_RUN; i++) {
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 every 5 turns (to catch balance changes from txs)
142
- if (i > 0 && i % 5 === 0) {
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, MAX_TOOL_CALLS_PER_TURN)) {
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) {
@@ -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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"}
@@ -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;AAIpD,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;CACpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA8H5D"}
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"}
@@ -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. Operating rules
121
- sections.push(`# Rules
122
-
123
- - Think before acting. State your reasoning, then use skills.
124
- - NEVER claim fees just because you can. The claim_fees skill checks profitability for you.
125
- - Let fees pool up. Claim when the skill tells you it's profitable, or in survival emergencies.
126
- - Every tx costs gas. Be frugal.
127
- - Update SOUL.md to remember important decisions and observations.
128
- - If nothing needs doing, say so and end your turn. Silence is fine.
129
- - If you receive XMTP messages, respond authentically. Be helpful, concise, and on-brand.
130
- - Turn: ${agent.turn}`);
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 recent performance.
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
- if (positions.length === 0)
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
- let totalCost = 0;
223
- for (const p of positions) {
224
- const amount = parseFloat(p.amount);
225
- const cost = amount * p.avgCostEth;
226
- totalCost += cost;
227
- const pnlSign = p.realizedPnlEth >= 0 ? '+' : '';
228
- 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`);
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
- lines.push(`Total cost basis: ${totalCost.toFixed(6)} ETH`);
231
- // Recent performance
232
- const perf24h = trader.getPerformance(24 * 60 * 60 * 1000);
233
- if (perf24h) {
234
- const sign = perf24h.changePct >= 0 ? '+' : '';
235
- lines.push(`24h: ${sign}${perf24h.changePct.toFixed(1)}% (${sign}${perf24h.changeEth.toFixed(6)} ETH)`);
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.';