clodds 1.6.6 → 1.6.7

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,62 @@
1
+ /**
2
+ * Tool Registry - Dynamic tool management for cost-optimized tool loading.
3
+ *
4
+ * Instead of sending all 630+ tools on every API call (~50k tokens),
5
+ * the registry enables sending only ~20 core tools + a `tool_search` meta-tool.
6
+ * When the LLM needs specialized tools, it calls `tool_search` to discover them.
7
+ *
8
+ * Expected savings: ~90% reduction in tool token costs per message.
9
+ */
10
+ export interface ToolMetadata {
11
+ platform?: string;
12
+ category?: string;
13
+ tags?: string[];
14
+ core?: boolean;
15
+ }
16
+ /** Minimal shape required by the registry — compatible with any ToolDefinition */
17
+ export interface RegistryTool {
18
+ name: string;
19
+ description: string;
20
+ input_schema: unknown;
21
+ metadata?: ToolMetadata;
22
+ }
23
+ export interface SearchQuery {
24
+ platform?: string;
25
+ category?: string;
26
+ query?: string;
27
+ }
28
+ export declare class ToolRegistry<T extends RegistryTool = RegistryTool> {
29
+ private tools;
30
+ private byPlatform;
31
+ private byCategory;
32
+ private tagIndex;
33
+ register(tool: T): void;
34
+ registerAll(tools: T[]): void;
35
+ get(name: string): T | undefined;
36
+ size(): number;
37
+ searchByPlatform(platform: string): T[];
38
+ searchByCategory(category: string): T[];
39
+ searchByText(query: string): T[];
40
+ search(q: SearchQuery): T[];
41
+ getCoreTools(): T[];
42
+ getAvailablePlatforms(): string[];
43
+ getAvailableCategories(): string[];
44
+ }
45
+ /**
46
+ * Infer metadata from tool name using prefix conventions.
47
+ * Falls back to reasonable defaults when metadata isn't explicitly set.
48
+ */
49
+ export declare function inferToolMetadata(toolName: string, description: string): ToolMetadata;
50
+ /**
51
+ * Analyze a user message and return platform/category hints for tool preloading.
52
+ * Returns the detected platforms and categories to preload tools for.
53
+ */
54
+ export declare function detectToolHints(message: string): {
55
+ platforms: string[];
56
+ categories: string[];
57
+ };
58
+ /**
59
+ * Core tool names that are always sent with every API call.
60
+ * These cover the most common use cases without needing tool_search.
61
+ */
62
+ export declare const CORE_TOOL_NAMES: Set<string>;
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ /**
3
+ * Tool Registry - Dynamic tool management for cost-optimized tool loading.
4
+ *
5
+ * Instead of sending all 630+ tools on every API call (~50k tokens),
6
+ * the registry enables sending only ~20 core tools + a `tool_search` meta-tool.
7
+ * When the LLM needs specialized tools, it calls `tool_search` to discover them.
8
+ *
9
+ * Expected savings: ~90% reduction in tool token costs per message.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CORE_TOOL_NAMES = exports.ToolRegistry = void 0;
13
+ exports.inferToolMetadata = inferToolMetadata;
14
+ exports.detectToolHints = detectToolHints;
15
+ class ToolRegistry {
16
+ tools = new Map();
17
+ byPlatform = new Map();
18
+ byCategory = new Map();
19
+ tagIndex = new Map();
20
+ register(tool) {
21
+ this.tools.set(tool.name, tool);
22
+ const meta = tool.metadata;
23
+ if (meta?.platform) {
24
+ let set = this.byPlatform.get(meta.platform);
25
+ if (!set) {
26
+ set = new Set();
27
+ this.byPlatform.set(meta.platform, set);
28
+ }
29
+ set.add(tool.name);
30
+ }
31
+ if (meta?.category) {
32
+ let set = this.byCategory.get(meta.category);
33
+ if (!set) {
34
+ set = new Set();
35
+ this.byCategory.set(meta.category, set);
36
+ }
37
+ set.add(tool.name);
38
+ }
39
+ if (meta?.tags) {
40
+ for (const tag of meta.tags) {
41
+ const lower = tag.toLowerCase();
42
+ let set = this.tagIndex.get(lower);
43
+ if (!set) {
44
+ set = new Set();
45
+ this.tagIndex.set(lower, set);
46
+ }
47
+ set.add(tool.name);
48
+ }
49
+ }
50
+ }
51
+ registerAll(tools) {
52
+ for (const tool of tools) {
53
+ this.register(tool);
54
+ }
55
+ }
56
+ get(name) {
57
+ return this.tools.get(name);
58
+ }
59
+ size() {
60
+ return this.tools.size;
61
+ }
62
+ searchByPlatform(platform) {
63
+ const names = this.byPlatform.get(platform);
64
+ if (!names)
65
+ return [];
66
+ return Array.from(names)
67
+ .map(n => this.tools.get(n))
68
+ .filter(Boolean);
69
+ }
70
+ searchByCategory(category) {
71
+ const names = this.byCategory.get(category);
72
+ if (!names)
73
+ return [];
74
+ return Array.from(names)
75
+ .map(n => this.tools.get(n))
76
+ .filter(Boolean);
77
+ }
78
+ searchByText(query) {
79
+ const lower = query.toLowerCase();
80
+ const terms = lower.split(/\s+/).filter(Boolean);
81
+ const scored = new Map();
82
+ // Score by tag matches
83
+ for (const term of terms) {
84
+ const tagHits = this.tagIndex.get(term);
85
+ if (tagHits) {
86
+ for (const name of tagHits) {
87
+ scored.set(name, (scored.get(name) ?? 0) + 3);
88
+ }
89
+ }
90
+ }
91
+ // Score by name/description substring matches
92
+ for (const [name, tool] of this.tools) {
93
+ let score = scored.get(name) ?? 0;
94
+ const nameLower = name.toLowerCase();
95
+ const descLower = tool.description.toLowerCase();
96
+ for (const term of terms) {
97
+ if (nameLower.includes(term))
98
+ score += 2;
99
+ if (descLower.includes(term))
100
+ score += 1;
101
+ }
102
+ // Platform match via metadata
103
+ const meta = tool.metadata;
104
+ if (meta?.platform) {
105
+ for (const term of terms) {
106
+ if (meta.platform.includes(term))
107
+ score += 2;
108
+ }
109
+ }
110
+ if (score > 0) {
111
+ scored.set(name, score);
112
+ }
113
+ }
114
+ return Array.from(scored.entries())
115
+ .sort((a, b) => b[1] - a[1])
116
+ .map(([name]) => this.tools.get(name))
117
+ .filter(Boolean);
118
+ }
119
+ search(q) {
120
+ if (q.platform)
121
+ return this.searchByPlatform(q.platform);
122
+ if (q.category)
123
+ return this.searchByCategory(q.category);
124
+ if (q.query)
125
+ return this.searchByText(q.query);
126
+ return [];
127
+ }
128
+ getCoreTools() {
129
+ return Array.from(this.tools.values()).filter(t => t.metadata?.core === true);
130
+ }
131
+ getAvailablePlatforms() {
132
+ return Array.from(this.byPlatform.keys());
133
+ }
134
+ getAvailableCategories() {
135
+ return Array.from(this.byCategory.keys());
136
+ }
137
+ }
138
+ exports.ToolRegistry = ToolRegistry;
139
+ /**
140
+ * Infer metadata from tool name using prefix conventions.
141
+ * Falls back to reasonable defaults when metadata isn't explicitly set.
142
+ */
143
+ function inferToolMetadata(toolName, description) {
144
+ const meta = {};
145
+ // Platform inference from prefix (longest prefixes first to match correctly)
146
+ const platformPrefixes = [
147
+ ['binance_futures_', 'binance'],
148
+ ['solana_jupiter_', 'solana'],
149
+ ['solana_auto_', 'solana'],
150
+ ['solana_best_', 'solana'],
151
+ ['meteora_dlmm_', 'meteora'],
152
+ ['orca_whirlpool_', 'orca'],
153
+ ['raydium_clmm_', 'raydium'],
154
+ ['raydium_amm_', 'raydium'],
155
+ ['drift_direct_', 'drift'],
156
+ ['pumpfun_', 'pumpfun'],
157
+ ['polymarket_', 'polymarket'],
158
+ ['kalshi_', 'kalshi'],
159
+ ['manifold_', 'manifold'],
160
+ ['metaculus_', 'metaculus'],
161
+ ['predictit_', 'predictit'],
162
+ ['predictfun_', 'predictfun'],
163
+ ['drift_', 'drift'],
164
+ ['opinion_', 'opinion'],
165
+ ['bybit_', 'bybit'],
166
+ ['mexc_', 'mexc'],
167
+ ['hyperliquid_', 'hyperliquid'],
168
+ ['solana_', 'solana'],
169
+ ['bags_', 'bags'],
170
+ ['raydium_', 'raydium'],
171
+ ['orca_', 'orca'],
172
+ ['meteora_', 'meteora'],
173
+ ['coingecko_', 'coingecko'],
174
+ ['yahoo_', 'yahoo'],
175
+ ['acp_', 'acp'],
176
+ ['swarm_', 'swarm'],
177
+ ['evm_', 'evm'],
178
+ ['wormhole_', 'wormhole'],
179
+ ['usdc_', 'usdc_bridge'],
180
+ ['qmd_', 'qmd'],
181
+ ['docker_', 'docker'],
182
+ ['git_', 'git'],
183
+ ['shell_history_', 'shell'],
184
+ ['exec_', 'exec'],
185
+ ['paper_', 'paper'],
186
+ ['email_', 'email'],
187
+ ['sms_', 'sms'],
188
+ ['sql_', 'sql'],
189
+ ['subagent_', 'subagent'],
190
+ ];
191
+ for (const [prefix, platform] of platformPrefixes) {
192
+ if (toolName.startsWith(prefix)) {
193
+ meta.platform = platform;
194
+ break;
195
+ }
196
+ }
197
+ // Exact name matches for tools without prefix convention
198
+ const exactMatches = {
199
+ bittensor: 'bittensor',
200
+ orderbook_imbalance: 'polymarket',
201
+ setup_polymarket_credentials: 'polymarket',
202
+ setup_kalshi_credentials: 'kalshi',
203
+ setup_manifold_credentials: 'manifold',
204
+ };
205
+ if (!meta.platform && exactMatches[toolName]) {
206
+ meta.platform = exactMatches[toolName];
207
+ }
208
+ // Category inference
209
+ const combined = (toolName + ' ' + description).toLowerCase();
210
+ if (/\b(buy|sell|order|trade|swap|long|short|close|cancel|limit|dca|bridge|bet)\b/.test(combined)) {
211
+ meta.category = 'trading';
212
+ }
213
+ else if (/\b(price|quote|chart|orderbook|ticker|candlestick|volume|spread|midpoint)\b/.test(combined)) {
214
+ meta.category = 'market_data';
215
+ }
216
+ else if (/\b(position|balance|portfolio|pnl|collateral|margin|leverage)\b/.test(combined)) {
217
+ meta.category = 'portfolio';
218
+ }
219
+ else if (/\b(credential|api.key|setup|config)\b/.test(combined)) {
220
+ meta.category = 'admin';
221
+ }
222
+ else if (/\b(file|shell|git|docker|email|sms|sql|webhook|transcrib)\b/.test(combined)) {
223
+ meta.category = 'infrastructure';
224
+ }
225
+ else if (/\b(pool|liquidity|farm|reward|fee|claim|harvest)\b/.test(combined)) {
226
+ meta.category = 'defi';
227
+ }
228
+ else if (/\b(alert|watch|whale|notification|news)\b/.test(combined)) {
229
+ meta.category = 'alerts';
230
+ }
231
+ else if (/\b(search|list|get|info|status|stats)\b/.test(toolName.toLowerCase())) {
232
+ meta.category = 'discovery';
233
+ }
234
+ else {
235
+ meta.category = 'general';
236
+ }
237
+ // Tag inference from name parts
238
+ const tags = [];
239
+ const parts = toolName.split('_');
240
+ for (const part of parts) {
241
+ if (part.length > 2)
242
+ tags.push(part);
243
+ }
244
+ // Add description-derived tags
245
+ const descLower = description.toLowerCase();
246
+ if (descLower.includes('order'))
247
+ tags.push('order');
248
+ if (descLower.includes('market'))
249
+ tags.push('market');
250
+ if (descLower.includes('position'))
251
+ tags.push('position');
252
+ if (descLower.includes('balance'))
253
+ tags.push('balance');
254
+ meta.tags = tags;
255
+ return meta;
256
+ }
257
+ /**
258
+ * Keyword → platform mapping for preloading tools from user messages.
259
+ * Matches common ways users refer to platforms, including typos and abbreviations.
260
+ */
261
+ const PLATFORM_KEYWORDS = [
262
+ // Polymarket: polymarkt, polymaket, pollymarket, ploymarket, polimarket, poly, ploy, pm
263
+ [/\bp(?:o?ly|oli|olly|loy)(?:[\s._-]?ma?r?ke?t?)?\b|\bpm\b/i, 'polymarket'],
264
+ // Kalshi: kashi, kalhi, klashi
265
+ [/\bk(?:a?lshi|ashi|alhi|lashi)\b/i, 'kalshi'],
266
+ // Manifold: maniflod, manfiold, manifodl
267
+ [/\bmanif(?:o?ld|lod|odl)\b|\bmanfi(?:old|lod)\b/i, 'manifold'],
268
+ // Metaculus: metaculus, metaculis, metaculas
269
+ [/\bmetacul[uia]s\b/i, 'metaculus'],
270
+ [/\bpredictit\b/i, 'predictit'],
271
+ [/\bpredict[\s._-]?fun\b/i, 'predictfun'],
272
+ [/\bdrift\b/i, 'drift'],
273
+ [/\bopinion\b/i, 'opinion'],
274
+ // Binance: bianance, binanace, binnance, bnb, perps
275
+ [/\bb(?:i(?:na?n(?:a?ce|ace)|ana(?:n?ce))|inna?nce)\b|\bbnb\b|\bperps\b|\bfutures\b/i, 'binance'],
276
+ // Bybit: bybi, bibit
277
+ [/\bb(?:y?bit|ibit|ybi)\b/i, 'bybit'],
278
+ [/\bmexc\b/i, 'mexc'],
279
+ // Hyperliquid: hyperliqiud, hyperliuid, hperliquid, hl
280
+ [/\bh(?:y?per)?[\s._-]?li(?:qu?i[du]{0,2}|uid|qiud)\b|\bhl\b/i, 'hyperliquid'],
281
+ // Solana: solona, soalana, soalna
282
+ [/\bs(?:ol(?:a?na|ona)?|oala?na)\b/i, 'solana'],
283
+ // Jupiter: jupter, jupitor, jup
284
+ [/\bjup(?:i?ter|itor)?\b/i, 'solana'],
285
+ // PumpFun: pumfun, pumpfn, pump.fun, pump fun
286
+ [/\bpump?[\s._-]?fu?n\b/i, 'pumpfun'],
287
+ [/\bbags(?:\.fm)?\b/i, 'bags'],
288
+ [/\bmeteora\b/i, 'meteora'],
289
+ // Raydium: raydim, radyium
290
+ [/\br(?:ay?di?u?m|adyium)\b/i, 'raydium'],
291
+ [/\borca\b/i, 'orca'],
292
+ // CoinGecko: coingeeko, coingeko, coin gecko, cg
293
+ [/\bcoin[\s._-]?ge{0,2}c?k[eo]?\b|\bcg\b/i, 'coingecko'],
294
+ [/\byahoo\b/i, 'yahoo'],
295
+ [/\bacp\b|\bmarketplace\b/i, 'acp'],
296
+ [/\bswarm\b/i, 'swarm'],
297
+ [/\bwormhole\b/i, 'wormhole'],
298
+ [/\bdocker\b/i, 'docker'],
299
+ [/\bgit\b/i, 'git'],
300
+ // EVM: ethereum, eth
301
+ [/\b(?:evm|ethereum|eth)\b/i, 'evm'],
302
+ [/\busdc[\s._-]?bridge\b|\bcross[\s._-]?chain\b/i, 'usdc_bridge'],
303
+ // Bittensor: bitensor, bittnesor, btcli, tao
304
+ [/\bbit?t?(?:en?|ne)?sor\b|\btao\b|\bbtcli\b/i, 'bittensor'],
305
+ [/\bqmd\b/i, 'qmd'],
306
+ [/\bshell\b/i, 'shell'],
307
+ [/\b(?:python|script|exec)\b/i, 'exec'],
308
+ [/\bpaper[\s._-]?trad/i, 'paper'],
309
+ [/\bemail\b/i, 'email'],
310
+ [/\bsms\b|\btext\s+message\b/i, 'sms'],
311
+ [/\bsql\b|\bquery\s+db\b|\bdatabase\b/i, 'sql'],
312
+ [/\bsubagent\b|\bagent\s+task\b/i, 'subagent'],
313
+ // Generic CEX/DEX keywords → preload binance (most common) + solana (most common DEX)
314
+ [/\bcex\b/i, 'binance'],
315
+ [/\bdex\b/i, 'solana'],
316
+ ];
317
+ /**
318
+ * Category keywords for preloading tools from user messages.
319
+ */
320
+ const CATEGORY_KEYWORDS = [
321
+ [/\b(?:buy|sell|orders?|swap|long|short|execute|cancel|bridge|bet|dca|limit)\b/i, 'trading'],
322
+ [/\b(?:pool|liquidity|farm|lp|harvest|stake)\b/i, 'defi'],
323
+ [/\b(?:positions?|balances?|portfolio|pnl|margin|leverage)\b/i, 'portfolio'],
324
+ [/\b(?:prices?|quote|chart|orderbook|ticker|volume|spread)\b/i, 'market_data'],
325
+ [/\b(?:credential|api.key|setup|login|connect)\b/i, 'admin'],
326
+ [/\b(?:file|shell|docker|email|sms|sql|webhook|deploy)\b/i, 'infrastructure'],
327
+ [/\b(?:alert|watch|whale|notification|news)\b/i, 'alerts'],
328
+ ];
329
+ /**
330
+ * Analyze a user message and return platform/category hints for tool preloading.
331
+ * Returns the detected platforms and categories to preload tools for.
332
+ */
333
+ function detectToolHints(message) {
334
+ const platforms = new Set();
335
+ const categories = new Set();
336
+ for (const [pattern, platform] of PLATFORM_KEYWORDS) {
337
+ if (pattern.test(message)) {
338
+ platforms.add(platform);
339
+ }
340
+ }
341
+ for (const [pattern, category] of CATEGORY_KEYWORDS) {
342
+ if (pattern.test(message)) {
343
+ categories.add(category);
344
+ }
345
+ }
346
+ return {
347
+ platforms: Array.from(platforms),
348
+ categories: Array.from(categories),
349
+ };
350
+ }
351
+ /**
352
+ * Core tool names that are always sent with every API call.
353
+ * These cover the most common use cases without needing tool_search.
354
+ */
355
+ exports.CORE_TOOL_NAMES = new Set([
356
+ // Market discovery (6)
357
+ 'search_markets',
358
+ 'get_market',
359
+ 'market_index_search',
360
+ 'market_index_stats',
361
+ 'find_arbitrage',
362
+ 'compare_prices',
363
+ // Portfolio (3)
364
+ 'get_portfolio',
365
+ 'get_portfolio_history',
366
+ 'add_position',
367
+ // Alerts (3)
368
+ 'create_alert',
369
+ 'list_alerts',
370
+ 'delete_alert',
371
+ // News (2)
372
+ 'get_recent_news',
373
+ 'search_news',
374
+ // Wallet tracking (2)
375
+ 'get_wallet_trades',
376
+ 'watch_wallet',
377
+ // Session (2)
378
+ 'save_session_checkpoint',
379
+ 'restore_session_checkpoint',
380
+ // Quick price checks (3)
381
+ 'polymarket_price',
382
+ 'coingecko_price',
383
+ 'solana_address',
384
+ // Meta (1)
385
+ 'tool_search',
386
+ ]);
387
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/agents/tool-registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clodds",
3
- "version": "1.6.6",
3
+ "version": "1.6.7",
4
4
  "description": "Open-source AI trading terminal. Trade Polymarket, Kalshi, Betfair, Binance, Bybit, Hyperliquid, Solana DEXs from Telegram, Discord, Slack or web. Arbitrage detection, whale tracking, copy trading, perpetual futures up to 200x, DeFi swaps, MEV protection. Self-hosted, 119 skills, powered by Claude.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {