@clawnch/clawtomaton 0.7.0 → 0.8.1

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 (37) hide show
  1. package/dist/agent/index.d.ts.map +1 -1
  2. package/dist/agent/index.js +16 -1
  3. package/dist/agent/index.js.map +1 -1
  4. package/dist/agent/prompt.d.ts.map +1 -1
  5. package/dist/agent/prompt.js +28 -0
  6. package/dist/agent/prompt.js.map +1 -1
  7. package/dist/heartbeat/index.d.ts +24 -4
  8. package/dist/heartbeat/index.d.ts.map +1 -1
  9. package/dist/heartbeat/index.js +146 -6
  10. package/dist/heartbeat/index.js.map +1 -1
  11. package/dist/skills/check-balance.js +1 -1
  12. package/dist/skills/check-balance.js.map +1 -1
  13. package/dist/skills/check-price.d.ts.map +1 -1
  14. package/dist/skills/check-price.js +8 -4
  15. package/dist/skills/check-price.js.map +1 -1
  16. package/dist/skills/clawnx.d.ts +20 -4
  17. package/dist/skills/clawnx.d.ts.map +1 -1
  18. package/dist/skills/clawnx.js +718 -23
  19. package/dist/skills/clawnx.js.map +1 -1
  20. package/dist/skills/deploy.d.ts.map +1 -1
  21. package/dist/skills/deploy.js +10 -0
  22. package/dist/skills/deploy.js.map +1 -1
  23. package/dist/skills/hummingbot.d.ts +27 -0
  24. package/dist/skills/hummingbot.d.ts.map +1 -0
  25. package/dist/skills/hummingbot.js +457 -0
  26. package/dist/skills/hummingbot.js.map +1 -0
  27. package/dist/skills/index.d.ts +3 -1
  28. package/dist/skills/index.d.ts.map +1 -1
  29. package/dist/skills/index.js +9 -1
  30. package/dist/skills/index.js.map +1 -1
  31. package/dist/skills/portfolio.js +1 -1
  32. package/dist/skills/portfolio.js.map +1 -1
  33. package/dist/skills/services.d.ts +18 -0
  34. package/dist/skills/services.d.ts.map +1 -0
  35. package/dist/skills/services.js +409 -0
  36. package/dist/skills/services.js.map +1 -0
  37. package/package.json +2 -1
