@clawnch/clawtomaton 0.6.0 → 0.8.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.
@@ -0,0 +1,475 @@
1
+ /**
2
+ * Skill: wayfinder — Cross-chain DeFi via Wayfinder Paths.
3
+ *
4
+ * Two tiers:
5
+ * REST (always available): pools, balances, quote, resolve_token
6
+ * CLI (requires Python + wayfinder-paths): execute_swap, strategy
7
+ *
8
+ * Configurable via autonomy.wayfinder in ClawtomatonConfig.
9
+ * Requires WAYFINDER_API_KEY env var or config.autonomy.wayfinder.apiKey.
10
+ */
11
+ import { WayfinderClient } from '@clawnch/clawncher-sdk';
12
+ // ============================================================================
13
+ // Skill Definition
14
+ // ============================================================================
15
+ export const wayfinderSkill = {
16
+ name: 'wayfinder',
17
+ description: [
18
+ 'Cross-chain DeFi via Wayfinder Paths.',
19
+ 'Actions: pools (search DeFi yields), balances (multi-chain portfolio), quote (cross-chain swap quote),',
20
+ 'resolve_token (token lookup), execute_swap (swap via CLI, needs Python), strategy (run strategies, needs Python).',
21
+ 'REST actions are always available. CLI actions require Python 3.12+ and wayfinder-paths.',
22
+ ].join(' '),
23
+ parameters: [
24
+ {
25
+ name: 'action',
26
+ type: 'string',
27
+ description: 'Action: "pools", "balances", "quote", "resolve_token", "execute_swap", "strategy"',
28
+ required: true,
29
+ },
30
+ {
31
+ name: 'protocol',
32
+ type: 'string',
33
+ description: 'For pools: filter by protocol (e.g. "moonwell", "aave", "morpho")',
34
+ required: false,
35
+ },
36
+ {
37
+ name: 'chainId',
38
+ type: 'number',
39
+ description: 'Chain ID filter. Default: 8453 (Base)',
40
+ required: false,
41
+ },
42
+ {
43
+ name: 'address',
44
+ type: 'address',
45
+ description: 'Wallet address for balances. Defaults to agent wallet.',
46
+ required: false,
47
+ },
48
+ {
49
+ name: 'fromToken',
50
+ type: 'string',
51
+ description: 'Source token address or ID (for quote/execute_swap)',
52
+ required: false,
53
+ },
54
+ {
55
+ name: 'toToken',
56
+ type: 'string',
57
+ description: 'Destination token address or ID (for quote/execute_swap)',
58
+ required: false,
59
+ },
60
+ {
61
+ name: 'amount',
62
+ type: 'string',
63
+ description: 'Amount in raw units for quote, or human-readable for execute_swap',
64
+ required: false,
65
+ },
66
+ {
67
+ name: 'fromChain',
68
+ type: 'number',
69
+ description: 'Source chain ID for quote (default: 8453)',
70
+ required: false,
71
+ },
72
+ {
73
+ name: 'toChain',
74
+ type: 'number',
75
+ description: 'Destination chain ID for quote (default: 8453)',
76
+ required: false,
77
+ },
78
+ {
79
+ name: 'query',
80
+ type: 'string',
81
+ description: 'Token query for resolve_token (name, symbol, address, or CoinGecko ID)',
82
+ required: false,
83
+ },
84
+ {
85
+ name: 'strategy',
86
+ type: 'string',
87
+ description: 'Strategy name for strategy action (e.g. "basis_trading_strategy")',
88
+ required: false,
89
+ },
90
+ {
91
+ name: 'strategyAction',
92
+ type: 'string',
93
+ description: 'Strategy sub-action: "status", "deposit", "update", "exit", "withdraw", "analyze", "quote"',
94
+ required: false,
95
+ },
96
+ {
97
+ name: 'mainTokenAmount',
98
+ type: 'number',
99
+ description: 'Main token amount for strategy deposit',
100
+ required: false,
101
+ },
102
+ {
103
+ name: 'slippage',
104
+ type: 'number',
105
+ description: 'Slippage tolerance for quote (e.g. 0.005 for 0.5%). Default: 0.005',
106
+ required: false,
107
+ },
108
+ {
109
+ name: 'walletLabel',
110
+ type: 'string',
111
+ description: 'Wallet label for CLI operations (must match wayfinder config.json). Default: "main"',
112
+ required: false,
113
+ },
114
+ {
115
+ name: 'minApy',
116
+ type: 'number',
117
+ description: 'For pools: minimum supply APY filter (e.g. 2.0 for 2%)',
118
+ required: false,
119
+ },
120
+ {
121
+ name: 'tokenSymbol',
122
+ type: 'string',
123
+ description: 'For pools: filter by underlying token symbol (e.g. "WETH", "USDC")',
124
+ required: false,
125
+ },
126
+ ],
127
+ execute: async (params, ctx) => {
128
+ try {
129
+ const action = params.action;
130
+ if (!action) {
131
+ return { callId: '', success: false, result: null, error: 'Missing action parameter.' };
132
+ }
133
+ const client = getWayfinderClient(ctx);
134
+ if (!client) {
135
+ return {
136
+ callId: '',
137
+ success: false,
138
+ result: null,
139
+ error: 'Wayfinder not configured. Set WAYFINDER_API_KEY env var or autonomy.wayfinder.apiKey in config.',
140
+ };
141
+ }
142
+ switch (action) {
143
+ case 'pools':
144
+ return handlePools(client, params, ctx);
145
+ case 'balances':
146
+ return handleBalances(client, params, ctx);
147
+ case 'quote':
148
+ return handleQuote(client, params, ctx);
149
+ case 'resolve_token':
150
+ return handleResolveToken(client, params);
151
+ case 'execute_swap':
152
+ return handleExecuteSwap(client, params);
153
+ case 'strategy':
154
+ return handleStrategy(client, params);
155
+ default:
156
+ return {
157
+ callId: '',
158
+ success: false,
159
+ result: null,
160
+ error: `Unknown action: "${action}". Use: pools, balances, quote, resolve_token, execute_swap, strategy`,
161
+ };
162
+ }
163
+ }
164
+ catch (err) {
165
+ return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
166
+ }
167
+ },
168
+ };
169
+ // ============================================================================
170
+ // Client factory
171
+ // ============================================================================
172
+ function getWayfinderClient(ctx) {
173
+ // Try autonomy config first, then env var
174
+ const apiKey = ctx.__wayfinderApiKey
175
+ ?? process.env.WAYFINDER_API_KEY;
176
+ if (!apiKey)
177
+ return null;
178
+ return new WayfinderClient({ apiKey });
179
+ }
180
+ // ============================================================================
181
+ // Action handlers
182
+ // ============================================================================
183
+ async function handlePools(client, params, ctx) {
184
+ const chainId = params.chainId ?? 8453;
185
+ const protocol = params.protocol;
186
+ const minApy = params.minApy;
187
+ const tokenSymbol = params.tokenSymbol?.toUpperCase();
188
+ let pools = await client.getPools(chainId, protocol);
189
+ // Filter by minimum APY
190
+ if (minApy !== undefined) {
191
+ pools = pools.filter(p => p.supplyApy >= minApy);
192
+ }
193
+ // Filter by token symbol
194
+ if (tokenSymbol) {
195
+ pools = pools.filter(p => p.tokenSymbol.toUpperCase() === tokenSymbol);
196
+ }
197
+ // Sort by supply APY descending
198
+ pools.sort((a, b) => b.supplyApy - a.supplyApy);
199
+ // Limit output
200
+ const topPools = pools.slice(0, 20);
201
+ if (topPools.length === 0) {
202
+ const filters = [];
203
+ if (protocol)
204
+ filters.push(`protocol=${protocol}`);
205
+ if (minApy)
206
+ filters.push(`minApy=${minApy}%`);
207
+ if (tokenSymbol)
208
+ filters.push(`token=${tokenSymbol}`);
209
+ return {
210
+ callId: '',
211
+ success: true,
212
+ result: `No pools found matching filters: ${filters.join(', ') || 'none'}. Try broadening your search.`,
213
+ };
214
+ }
215
+ const lines = [`DeFi Pools (chain: ${chainId}, showing top ${topPools.length} of ${pools.length})`, ''];
216
+ for (const p of topPools) {
217
+ const tvl = p.totalSupplyUsd > 1_000_000
218
+ ? `$${(p.totalSupplyUsd / 1_000_000).toFixed(1)}M`
219
+ : `$${(p.totalSupplyUsd / 1_000).toFixed(0)}K`;
220
+ lines.push(`${p.protocol} | ${p.tokenSymbol} | APY: ${p.supplyApy.toFixed(2)}% | TVL: ${tvl} | ${p.address}`);
221
+ }
222
+ return { callId: '', success: true, result: lines.join('\n') };
223
+ }
224
+ async function handleBalances(client, params, ctx) {
225
+ const address = params.address ?? ctx.identity.address;
226
+ const balances = await client.getBalances(address);
227
+ const tokens = balances.tokens.filter(t => t.balanceUsd > 0.01);
228
+ if (tokens.length === 0) {
229
+ return { callId: '', success: true, result: `No token balances found for ${address}.` };
230
+ }
231
+ // Sort by USD value descending
232
+ tokens.sort((a, b) => b.balanceUsd - a.balanceUsd);
233
+ const lines = [
234
+ `Multi-chain Balances for ${address}`,
235
+ `Total: $${balances.totalValueUsd.toFixed(2)}`,
236
+ '',
237
+ ];
238
+ for (const t of tokens) {
239
+ lines.push(`${t.chainName} | ${t.symbol}: ${t.balanceFormatted} ($${t.balanceUsd.toFixed(2)})`);
240
+ }
241
+ return {
242
+ callId: '',
243
+ success: true,
244
+ result: lines.join('\n'),
245
+ metadata: {
246
+ totalValueUsd: balances.totalValueUsd,
247
+ tokenCount: tokens.length,
248
+ },
249
+ };
250
+ }
251
+ async function handleQuote(client, params, ctx) {
252
+ const fromToken = params.fromToken;
253
+ const toToken = params.toToken;
254
+ const amount = params.amount;
255
+ if (!fromToken || !toToken || !amount) {
256
+ return {
257
+ callId: '',
258
+ success: false,
259
+ result: null,
260
+ error: 'Missing required params for quote: fromToken, toToken, amount (in raw units / wei)',
261
+ };
262
+ }
263
+ const fromChain = params.fromChain ?? 8453;
264
+ const toChain = params.toChain ?? 8453;
265
+ const slippage = params.slippage;
266
+ const quote = await client.quoteSwap({
267
+ fromToken,
268
+ toToken,
269
+ fromChain,
270
+ toChain,
271
+ fromWallet: ctx.identity.address,
272
+ amount,
273
+ slippage,
274
+ });
275
+ if (!quote.bestQuote) {
276
+ return {
277
+ callId: '',
278
+ success: true,
279
+ result: `No routes found for ${fromToken} → ${toToken} (${fromChain} → ${toChain}). Try different tokens or amounts.`,
280
+ };
281
+ }
282
+ const best = quote.bestQuote;
283
+ const lines = [
284
+ `Cross-chain Swap Quote`,
285
+ `Route: ${best.provider}`,
286
+ `Input: ${best.inputAmount} (${best.nativeInput ? 'native' : 'token'}) — $${best.inputAmountUsd.toFixed(2)}`,
287
+ `Output: ${best.outputAmount} (${best.nativeOutput ? 'native' : 'token'}) — $${best.outputAmountUsd.toFixed(2)}`,
288
+ `Fees: $${best.feeEstimate.feeTotalUsd.toFixed(2)}`,
289
+ ];
290
+ if (best.gasEstimate) {
291
+ lines.push(`Gas estimate: ${best.gasEstimate}`);
292
+ }
293
+ if (quote.quotes.length > 1) {
294
+ lines.push('', `Compared ${quote.quoteCount} routes. Other providers:`);
295
+ for (const q of quote.quotes.slice(0, 5)) {
296
+ if (q.provider === best.provider)
297
+ continue;
298
+ if (q.error) {
299
+ lines.push(` ${q.provider}: failed — ${q.error}`);
300
+ }
301
+ else {
302
+ lines.push(` ${q.provider}: output ${q.outputAmount} ($${q.outputAmountUsd.toFixed(2)})`);
303
+ }
304
+ }
305
+ }
306
+ return {
307
+ callId: '',
308
+ success: true,
309
+ result: lines.join('\n'),
310
+ metadata: {
311
+ provider: best.provider,
312
+ outputAmount: best.outputAmount,
313
+ outputAmountUsd: best.outputAmountUsd,
314
+ hasCalldata: !!best.calldata,
315
+ },
316
+ };
317
+ }
318
+ async function handleResolveToken(client, params) {
319
+ const query = params.query;
320
+ if (!query) {
321
+ return { callId: '', success: false, result: null, error: 'Missing query parameter for resolve_token.' };
322
+ }
323
+ const chainId = params.chainId;
324
+ const token = await client.resolveToken(query, chainId);
325
+ const lines = [
326
+ `Token: ${token.name} (${token.symbol})`,
327
+ `Address: ${token.address}`,
328
+ `Chain: ${token.chainId}`,
329
+ `Decimals: ${token.decimals}`,
330
+ ];
331
+ if (token.priceUsd !== undefined) {
332
+ lines.push(`Price: $${token.priceUsd.toFixed(6)}`);
333
+ }
334
+ if (token.priceChange24h !== undefined) {
335
+ lines.push(`24h change: ${token.priceChange24h >= 0 ? '+' : ''}${token.priceChange24h.toFixed(2)}%`);
336
+ }
337
+ if (token.marketCapUsd !== undefined) {
338
+ const mcap = token.marketCapUsd > 1_000_000
339
+ ? `$${(token.marketCapUsd / 1_000_000).toFixed(1)}M`
340
+ : `$${(token.marketCapUsd / 1_000).toFixed(0)}K`;
341
+ lines.push(`Market cap: ${mcap}`);
342
+ }
343
+ if (token.coingeckoId) {
344
+ lines.push(`CoinGecko ID: ${token.coingeckoId}`);
345
+ }
346
+ return {
347
+ callId: '',
348
+ success: true,
349
+ result: lines.join('\n'),
350
+ metadata: {
351
+ address: token.address,
352
+ symbol: token.symbol,
353
+ chainId: token.chainId,
354
+ priceUsd: token.priceUsd,
355
+ },
356
+ };
357
+ }
358
+ async function handleExecuteSwap(client, params) {
359
+ // Check Python availability first
360
+ const pyStatus = await client.checkPython();
361
+ if (!pyStatus.wayfinderInstalled) {
362
+ return {
363
+ callId: '',
364
+ success: false,
365
+ result: null,
366
+ error: pyStatus.available
367
+ ? 'wayfinder-paths not installed. Install with: pip3 install wayfinder-paths'
368
+ : 'Python 3 not found. Install Python 3.12+ first, then: pip3 install wayfinder-paths',
369
+ };
370
+ }
371
+ const fromToken = params.fromToken;
372
+ const toToken = params.toToken;
373
+ const amount = params.amount;
374
+ const walletLabel = params.walletLabel ?? 'main';
375
+ if (!fromToken || !toToken || !amount) {
376
+ return {
377
+ callId: '',
378
+ success: false,
379
+ result: null,
380
+ error: 'Missing required params for execute_swap: fromToken, toToken, amount (human-readable)',
381
+ };
382
+ }
383
+ const slippageBps = params.slippage
384
+ ? Math.round(params.slippage * 10000)
385
+ : undefined;
386
+ const result = await client.executeSwap({
387
+ kind: 'swap',
388
+ walletLabel,
389
+ amount,
390
+ fromToken,
391
+ toToken,
392
+ slippageBps,
393
+ chainId: params.chainId,
394
+ });
395
+ if (!result.ok) {
396
+ return { callId: '', success: false, result: null, error: `Swap failed: ${result.error}` };
397
+ }
398
+ const r = result.result;
399
+ const effects = Object.values(r.effects);
400
+ const txHashes = effects.map(e => e.txnHash).filter(Boolean);
401
+ const lines = [
402
+ `Swap executed via Wayfinder CLI`,
403
+ `Status: ${r.status}`,
404
+ `Preview: ${r.preview}`,
405
+ `Sender: ${r.sender}`,
406
+ `Recipient: ${r.recipient}`,
407
+ ];
408
+ for (const e of effects) {
409
+ lines.push(`TX: ${e.txnHash} (chain: ${e.chainId})`);
410
+ if (e.explorerUrl)
411
+ lines.push(`Explorer: ${e.explorerUrl}`);
412
+ }
413
+ return {
414
+ callId: '',
415
+ success: true,
416
+ result: lines.join('\n'),
417
+ metadata: {
418
+ txHash: txHashes[0],
419
+ txHashes,
420
+ status: r.status,
421
+ },
422
+ };
423
+ }
424
+ async function handleStrategy(client, params) {
425
+ // Check Python availability first
426
+ const pyStatus = await client.checkPython();
427
+ if (!pyStatus.wayfinderInstalled) {
428
+ return {
429
+ callId: '',
430
+ success: false,
431
+ result: null,
432
+ error: pyStatus.available
433
+ ? 'wayfinder-paths not installed. Install with: pip3 install wayfinder-paths'
434
+ : 'Python 3 not found. Install Python 3.12+ first, then: pip3 install wayfinder-paths',
435
+ };
436
+ }
437
+ const strategyName = params.strategy;
438
+ const strategyAction = params.strategyAction ?? 'status';
439
+ // If no strategy name, list available strategies
440
+ if (!strategyName) {
441
+ const strategies = await client.listStrategies();
442
+ if (strategies.length === 0) {
443
+ return { callId: '', success: true, result: 'No strategies available. Check wayfinder-paths installation.' };
444
+ }
445
+ const lines = ['Available Wayfinder Strategies:', ''];
446
+ for (const s of strategies) {
447
+ lines.push(` ${s.name}${s.description ? `: ${s.description}` : ''}`);
448
+ if (s.riskLevel !== 'unknown')
449
+ lines.push(` Risk: ${s.riskLevel} | Chains: ${s.chains.join(', ')}`);
450
+ }
451
+ return { callId: '', success: true, result: lines.join('\n') };
452
+ }
453
+ const result = await client.runStrategy({
454
+ strategy: strategyName,
455
+ action: strategyAction,
456
+ mainTokenAmount: params.mainTokenAmount,
457
+ walletLabel: params.walletLabel ?? 'main',
458
+ });
459
+ if (!result.success) {
460
+ return { callId: '', success: false, result: null, error: `Strategy ${strategyAction} failed: ${result.error}` };
461
+ }
462
+ const output = typeof result.output === 'string'
463
+ ? result.output
464
+ : JSON.stringify(result.output, null, 2);
465
+ return {
466
+ callId: '',
467
+ success: true,
468
+ result: `Strategy: ${strategyName}\nAction: ${strategyAction}\n\n${output}`,
469
+ metadata: {
470
+ strategy: strategyName,
471
+ action: strategyAction,
472
+ },
473
+ };
474
+ }
475
+ //# sourceMappingURL=wayfinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wayfinder.js","sourceRoot":"","sources":["../../src/skills/wayfinder.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,18 @@
9
9
  */