@@ -0,0 +1,457 @@
1
+ /**
2
+ * Skill: hummingbot — Market making via Hummingbot integration.
3
+ *
4
+ * Hummingbot is an open-source HFT framework (17k+ stars, 40+ exchange connectors).
5
+ * This skill lets the agent manage Hummingbot instances for professional
6
+ * market-making strategies on Clawnch tokens.
7
+ *
8
+ * Integration approach: External engine via Docker/CLI + Hummingbot's API.
9
+ * The agent controls strategy parameters; Hummingbot executes the trades.
10
+ *
11
+ * Supported strategies:
12
+ * - pure_market_making: Provide liquidity with configurable spread/order size
13
+ * - avellaneda_market_making: Optimal market making (Avellaneda-Stoikov model)
14
+ * - grid: Grid trading with defined price levels
15
+ * - twap: Time-weighted average price execution
16
+ *
17
+ * Prerequisites:
18
+ * - Docker installed and running
19
+ * - Hummingbot image: docker pull hummingbot/hummingbot:latest
20
+ * - Or Hummingbot MCP server running locally
21
+ *
22
+ * @see https://github.com/hummingbot/hummingbot
23
+ * @see https://github.com/hummingbot/mcp
24
+ */
25
+ // ============================================================================
26
+ // Hummingbot Docker management
27
+ // ============================================================================
28
+ /** Container name prefix for Hummingbot instances */
29
+ const HB_CONTAINER_PREFIX = 'clawnch-hb';
30
+ /** Regex for valid Docker container names: alphanumeric, dash, underscore */
31
+ const SAFE_NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/;
32
+ /** Regex for valid Ethereum addresses */
33
+ const ETH_ADDRESS_RE = /^0x[0-9a-fA-F]{40}$/;
34
+ /**
35
+ * Sanitize a string for use in shell commands.
36
+ * Only allows Docker-safe characters: alphanumeric, dash, underscore, dot.
37
+ * Throws if the name contains invalid characters.
38
+ */
39
+ function sanitizeName(name) {
40
+ if (!SAFE_NAME_RE.test(name) || name.length > 128) {
41
+ throw new Error(`Invalid name "${name}": must be 1-128 chars, alphanumeric/dash/underscore/dot, start with alphanumeric`);
42
+ }
43
+ return name;
44
+ }
45
+ /**
46
+ * Execute a shell command and return stdout.
47
+ * All arguments must be pre-sanitized before being interpolated into the command.
48
+ */
49
+ async function exec(command) {
50
+ const { execSync } = await import('child_process');
51
+ try {
52
+ return execSync(command, { encoding: 'utf8', timeout: 30000 }).trim();
53
+ }
54
+ catch (err) {
55
+ throw new Error(`Command failed: ${command}\n${err.stderr ?? err.message}`);
56
+ }
57
+ }
58
+ /**
59
+ * Check if Docker is available and Hummingbot image exists.
60
+ */
61
+ async function checkPrerequisites() {
62
+ let docker = false;
63
+ let image = false;
64
+ let mcp = false;
65
+ try {
66
+ await exec('docker info --format "{{.ID}}"');
67
+ docker = true;
68
+ }
69
+ catch { /* Docker not available */ }
70
+ if (docker) {
71
+ try {
72
+ const images = await exec('docker images hummingbot/hummingbot --format "{{.Tag}}"');
73
+ image = images.length > 0;
74
+ }
75
+ catch { /* Image not found */ }
76
+ }
77
+ // Check for MCP server
78
+ try {
79
+ const response = await fetch('http://localhost:8000/health', { signal: AbortSignal.timeout(2000) });
80
+ mcp = response.ok;
81
+ }
82
+ catch { /* MCP not running */ }
83
+ return { docker, image, mcp };
84
+ }
85
+ /**
86
+ * Generate a Hummingbot strategy config file content.
87
+ */
88
+ function generateStrategyConfig(strategy, params, tokenAddress, walletAddress) {
89
+ const base = {
90
+ strategy,
91
+ exchange: 'uniswap_base_base',
92
+ market: `${tokenAddress}-WETH`,
93
+ };
94
+ switch (strategy) {
95
+ case 'pure_market_making':
96
+ return yamlify({
97
+ ...base,
98
+ bid_spread: params.bid_spread ?? 0.01,
99
+ ask_spread: params.ask_spread ?? 0.01,
100
+ order_amount: params.order_amount ?? 0.001,
101
+ order_refresh_time: params.order_refresh_time ?? 30,
102
+ inventory_skew_enabled: true,
103
+ inventory_target_base_pct: params.inventory_target ?? 0.5,
104
+ filled_order_delay: 10,
105
+ });
106
+ case 'avellaneda_market_making':
107
+ return yamlify({
108
+ ...base,
109
+ risk_factor: params.risk_factor ?? 0.5,
110
+ order_amount: params.order_amount ?? 0.001,
111
+ order_refresh_time: params.order_refresh_time ?? 10,
112
+ inventory_target_base_pct: params.inventory_target ?? 0.5,
113
+ min_spread: params.min_spread ?? 0.002,
114
+ max_spread: params.max_spread ?? 0.05,
115
+ vol_to_spread_multiplier: params.vol_multiplier ?? 1.0,
116
+ execution_timeframe: 'infinite',
117
+ });
118
+ case 'grid':
119
+ return yamlify({
120
+ ...base,
121
+ n_levels: params.levels ?? 5,
122
+ grid_price_ceiling: params.price_ceiling ?? 0,
123
+ grid_price_floor: params.price_floor ?? 0,
124
+ order_amount: params.order_amount ?? 0.001,
125
+ order_refresh_time: params.order_refresh_time ?? 300,
126
+ start_order_spread: params.start_spread ?? 0.01,
127
+ });
128
+ case 'twap':
129
+ return yamlify({
130
+ ...base,
131
+ trade_side: params.side ?? 'buy',
132
+ target_asset_amount: params.total_amount ?? 0.01,
133
+ order_step_size: params.step_size ?? 0.001,
134
+ order_delay_time: params.delay_seconds ?? 60,
135
+ is_time_span_execution: true,
136
+ cancel_order_wait_time: params.cancel_wait ?? 30,
137
+ });
138
+ default:
139
+ return yamlify(base);
140
+ }
141
+ }
142
+ /** Simple YAML serializer for config objects */
143
+ function yamlify(obj) {
144
+ const lines = [];
145
+ for (const [key, value] of Object.entries(obj)) {
146
+ if (value === undefined || value === null)
147
+ continue;
148
+ if (typeof value === 'boolean') {
149
+ lines.push(`${key}: ${value ? 'true' : 'false'}`);
150
+ }
151
+ else if (typeof value === 'number') {
152
+ lines.push(`${key}: ${value}`);
153
+ }
154
+ else {
155
+ lines.push(`${key}: "${value}"`);
156
+ }
157
+ }
158
+ return lines.join('\n');
159
+ }
160
+ /**
161
+ * List running Hummingbot instances managed by Clawtomaton.
162
+ */
163
+ async function listInstances() {
164
+ try {
165
+ const output = await exec(`docker ps -a --filter "name=${HB_CONTAINER_PREFIX}" --format "{{.Names}}|{{.Status}}|{{.CreatedAt}}"`);
166
+ if (!output)
167
+ return [];
168
+ return output.split('\n').filter(Boolean).map(line => {
169
+ const [name, status, created] = line.split('|');
170
+ return { name, status, created };
171
+ });
172
+ }
173
+ catch {
174
+ return [];
175
+ }
176
+ }
177
+ // ============================================================================
178
+ // Skill definition
179
+ // ============================================================================
180
+ export const hummingbotSkill = {
181
+ name: 'hummingbot',
182
+ description: 'Market making via Hummingbot. Start/stop/configure professional trading bots for Clawnch tokens. ' +
183
+ 'Strategies: pure_market_making, avellaneda_market_making (optimal), grid, twap. ' +
184
+ 'Requires Docker with hummingbot/hummingbot image, or Hummingbot MCP server.',
185
+ parameters: [
186
+ {
187
+ name: 'action',
188
+ type: 'string',
189
+ description: 'Action: "status" (check prerequisites + running instances), "start" (launch a strategy), ' +
190
+ '"stop" (stop an instance), "list" (list running instances), "logs" (get instance logs), "configure" (generate strategy config).',
191
+ required: true,
192
+ },
193
+ {
194
+ name: 'strategy',
195
+ type: 'string',
196
+ description: 'Strategy name for start/configure: "pure_market_making" (simple spread), ' +
197
+ '"avellaneda_market_making" (optimal, Avellaneda-Stoikov model), "grid" (grid trading), "twap" (time-weighted execution).',
198
+ required: false,
199
+ },
200
+ {
201
+ name: 'token_address',
202
+ type: 'string',
203
+ description: 'Token address to market-make. Uses agent\'s deployed token by default.',
204
+ required: false,
205
+ },
206
+ {
207
+ name: 'instance_name',
208
+ type: 'string',
209
+ description: 'Instance name for stop/logs. Auto-generated if not provided for start.',
210
+ required: false,
211
+ },
212
+ {
213
+ name: 'bid_spread',
214
+ type: 'number',
215
+ description: 'Bid spread as decimal (0.01 = 1%). Default: 0.01.',
216
+ required: false,
217
+ },
218
+ {
219
+ name: 'ask_spread',
220
+ type: 'number',
221
+ description: 'Ask spread as decimal (0.01 = 1%). Default: 0.01.',
222
+ required: false,
223
+ },
224
+ {
225
+ name: 'order_amount',
226
+ type: 'string',
227
+ description: 'Order size in base token (e.g. "0.001" ETH). Default: 0.001.',
228
+ required: false,
229
+ },
230
+ {
231
+ name: 'risk_factor',
232
+ type: 'number',
233
+ description: 'Risk factor for Avellaneda strategy (0-1). Lower = wider spreads, lower risk. Default: 0.5.',
234
+ required: false,
235
+ },
236
+ {
237
+ name: 'levels',
238
+ type: 'number',
239
+ description: 'Number of grid levels for grid strategy. Default: 5.',
240
+ required: false,
241
+ },
242
+ ],
243
+ execute: async (params, ctx) => {
244
+ try {
245
+ const action = params.action;
246
+ switch (action) {
247
+ // ================================================================
248
+ // Status: check prerequisites and running instances
249
+ // ================================================================
250
+ case 'status': {
251
+ const prereqs = await checkPrerequisites();
252
+ const instances = prereqs.docker ? await listInstances() : [];
253
+ const lines = [
254
+ 'Hummingbot Status:',
255
+ ` Docker: ${prereqs.docker ? 'available' : 'NOT FOUND — install Docker to use Hummingbot'}`,
256
+ ` Image: ${prereqs.image ? 'hummingbot/hummingbot installed' : 'NOT FOUND — run: docker pull hummingbot/hummingbot:latest'}`,
257
+ ` MCP Server: ${prereqs.mcp ? 'running at localhost:8000' : 'not running'}`,
258
+ ` Active instances: ${instances.length}`,
259
+ ];
260
+ if (instances.length > 0) {
261
+ lines.push('');
262
+ lines.push('Running instances:');
263
+ for (const inst of instances) {
264
+ lines.push(` ${inst.name}: ${inst.status} (created ${inst.created})`);
265
+ }
266
+ }
267
+ if (!prereqs.docker && !prereqs.mcp) {
268
+ lines.push('');
269
+ lines.push('To get started:');
270
+ lines.push(' 1. Install Docker: https://docs.docker.com/get-docker/');
271
+ lines.push(' 2. Pull image: docker pull hummingbot/hummingbot:latest');
272
+ lines.push(' 3. Or install Hummingbot MCP: https://github.com/hummingbot/mcp');
273
+ }
274
+ return { callId: '', success: true, result: lines.join('\n') };
275
+ }
276
+ // ================================================================
277
+ // Start: launch a market-making instance
278
+ // ================================================================
279
+ case 'start': {
280
+ const strategy = params.strategy;
281
+ if (!strategy) {
282
+ return { callId: '', success: false, result: null, error: 'strategy is required for start. Options: pure_market_making, avellaneda_market_making, grid, twap.' };
283
+ }
284
+ const validStrategies = ['pure_market_making', 'avellaneda_market_making', 'grid', 'twap'];
285
+ if (!validStrategies.includes(strategy)) {
286
+ return { callId: '', success: false, result: null, error: `Invalid strategy "${strategy}". Valid: ${validStrategies.join(', ')}` };
287
+ }
288
+ const prereqs = await checkPrerequisites();
289
+ if (!prereqs.docker) {
290
+ return { callId: '', success: false, result: null, error: 'Docker not available. Install Docker first or start the Hummingbot MCP server.' };
291
+ }
292
+ if (!prereqs.image) {
293
+ return { callId: '', success: false, result: null, error: 'Hummingbot image not found. Run: docker pull hummingbot/hummingbot:latest' };
294
+ }
295
+ const tokenAddr = params.token_address ?? ctx.identity.tokenAddress;
296
+ if (!tokenAddr) {
297
+ return { callId: '', success: false, result: null, error: 'No token address. Deploy a token first or specify token_address.' };
298
+ }
299
+ if (!ETH_ADDRESS_RE.test(tokenAddr)) {
300
+ return { callId: '', success: false, result: null, error: `Invalid token address: "${tokenAddr}". Must be a 0x-prefixed 40-hex-char address.` };
301
+ }
302
+ if (!ctx.identity.address || !ETH_ADDRESS_RE.test(ctx.identity.address)) {
303
+ return { callId: '', success: false, result: null, error: 'Agent identity has no valid wallet address.' };
304
+ }
305
+ const rawInstanceName = params.instance_name ??
306
+ `${HB_CONTAINER_PREFIX}-${strategy.replace(/_/g, '-')}-${Date.now().toString(36)}`;
307
+ let instanceName;
308
+ try {
309
+ instanceName = sanitizeName(rawInstanceName);
310
+ }
311
+ catch (err) {
312
+ return { callId: '', success: false, result: null, error: err.message };
313
+ }
314
+ // Generate strategy config
315
+ const config = generateStrategyConfig(strategy, params, tokenAddr, ctx.identity.address);
316
+ // Write config to temp file and mount into container
317
+ const { writeFileSync, mkdirSync } = await import('fs');
318
+ const { join } = await import('path');
319
+ const configDir = join(process.env.HOME ?? '/tmp', '.clawncher', 'hummingbot', instanceName);
320
+ mkdirSync(configDir, { recursive: true });
321
+ writeFileSync(join(configDir, `${strategy}.yml`), config);
322
+ // Start Hummingbot container
323
+ // Uses bridge networking (not --network host) to limit container's access
324
+ const dockerCmd = [
325
+ 'docker run -d',
326
+ `--name "${instanceName}"`,
327
+ `-v "${configDir}":/home/hummingbot/conf`,
328
+ `hummingbot/hummingbot:latest`,
329
+ ].join(' ');
330
+ try {
331
+ const containerId = await exec(dockerCmd);
332
+ return {
333
+ callId: '',
334
+ success: true,
335
+ result: [
336
+ `Hummingbot instance started.`,
337
+ ` Instance: ${instanceName}`,
338
+ ` Container: ${containerId.substring(0, 12)}`,
339
+ ` Strategy: ${strategy}`,
340
+ ` Token: ${tokenAddr}`,
341
+ ` Config: ${configDir}/${strategy}.yml`,
342
+ '',
343
+ `Monitor: use action "logs" with instance_name "${instanceName}"`,
344
+ `Stop: use action "stop" with instance_name "${instanceName}"`,
345
+ ].join('\n'),
346
+ metadata: { instance_name: instanceName, container_id: containerId.substring(0, 12) },
347
+ };
348
+ }
349
+ catch (err) {
350
+ return { callId: '', success: false, result: null, error: `Failed to start container: ${err.message}` };
351
+ }
352
+ }
353
+ // ================================================================
354
+ // Stop: terminate a market-making instance
355
+ // ================================================================
356
+ case 'stop': {
357
+ const rawStopName = params.instance_name;
358
+ if (!rawStopName) {
359
+ const instances = await listInstances();
360
+ if (instances.length === 0) {
361
+ return { callId: '', success: true, result: 'No running Hummingbot instances.' };
362
+ }
363
+ return {
364
+ callId: '',
365
+ success: false,
366
+ result: null,
367
+ error: `instance_name is required. Running instances:\n${instances.map(i => ` ${i.name}: ${i.status}`).join('\n')}`,
368
+ };
369
+ }
370
+ let instanceName;
371
+ try {
372
+ instanceName = sanitizeName(rawStopName);
373
+ }
374
+ catch (err) {
375
+ return { callId: '', success: false, result: null, error: err.message };
376
+ }
377
+ try {
378
+ await exec(`docker stop "${instanceName}"`);
379
+ await exec(`docker rm "${instanceName}"`);
380
+ return { callId: '', success: true, result: `Stopped and removed instance: ${instanceName}` };
381
+ }
382
+ catch (err) {
383
+ return { callId: '', success: false, result: null, error: `Failed to stop ${instanceName}: ${err.message}` };
384
+ }
385
+ }
386
+ // ================================================================
387
+ // List: show running instances
388
+ // ================================================================
389
+ case 'list': {
390
+ const instances = await listInstances();
391
+ if (instances.length === 0) {
392
+ return { callId: '', success: true, result: 'No running Hummingbot instances.' };
393
+ }
394
+ const lines = instances.map(i => ` ${i.name}: ${i.status} (created ${i.created})`);
395
+ return {
396
+ callId: '',
397
+ success: true,
398
+ result: `${instances.length} Hummingbot instance(s):\n${lines.join('\n')}`,
399
+ };
400
+ }
401
+ // ================================================================
402
+ // Logs: get recent logs from an instance
403
+ // ================================================================
404
+ case 'logs': {
405
+ const rawLogsName = params.instance_name;
406
+ if (!rawLogsName) {
407
+ return { callId: '', success: false, result: null, error: 'instance_name is required for logs.' };
408
+ }
409
+ let instanceName;
410
+ try {
411
+ instanceName = sanitizeName(rawLogsName);
412
+ }
413
+ catch (err) {
414
+ return { callId: '', success: false, result: null, error: err.message };
415
+ }
416
+ try {
417
+ const logs = await exec(`docker logs --tail 50 "${instanceName}"`);
418
+ return { callId: '', success: true, result: `Last 50 lines from ${instanceName}:\n${logs}` };
419
+ }
420
+ catch (err) {
421
+ return { callId: '', success: false, result: null, error: `Failed to get logs for ${instanceName}: ${err.message}` };
422
+ }
423
+ }
424
+ // ================================================================
425
+ // Configure: preview strategy config without starting
426
+ // ================================================================
427
+ case 'configure': {
428
+ const strategy = params.strategy;
429
+ if (!strategy) {
430
+ return { callId: '', success: false, result: null, error: 'strategy is required for configure.' };
431
+ }
432
+ const tokenAddr = params.token_address ?? ctx.identity.tokenAddress ?? '0x0000000000000000000000000000000000000000';
433
+ if (tokenAddr !== '0x0000000000000000000000000000000000000000' && !ETH_ADDRESS_RE.test(tokenAddr)) {
434
+ return { callId: '', success: false, result: null, error: `Invalid token address: "${tokenAddr}"` };
435
+ }
436
+ const config = generateStrategyConfig(strategy, params, tokenAddr, ctx.identity.address);
437
+ return {
438
+ callId: '',
439
+ success: true,
440
+ result: `Strategy config preview (${strategy}):\n\n${config}\n\nUse action "start" with the same parameters to launch.`,
441
+ };
442
+ }
443
+ default:
444
+ return {
445
+ callId: '',
446
+ success: false,
447
+ result: null,
448
+ error: `Unknown hummingbot action: "${action}". Valid: status, start, stop, list, logs, configure.`,
449
+ };
450
+ }
451
+ }
452
+ catch (err) {
453
+ return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
454
+ }
455
+ },
456
+ };
457
+ //# sourceMappingURL=hummingbot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hummingbot.js","sourceRoot":"","sources":["../../src/skills/hummingbot.ts"],"names":[],"mappings":"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"}
@@ -24,11 +24,13 @@ import { uniswapSwapSkill } from './uniswap-swap.js';
24
24
  import { liquiditySkill } from './liquidity.js';
25
25
  import { permit2Skill } from './permit2.js';
26
26
  import { wayfinderSkill } from './wayfinder.js';
27
+ import { paidServicesSkill } from './services.js';
28
+ import { hummingbotSkill } from './hummingbot.js';
27
29
  /** All registered skills */
28
30
  export declare const ALL_SKILLS: SkillDefinition[];
29
31
  /**
30
32
  * Get skills available at a given survival tier.
31
33
  */
32
34
  export declare function getSkillsForTier(tier: SurvivalTier): SkillDefinition[];
33
- export { checkBalanceSkill, checkPriceSkill, checkStatsSkill, claimFeesSkill, claimVaultSkill, deployTokenSkill, manageOrdersSkill, portfolioSkill, analyzeMarketSkill, swapSkill, uniswapSwapSkill, liquiditySkill, permit2Skill, watchActivitySkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, xmtpSkill, wayfinderSkill, };
35
+ export { checkBalanceSkill, checkPriceSkill, checkStatsSkill, claimFeesSkill, claimVaultSkill, deployTokenSkill, manageOrdersSkill, portfolioSkill, analyzeMarketSkill, swapSkill, uniswapSwapSkill, liquiditySkill, permit2Skill, watchActivitySkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, xmtpSkill, wayfinderSkill, paidServicesSkill, hummingbotSkill, };
34
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,4BAA4B;AAC5B,eAAO,MAAM,UAAU,EAAE,eAAe,EAuBvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,EAAE,CAEtE;AA2DD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,GACf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,4BAA4B;AAC5B,eAAO,MAAM,UAAU,EAAE,eAAe,EAyBvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,EAAE,CAEtE;AA+DD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,CAAC"}
@@ -23,6 +23,8 @@ import { uniswapSwapSkill } from './uniswap-swap.js';
23
23
  import { liquiditySkill } from './liquidity.js';