10
10
  import type { PublicClient, Address } from 'viem';
11
11
  import type { StateStore } from '../state/index.js';
12
- import type { SurvivalState, SurvivalTier } from '../types.js';
13
- export declare function determineTier(ethBalance: bigint): SurvivalTier;
12
+ import type { SurvivalState, SurvivalTier, AutonomyConfig } from '../types.js';
13
+ /**
14
+ * Determine survival tier from ETH balance.
15
+ * Accepts optional overrides from AutonomyConfig.
16
+ */
17
+ export declare function determineTier(ethBalance: bigint, autonomy?: AutonomyConfig): SurvivalTier;
14
18
  export declare class SurvivalMonitor {
15
19
  private publicClient;
16
20
  private address;
17
21
  private state;
18
- constructor(publicClient: PublicClient, address: Address, state: StateStore);
22
+ private autonomy?;
23
+ constructor(publicClient: PublicClient, address: Address, state: StateStore, autonomy?: AutonomyConfig | undefined);
19
24
  /**
20
25
  * Check current ETH balance, update tier, persist to state.
21
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/survival/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO/D,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAK9D;AAMD,qBAAa,eAAe;IAExB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;gBAFL,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU;IAG3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;IAyBrC;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IAI9D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAOtF;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAIlD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAQrC;AAmDD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAcjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/survival/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO/E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,YAAY,CAMzF;AAMD,qBAAa,eAAe;IAExB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ,CAAC;gBAHT,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,cAAc,YAAA;IAGnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;IAyBrC;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IAI9D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAOtF;;;OAGG;IACH,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAIlD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAQrC;AAmDD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAcjE"}
@@ -8,16 +8,21 @@
8
8
  * dead (< 0.0001 ETH) — Agent halts, cannot act
9
9
  */
10
10
  import { formatEther } from 'viem';
11
- import { SURVIVAL_THRESHOLDS } from '../types.js';
11
+ import { getSurvivalThresholds } from '../types.js';
12
12
  // ============================================================================
13
13
  // Tier Determination
14
14
  // ============================================================================
15
- export function determineTier(ethBalance) {
16
- if (ethBalance >= SURVIVAL_THRESHOLDS.normal)
15
+ /**
16
+ * Determine survival tier from ETH balance.
17
+ * Accepts optional overrides from AutonomyConfig.
18
+ */
19
+ export function determineTier(ethBalance, autonomy) {
20
+ const thresholds = getSurvivalThresholds(autonomy);
21
+ if (ethBalance >= thresholds.normal)
17
22
  return 'normal';
18
- if (ethBalance >= SURVIVAL_THRESHOLDS.low_compute)
23
+ if (ethBalance >= thresholds.low_compute)
19
24
  return 'low_compute';
20
- if (ethBalance >= SURVIVAL_THRESHOLDS.critical)
25
+ if (ethBalance >= thresholds.critical)
21
26
  return 'critical';
22
27
  return 'dead';
23
28
  }
@@ -28,17 +33,19 @@ export class SurvivalMonitor {
28
33
  publicClient;
29
34
  address;
30
35
  state;
31
- constructor(publicClient, address, state) {
36
+ autonomy;
37
+ constructor(publicClient, address, state, autonomy) {
32
38
  this.publicClient = publicClient;
33
39
  this.address = address;
34
40
  this.state = state;
41
+ this.autonomy = autonomy;
35
42
  }
36
43
  /**
37
44
  * Check current ETH balance, update tier, persist to state.
38
45
  */
39
46
  async check() {
40
47
  const ethBalance = await this.publicClient.getBalance({ address: this.address });
41
- const tier = determineTier(ethBalance);
48
+ const tier = determineTier(ethBalance, this.autonomy);
42
49
  const prev = this.state.getSurvival();
43
50
  const survival = {
44
51
  ...prev,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/survival/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/survival/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawnch/clawtomaton",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Autonomous AI agent framework for Base — 14 skills for trading, liquidity, token launches, fee claiming, risk management, and self-sustaining operation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",