24
24
  import { permit2Skill } from './permit2.js';
25
25
  import { wayfinderSkill } from './wayfinder.js';
26
+ import { paidServicesSkill } from './services.js';
27
+ import { hummingbotSkill } from './hummingbot.js';
26
28
  /** All registered skills */
27
29
  export const ALL_SKILLS = [
28
30
  deployTokenSkill,
@@ -47,6 +49,8 @@ export const ALL_SKILLS = [
47
49
  bunkerSkill,
48
50
  xmtpSkill,
49
51
  wayfinderSkill,
52
+ paidServicesSkill,
53
+ hummingbotSkill,
50
54
  ];
51
55
  /**
52
56
  * Get skills available at a given survival tier.
@@ -79,6 +83,8 @@ const TIER_SKILLS = {
79
83
  'bunker',
80
84
  'xmtp',
81
85
  'wayfinder',
86
+ 'paid_services',
87
+ 'hummingbot',
82
88
  ]),
83
89
  low_compute: new Set([
84
90
  'deploy_token',
@@ -100,6 +106,8 @@ const TIER_SKILLS = {
100
106
  'bunker',
101
107
  'xmtp',
102
108
  'wayfinder',
109
+ 'paid_services',
110
+ 'hummingbot',
103
111
  ]),
104
112
  critical: new Set([
105
113
  'deploy_token',
@@ -110,5 +118,5 @@ const TIER_SKILLS = {
110
118
  ]),
111
119
  dead: new Set(),
112
120
  };
113
- export { checkBalanceSkill, checkPriceSkill, checkStatsSkill, claimFeesSkill, claimVaultSkill, deployTokenSkill, manageOrdersSkill, portfolioSkill, analyzeMarketSkill, swapSkill, uniswapSwapSkill, liquiditySkill, permit2Skill, watchActivitySkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, xmtpSkill, wayfinderSkill, };
121
+ export { checkBalanceSkill, checkPriceSkill, checkStatsSkill, claimFeesSkill, claimVaultSkill, deployTokenSkill, manageOrdersSkill, portfolioSkill, analyzeMarketSkill, swapSkill, uniswapSwapSkill, liquiditySkill, permit2Skill, watchActivitySkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, xmtpSkill, wayfinderSkill, paidServicesSkill, hummingbotSkill, };
114
122
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"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"}
@@ -104,7 +104,7 @@ async function handleView(ctx) {
104
104
  const priceFetcher = async (token) => {
105
105
  try {
106
106
  const info = await price.getQuickPrice(token);
107
- return { priceEth: info.priceInEth, priceUsd: info.priceInUsd };
107
+ return { priceEth: info.priceInEth ?? 0, priceUsd: info.priceInUsd };
108
108
  }
109
109
  catch {
110
110
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/skills/portfolio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/skills/portfolio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Skill: paid_services — Monetize agent capabilities via XMTP.
3
+ *
4
+ * Users pay ETH to the agent's wallet, then request services via XMTP.
5
+ * Payment is verified on-chain by scanning recent blocks for matching transfers.
6
+ *
7
+ * Actions:
8
+ * - catalog: List available services with pricing
9
+ * - verify_payment: Check if an address has paid for a service
10
+ * - execute_service: Execute a paid service after verifying payment
11
+ * - advertise: Generate a message advertising services
12
+ *
13
+ * Configured via autonomy.paidServices in ClawtomatonConfig.
14
+ * Requires XMTP to be enabled for communication with users.
15
+ */
16
+ import type { SkillDefinition } from '../types.js';
17
+ export declare const paidServicesSkill: SkillDefinition;
18
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/skills/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAQ7E,eAAO,MAAM,iBAAiB,EAAE,eA8E/B,CAAC"}