clodds 1.2.8 → 1.3.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 (232) hide show
  1. package/dist/skills/bundled/acp/SKILL.md +188 -0
  2. package/dist/skills/bundled/acp/index.d.ts +0 -3
  3. package/dist/skills/bundled/acp/index.js +1 -1
  4. package/dist/skills/bundled/acp/index.js.map +1 -1
  5. package/dist/skills/bundled/agentbets/SKILL.md +19 -0
  6. package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
  7. package/dist/skills/bundled/ai-strategy/index.js +1 -1
  8. package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
  9. package/dist/skills/bundled/alerts/SKILL.md +87 -0
  10. package/dist/skills/bundled/analytics/SKILL.md +252 -0
  11. package/dist/skills/bundled/analytics/index.js +2 -2
  12. package/dist/skills/bundled/analytics/index.js.map +1 -1
  13. package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
  14. package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
  15. package/dist/skills/bundled/auto-reply/index.js +2 -2
  16. package/dist/skills/bundled/auto-reply/index.js.map +1 -1
  17. package/dist/skills/bundled/automation/SKILL.md +242 -0
  18. package/dist/skills/bundled/automation/index.js +2 -2
  19. package/dist/skills/bundled/automation/index.js.map +1 -1
  20. package/dist/skills/bundled/backtest/SKILL.md +225 -0
  21. package/dist/skills/bundled/bags/SKILL.md +131 -0
  22. package/dist/skills/bundled/bankr/SKILL.md +114 -0
  23. package/dist/skills/bundled/betfair/SKILL.md +113 -0
  24. package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
  25. package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
  26. package/dist/skills/bundled/binance-futures/index.js +1 -2
  27. package/dist/skills/bundled/binance-futures/index.js.map +1 -1
  28. package/dist/skills/bundled/botchan/SKILL.md +66 -0
  29. package/dist/skills/bundled/botchan/index.d.ts +0 -3
  30. package/dist/skills/bundled/botchan/index.js +0 -1
  31. package/dist/skills/bundled/botchan/index.js.map +1 -1
  32. package/dist/skills/bundled/bridge/SKILL.md +215 -0
  33. package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
  34. package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
  35. package/dist/skills/bundled/bybit-futures/index.js +0 -1
  36. package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
  37. package/dist/skills/bundled/clanker/SKILL.md +125 -0
  38. package/dist/skills/bundled/clanker/index.d.ts +0 -3
  39. package/dist/skills/bundled/clanker/index.js +0 -1
  40. package/dist/skills/bundled/clanker/index.js.map +1 -1
  41. package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
  42. package/dist/skills/bundled/copy-trading/index.js +2 -2
  43. package/dist/skills/bundled/copy-trading/index.js.map +1 -1
  44. package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
  45. package/dist/skills/bundled/credentials/SKILL.md +261 -0
  46. package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
  47. package/dist/skills/bundled/dca/SKILL.md +27 -0
  48. package/dist/skills/bundled/dex/SKILL.md +87 -0
  49. package/dist/skills/bundled/dex/index.d.ts +36 -0
  50. package/dist/skills/bundled/dex/index.js +537 -0
  51. package/dist/skills/bundled/dex/index.js.map +1 -0
  52. package/dist/skills/bundled/divergence/SKILL.md +83 -0
  53. package/dist/skills/bundled/doctor/SKILL.md +267 -0
  54. package/dist/skills/bundled/doctor/index.js +2 -8
  55. package/dist/skills/bundled/doctor/index.js.map +1 -1
  56. package/dist/skills/bundled/drift/SKILL.md +53 -0
  57. package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
  58. package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
  59. package/dist/skills/bundled/drift-sdk/index.js +0 -1
  60. package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
  61. package/dist/skills/bundled/edge/SKILL.md +84 -0
  62. package/dist/skills/bundled/embeddings/SKILL.md +244 -0
  63. package/dist/skills/bundled/endaoment/SKILL.md +65 -0
  64. package/dist/skills/bundled/endaoment/index.d.ts +0 -3
  65. package/dist/skills/bundled/endaoment/index.js +0 -1
  66. package/dist/skills/bundled/endaoment/index.js.map +1 -1
  67. package/dist/skills/bundled/ens/SKILL.md +63 -0
  68. package/dist/skills/bundled/ens/index.d.ts +0 -3
  69. package/dist/skills/bundled/ens/index.js +0 -1
  70. package/dist/skills/bundled/ens/index.js.map +1 -1
  71. package/dist/skills/bundled/erc8004/SKILL.md +79 -0
  72. package/dist/skills/bundled/erc8004/index.d.ts +0 -3
  73. package/dist/skills/bundled/erc8004/index.js +0 -1
  74. package/dist/skills/bundled/erc8004/index.js.map +1 -1
  75. package/dist/skills/bundled/execution/SKILL.md +278 -0
  76. package/dist/skills/bundled/farcaster/SKILL.md +80 -0
  77. package/dist/skills/bundled/features/SKILL.md +20 -0
  78. package/dist/skills/bundled/feeds/SKILL.md +288 -0
  79. package/dist/skills/bundled/harden/SKILL.md +74 -0
  80. package/dist/skills/bundled/history/SKILL.md +257 -0
  81. package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
  82. package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
  83. package/dist/skills/bundled/hyperliquid/index.js +0 -1
  84. package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
  85. package/dist/skills/bundled/identity/SKILL.md +228 -0
  86. package/dist/skills/bundled/identity/index.js +2 -2
  87. package/dist/skills/bundled/identity/index.js.map +1 -1
  88. package/dist/skills/bundled/integrations/SKILL.md +321 -0
  89. package/dist/skills/bundled/integrations/index.js +2 -2
  90. package/dist/skills/bundled/integrations/index.js.map +1 -1
  91. package/dist/skills/bundled/jupiter/SKILL.md +163 -0
  92. package/dist/skills/bundled/kamino/SKILL.md +69 -0
  93. package/dist/skills/bundled/ledger/SKILL.md +20 -0
  94. package/dist/skills/bundled/lighter/SKILL.md +83 -0
  95. package/dist/skills/bundled/lighter/index.d.ts +0 -3
  96. package/dist/skills/bundled/lighter/index.js +0 -1
  97. package/dist/skills/bundled/lighter/index.js.map +1 -1
  98. package/dist/skills/bundled/marginfi/SKILL.md +62 -0
  99. package/dist/skills/bundled/market-index/SKILL.md +242 -0
  100. package/dist/skills/bundled/market-index/index.js +1 -3
  101. package/dist/skills/bundled/market-index/index.js.map +1 -1
  102. package/dist/skills/bundled/markets/SKILL.md +49 -0
  103. package/dist/skills/bundled/mcp/SKILL.md +235 -0
  104. package/dist/skills/bundled/mcp/index.js +1 -3
  105. package/dist/skills/bundled/mcp/index.js.map +1 -1
  106. package/dist/skills/bundled/memory/SKILL.md +209 -0
  107. package/dist/skills/bundled/metaculus/SKILL.md +62 -0
  108. package/dist/skills/bundled/meteora/SKILL.md +28 -0
  109. package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
  110. package/dist/skills/bundled/metrics/SKILL.md +338 -0
  111. package/dist/skills/bundled/mev/SKILL.md +239 -0
  112. package/dist/skills/bundled/mev/index.js +2 -2
  113. package/dist/skills/bundled/mev/index.js.map +1 -1
  114. package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
  115. package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
  116. package/dist/skills/bundled/mexc-futures/index.js +0 -1
  117. package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
  118. package/dist/skills/bundled/mm/SKILL.md +142 -0
  119. package/dist/skills/bundled/monitoring/SKILL.md +249 -0
  120. package/dist/skills/bundled/news/SKILL.md +95 -0
  121. package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
  122. package/dist/skills/bundled/opinion/SKILL.md +87 -0
  123. package/dist/skills/bundled/opportunity/SKILL.md +308 -0
  124. package/dist/skills/bundled/orca/SKILL.md +28 -0
  125. package/dist/skills/bundled/pairing/SKILL.md +275 -0
  126. package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
  127. package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
  128. package/dist/skills/bundled/pancakeswap/index.js +0 -1
  129. package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
  130. package/dist/skills/bundled/percolator/SKILL.md +22 -0
  131. package/dist/skills/bundled/permissions/SKILL.md +269 -0
  132. package/dist/skills/bundled/permissions/index.js +2 -2
  133. package/dist/skills/bundled/permissions/index.js.map +1 -1
  134. package/dist/skills/bundled/plugins/SKILL.md +263 -0
  135. package/dist/skills/bundled/plugins/index.js +2 -2
  136. package/dist/skills/bundled/plugins/index.js.map +1 -1
  137. package/dist/skills/bundled/portfolio/SKILL.md +161 -0
  138. package/dist/skills/bundled/portfolio/index.js +1 -1
  139. package/dist/skills/bundled/portfolio/index.js.map +1 -1
  140. package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
  141. package/dist/skills/bundled/positions/SKILL.md +262 -0
  142. package/dist/skills/bundled/predictfun/SKILL.md +109 -0
  143. package/dist/skills/bundled/predictfun/index.js +1 -1
  144. package/dist/skills/bundled/predictfun/index.js.map +1 -1
  145. package/dist/skills/bundled/predictit/SKILL.md +66 -0
  146. package/dist/skills/bundled/presence/SKILL.md +217 -0
  147. package/dist/skills/bundled/presence/index.js +2 -2
  148. package/dist/skills/bundled/presence/index.js.map +1 -1
  149. package/dist/skills/bundled/processes/SKILL.md +254 -0
  150. package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
  151. package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
  152. package/dist/skills/bundled/pumpfun/index.d.ts +8 -1
  153. package/dist/skills/bundled/pumpfun/index.js +221 -11
  154. package/dist/skills/bundled/pumpfun/index.js.map +1 -1
  155. package/dist/skills/bundled/qmd/SKILL.md +129 -0
  156. package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
  157. package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
  158. package/dist/skills/bundled/qrcoin/index.js +0 -1
  159. package/dist/skills/bundled/qrcoin/index.js.map +1 -1
  160. package/dist/skills/bundled/raydium/SKILL.md +198 -0
  161. package/dist/skills/bundled/remote/SKILL.md +201 -0
  162. package/dist/skills/bundled/research/SKILL.md +83 -0
  163. package/dist/skills/bundled/research/index.js +2 -2
  164. package/dist/skills/bundled/research/index.js.map +1 -1
  165. package/dist/skills/bundled/risk/SKILL.md +323 -0
  166. package/dist/skills/bundled/router/SKILL.md +233 -0
  167. package/dist/skills/bundled/routing/SKILL.md +258 -0
  168. package/dist/skills/bundled/sandbox/SKILL.md +257 -0
  169. package/dist/skills/bundled/search-config/SKILL.md +257 -0
  170. package/dist/skills/bundled/search-config/index.js +2 -2
  171. package/dist/skills/bundled/search-config/index.js.map +1 -1
  172. package/dist/skills/bundled/sessions/SKILL.md +251 -0
  173. package/dist/skills/bundled/sessions/index.js +1 -1
  174. package/dist/skills/bundled/sessions/index.js.map +1 -1
  175. package/dist/skills/bundled/setup/SKILL.md +53 -0
  176. package/dist/skills/bundled/shield/SKILL.md +21 -0
  177. package/dist/skills/bundled/signals/SKILL.md +106 -0
  178. package/dist/skills/bundled/signals/index.d.ts +0 -3
  179. package/dist/skills/bundled/signals/index.js +3 -4
  180. package/dist/skills/bundled/signals/index.js.map +1 -1
  181. package/dist/skills/bundled/sizing/SKILL.md +238 -0
  182. package/dist/skills/bundled/slippage/SKILL.md +306 -0
  183. package/dist/skills/bundled/smarkets/SKILL.md +107 -0
  184. package/dist/skills/bundled/solend/SKILL.md +63 -0
  185. package/dist/skills/bundled/strategy/SKILL.md +266 -0
  186. package/dist/skills/bundled/streaming/SKILL.md +150 -0
  187. package/dist/skills/bundled/streaming/index.js +2 -2
  188. package/dist/skills/bundled/streaming/index.js.map +1 -1
  189. package/dist/skills/bundled/tailscale/SKILL.md +249 -0
  190. package/dist/skills/bundled/tailscale/index.js +2 -2
  191. package/dist/skills/bundled/tailscale/index.js.map +1 -1
  192. package/dist/skills/bundled/ticks/SKILL.md +61 -0
  193. package/dist/skills/bundled/token-security/SKILL.md +18 -0
  194. package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
  195. package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
  196. package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
  197. package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
  198. package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
  199. package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
  200. package/dist/skills/bundled/trading-system/SKILL.md +290 -0
  201. package/dist/skills/bundled/triggers/SKILL.md +433 -0
  202. package/dist/skills/bundled/tts/SKILL.md +220 -0
  203. package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
  204. package/dist/skills/bundled/usage/SKILL.md +239 -0
  205. package/dist/skills/bundled/usage/index.js +2 -2
  206. package/dist/skills/bundled/usage/index.js.map +1 -1
  207. package/dist/skills/bundled/veil/SKILL.md +76 -0
  208. package/dist/skills/bundled/veil/index.d.ts +0 -3
  209. package/dist/skills/bundled/veil/index.js +0 -1
  210. package/dist/skills/bundled/veil/index.js.map +1 -1
  211. package/dist/skills/bundled/verify/SKILL.md +199 -0
  212. package/dist/skills/bundled/verify/index.d.ts +0 -3
  213. package/dist/skills/bundled/verify/index.js +0 -1
  214. package/dist/skills/bundled/verify/index.js.map +1 -1
  215. package/dist/skills/bundled/virtuals/SKILL.md +82 -0
  216. package/dist/skills/bundled/voice/SKILL.md +217 -0
  217. package/dist/skills/bundled/voice/index.js +2 -2
  218. package/dist/skills/bundled/voice/index.js.map +1 -1
  219. package/dist/skills/bundled/weather/SKILL.md +80 -0
  220. package/dist/skills/bundled/webhooks/SKILL.md +297 -0
  221. package/dist/skills/bundled/webhooks/index.js +2 -2
  222. package/dist/skills/bundled/webhooks/index.js.map +1 -1
  223. package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
  224. package/dist/skills/bundled/whale-tracking/index.js +2 -2
  225. package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
  226. package/dist/skills/bundled/yoink/SKILL.md +54 -0
  227. package/dist/skills/bundled/yoink/index.d.ts +0 -3
  228. package/dist/skills/bundled/yoink/index.js +0 -1
  229. package/dist/skills/bundled/yoink/index.js.map +1 -1
  230. package/dist/skills/executor.js +5 -3
  231. package/dist/skills/executor.js.map +1 -1
  232. package/package.json +2 -2
@@ -0,0 +1,338 @@
1
+ ---
2
+ name: metrics
3
+ description: "System metrics, telemetry, and performance monitoring"
4
+ emoji: "📈"
5
+ ---
6
+
7
+ # Metrics - Complete API Reference
8
+
9
+ Monitor system health, track performance metrics, and analyze telemetry data.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### System Metrics
16
+
17
+ ```
18
+ /metrics Show current metrics
19
+ /metrics system CPU, memory, latency
20
+ /metrics api API performance stats
21
+ /metrics ws WebSocket health
22
+ ```
23
+
24
+ ### Trading Metrics
25
+
26
+ ```
27
+ /metrics trades Trade execution stats
28
+ /metrics fills Fill rate metrics
29
+ /metrics latency Order latency stats
30
+ /metrics errors Error rates
31
+ ```
32
+
33
+ ### Custom Metrics
34
+
35
+ ```
36
+ /metrics track <name> <value> Track custom metric
37
+ /metrics query <name> Query metric history
38
+ /metrics alert <name> > 100 Set metric alert
39
+ ```
40
+
41
+ ### Export & Reports
42
+
43
+ ```
44
+ /metrics export csv Export to CSV
45
+ /metrics report daily Generate daily report
46
+ /metrics dashboard Open metrics dashboard
47
+ ```
48
+
49
+ ---
50
+
51
+ ## TypeScript API Reference
52
+
53
+ ### Create Metrics Service
54
+
55
+ ```typescript
56
+ import { createMetricsService } from 'clodds/metrics';
57
+
58
+ const metrics = createMetricsService({
59
+ // Collection
60
+ collectInterval: 5000, // ms
61
+ retention: '30d',
62
+
63
+ // Storage
64
+ storage: 'sqlite',
65
+ dbPath: './metrics.db',
66
+
67
+ // Export
68
+ enablePrometheus: true,
69
+ prometheusPort: 9090,
70
+ });
71
+
72
+ // Start collection
73
+ await metrics.start();
74
+ ```
75
+
76
+ ### System Metrics
77
+
78
+ ```typescript
79
+ const system = await metrics.getSystemMetrics();
80
+
81
+ console.log('=== System Health ===');
82
+ console.log(`CPU Usage: ${system.cpuUsage}%`);
83
+ console.log(`Memory: ${system.memoryUsed}MB / ${system.memoryTotal}MB`);
84
+ console.log(`Uptime: ${system.uptimeHours}h`);
85
+ console.log(`Active connections: ${system.activeConnections}`);
86
+ console.log(`Event loop lag: ${system.eventLoopLag}ms`);
87
+ ```
88
+
89
+ ### API Metrics
90
+
91
+ ```typescript
92
+ const api = await metrics.getApiMetrics();
93
+
94
+ console.log('=== API Performance ===');
95
+ console.log(`Total requests: ${api.totalRequests}`);
96
+ console.log(`Requests/sec: ${api.requestsPerSecond}`);
97
+ console.log(`Avg latency: ${api.avgLatency}ms`);
98
+ console.log(`P50 latency: ${api.p50Latency}ms`);
99
+ console.log(`P95 latency: ${api.p95Latency}ms`);
100
+ console.log(`P99 latency: ${api.p99Latency}ms`);
101
+ console.log(`Error rate: ${api.errorRate}%`);
102
+
103
+ console.log('\nBy Endpoint:');
104
+ for (const endpoint of api.byEndpoint) {
105
+ console.log(` ${endpoint.path}: ${endpoint.avgLatency}ms (${endpoint.calls} calls)`);
106
+ }
107
+ ```
108
+
109
+ ### WebSocket Metrics
110
+
111
+ ```typescript
112
+ const ws = await metrics.getWebSocketMetrics();
113
+
114
+ console.log('=== WebSocket Health ===');
115
+ console.log(`Active connections: ${ws.activeConnections}`);
116
+ console.log(`Messages/sec: ${ws.messagesPerSecond}`);
117
+ console.log(`Avg message size: ${ws.avgMessageSize} bytes`);
118
+ console.log(`Reconnections: ${ws.reconnections}`);
119
+ console.log(`Dropped messages: ${ws.droppedMessages}`);
120
+
121
+ console.log('\nBy Feed:');
122
+ for (const feed of ws.byFeed) {
123
+ console.log(` ${feed.name}: ${feed.messagesPerSecond}/s, ${feed.latency}ms lag`);
124
+ }
125
+ ```
126
+
127
+ ### Trade Execution Metrics
128
+
129
+ ```typescript
130
+ const trades = await metrics.getTradeMetrics();
131
+
132
+ console.log('=== Trade Execution ===');
133
+ console.log(`Total orders: ${trades.totalOrders}`);
134
+ console.log(`Fill rate: ${trades.fillRate}%`);
135
+ console.log(`Partial fills: ${trades.partialFillRate}%`);
136
+ console.log(`Rejections: ${trades.rejectionRate}%`);
137
+ console.log(`Avg fill time: ${trades.avgFillTime}ms`);
138
+ console.log(`Avg slippage: ${trades.avgSlippage}%`);
139
+
140
+ console.log('\nBy Platform:');
141
+ for (const platform of trades.byPlatform) {
142
+ console.log(` ${platform.name}:`);
143
+ console.log(` Fill rate: ${platform.fillRate}%`);
144
+ console.log(` Avg latency: ${platform.avgLatency}ms`);
145
+ }
146
+ ```
147
+
148
+ ### Latency Breakdown
149
+
150
+ ```typescript
151
+ const latency = await metrics.getLatencyBreakdown();
152
+
153
+ console.log('=== Latency Breakdown ===');
154
+ console.log(`Total order latency: ${latency.total}ms`);
155
+ console.log(` Signal processing: ${latency.signalProcessing}ms`);
156
+ console.log(` Order construction: ${latency.orderConstruction}ms`);
157
+ console.log(` Network round-trip: ${latency.networkRoundTrip}ms`);
158
+ console.log(` Exchange processing: ${latency.exchangeProcessing}ms`);
159
+ console.log(` Confirmation: ${latency.confirmation}ms`);
160
+ ```
161
+
162
+ ### Error Metrics
163
+
164
+ ```typescript
165
+ const errors = await metrics.getErrorMetrics();
166
+
167
+ console.log('=== Error Rates ===');
168
+ console.log(`Total errors: ${errors.totalErrors}`);
169
+ console.log(`Error rate: ${errors.errorRate}%`);
170
+ console.log(`Errors/hour: ${errors.errorsPerHour}`);
171
+
172
+ console.log('\nBy Type:');
173
+ for (const type of errors.byType) {
174
+ console.log(` ${type.name}: ${type.count} (${type.percentage}%)`);
175
+ }
176
+
177
+ console.log('\nBy Platform:');
178
+ for (const platform of errors.byPlatform) {
179
+ console.log(` ${platform.name}: ${platform.errorRate}%`);
180
+ }
181
+ ```
182
+
183
+ ### Custom Metrics
184
+
185
+ ```typescript
186
+ // Track custom metric
187
+ metrics.track('edge_detected', 1, {
188
+ market: 'trump-2028',
189
+ edgeSize: 0.05,
190
+ });
191
+
192
+ // Increment counter
193
+ metrics.increment('trades_executed');
194
+
195
+ // Set gauge
196
+ metrics.gauge('active_positions', 5);
197
+
198
+ // Record timing
199
+ const timer = metrics.startTimer('order_execution');
200
+ // ... execute order ...
201
+ timer.end();
202
+
203
+ // Histogram
204
+ metrics.histogram('slippage', 0.003, {
205
+ platform: 'polymarket',
206
+ });
207
+ ```
208
+
209
+ ### Query Metrics
210
+
211
+ ```typescript
212
+ const query = await metrics.query({
213
+ metric: 'edge_detected',
214
+ period: '7d',
215
+ aggregation: 'sum',
216
+ groupBy: 'market',
217
+ });
218
+
219
+ console.log('Edge Detection by Market:');
220
+ for (const row of query.results) {
221
+ console.log(` ${row.market}: ${row.value} detections`);
222
+ }
223
+ ```
224
+
225
+ ### Metric Alerts
226
+
227
+ ```typescript
228
+ // Set alert threshold
229
+ metrics.setAlert({
230
+ metric: 'error_rate',
231
+ condition: '>',
232
+ threshold: 5, // > 5% error rate
233
+ window: '5m',
234
+ action: 'notify',
235
+ });
236
+
237
+ metrics.setAlert({
238
+ metric: 'latency_p99',
239
+ condition: '>',
240
+ threshold: 1000, // > 1000ms
241
+ window: '1m',
242
+ action: 'escalate',
243
+ });
244
+
245
+ // Alert handlers
246
+ metrics.on('alert', (alert) => {
247
+ console.log(`🚨 Alert: ${alert.metric} ${alert.condition} ${alert.threshold}`);
248
+ console.log(` Current value: ${alert.currentValue}`);
249
+ });
250
+ ```
251
+
252
+ ### Export Metrics
253
+
254
+ ```typescript
255
+ // Export to CSV
256
+ await metrics.export({
257
+ format: 'csv',
258
+ metrics: ['api_latency', 'trade_fill_rate', 'error_rate'],
259
+ period: '30d',
260
+ outputPath: './metrics-export.csv',
261
+ });
262
+
263
+ // Export to Prometheus
264
+ const prometheusFormat = metrics.toPrometheus();
265
+
266
+ // Export to JSON
267
+ const jsonMetrics = await metrics.toJSON({
268
+ period: '24h',
269
+ });
270
+ ```
271
+
272
+ ### Generate Reports
273
+
274
+ ```typescript
275
+ const report = await metrics.generateReport({
276
+ type: 'daily',
277
+ include: ['summary', 'api', 'trades', 'errors'],
278
+ });
279
+
280
+ console.log('=== Daily Metrics Report ===');
281
+ console.log(`Date: ${report.date}`);
282
+ console.log(`\nSummary:`);
283
+ console.log(` Uptime: ${report.summary.uptime}%`);
284
+ console.log(` Total requests: ${report.summary.totalRequests}`);
285
+ console.log(` Total trades: ${report.summary.totalTrades}`);
286
+ console.log(` Error rate: ${report.summary.errorRate}%`);
287
+ console.log(`\nHighlights:`);
288
+ for (const highlight of report.highlights) {
289
+ console.log(` - ${highlight}`);
290
+ }
291
+ ```
292
+
293
+ ### Real-time Streaming
294
+
295
+ ```typescript
296
+ // Stream metrics in real-time
297
+ const stream = metrics.stream(['cpu', 'memory', 'latency']);
298
+
299
+ stream.on('data', (data) => {
300
+ console.log(`CPU: ${data.cpu}%, Memory: ${data.memory}MB, Latency: ${data.latency}ms`);
301
+ });
302
+
303
+ // Stop streaming
304
+ stream.stop();
305
+ ```
306
+
307
+ ---
308
+
309
+ ## Metric Types
310
+
311
+ | Type | Description | Example |
312
+ |------|-------------|---------|
313
+ | **Counter** | Monotonic increasing | `trades_total` |
314
+ | **Gauge** | Point-in-time value | `active_positions` |
315
+ | **Histogram** | Distribution | `latency_ms` |
316
+ | **Timer** | Duration measurement | `order_execution_time` |
317
+
318
+ ---
319
+
320
+ ## Built-in Metrics
321
+
322
+ | Category | Metrics |
323
+ |----------|---------|
324
+ | **System** | cpu_usage, memory_used, uptime, connections |
325
+ | **API** | request_count, latency_p50/p95/p99, error_rate |
326
+ | **WebSocket** | messages_per_sec, lag, reconnections |
327
+ | **Trades** | orders_total, fill_rate, slippage, execution_time |
328
+ | **Errors** | error_count, error_rate_by_type |
329
+
330
+ ---
331
+
332
+ ## Best Practices
333
+
334
+ 1. **Monitor latency percentiles** — P99 matters more than average
335
+ 2. **Set alerts proactively** — Catch issues before users notice
336
+ 3. **Track custom metrics** — Business-specific KPIs
337
+ 4. **Review daily reports** — Spot trends early
338
+ 5. **Export for analysis** — Use external tools for deep dives
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: mev
3
+ description: "MEV protection against sandwich attacks and front-running"
4
+ emoji: "🛡️"
5
+ ---
6
+
7
+ # MEV Protection - Complete API Reference
8
+
9
+ Protect trades from MEV (Maximal Extractable Value) attacks including sandwich attacks and front-running.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### Protection Settings
16
+
17
+ ```
18
+ /mev Show current protection
19
+ /mev status Protection status
20
+ /mev enable Enable protection
21
+ /mev disable Disable protection
22
+ ```
23
+
24
+ ### Configure Protection
25
+
26
+ ```
27
+ /mev level aggressive Maximum protection
28
+ /mev level standard Balanced protection
29
+ /mev level minimal Basic protection
30
+ /mev provider flashbots Use Flashbots
31
+ /mev provider mev-blocker Use MEV Blocker
32
+ ```
33
+
34
+ ### Check Transaction
35
+
36
+ ```
37
+ /mev check <tx-hash> Check if tx was attacked
38
+ /mev simulate <order> Simulate MEV risk
39
+ ```
40
+
41
+ ---
42
+
43
+ ## TypeScript API Reference
44
+
45
+ ### Create MEV Protection
46
+
47
+ ```typescript
48
+ import { createMEVProtection } from 'clodds/mev';
49
+
50
+ const mev = createMEVProtection({
51
+ // Default level
52
+ level: 'standard',
53
+
54
+ // Providers
55
+ providers: {
56
+ ethereum: 'flashbots', // 'flashbots' | 'mev-blocker'
57
+ solana: 'jito', // 'jito' | 'standard'
58
+ },
59
+
60
+ // Settings
61
+ maxPriorityFee: 5, // gwei
62
+ bundleTimeout: 60, // seconds
63
+ });
64
+ ```
65
+
66
+ ### Execute Protected Trade
67
+
68
+ ```typescript
69
+ // EVM trade with protection
70
+ const result = await mev.executeProtected({
71
+ chain: 'ethereum',
72
+ type: 'swap',
73
+ tokenIn: 'USDC',
74
+ tokenOut: 'ETH',
75
+ amountIn: 10000,
76
+ minAmountOut: calculateMinOut(10000, 0.5), // 0.5% slippage
77
+ });
78
+
79
+ console.log(`Tx hash: ${result.txHash}`);
80
+ console.log(`Protected: ${result.protected}`);
81
+ console.log(`Bundle ID: ${result.bundleId}`);
82
+ console.log(`Savings: $${result.estimatedSavings}`);
83
+ ```
84
+
85
+ ### Flashbots (Ethereum)
86
+
87
+ ```typescript
88
+ // Submit via Flashbots Protect
89
+ const result = await mev.flashbots({
90
+ to: routerAddress,
91
+ data: swapCalldata,
92
+ value: 0,
93
+ maxFeePerGas: parseGwei('50'),
94
+ maxPriorityFeePerGas: parseGwei('2'),
95
+ });
96
+
97
+ console.log(`Submitted to Flashbots`);
98
+ console.log(`Bundle hash: ${result.bundleHash}`);
99
+
100
+ // Wait for inclusion
101
+ const status = await mev.waitForInclusion(result.bundleHash);
102
+ console.log(`Included in block: ${status.blockNumber}`);
103
+ ```
104
+
105
+ ### MEV Blocker (Ethereum)
106
+
107
+ ```typescript
108
+ // Use MEV Blocker by CoW Protocol
109
+ const result = await mev.mevBlocker({
110
+ to: routerAddress,
111
+ data: swapCalldata,
112
+ value: 0,
113
+ });
114
+
115
+ // MEV Blocker automatically:
116
+ // - Protects from sandwich attacks
117
+ // - Backruns profitable MEV to you
118
+ // - Returns any captured MEV
119
+ console.log(`MEV captured: $${result.mevCaptured}`);
120
+ ```
121
+
122
+ ### Jito (Solana)
123
+
124
+ ```typescript
125
+ // Submit via Jito bundles
126
+ const result = await mev.jito({
127
+ instructions: swapInstructions,
128
+ tip: 10000, // lamports tip to validators
129
+ });
130
+
131
+ console.log(`Bundle ID: ${result.bundleId}`);
132
+ console.log(`Status: ${result.status}`);
133
+ ```
134
+
135
+ ### Check Transaction
136
+
137
+ ```typescript
138
+ // Check if a past transaction was attacked
139
+ const analysis = await mev.analyzeTransaction(txHash);
140
+
141
+ console.log(`Was attacked: ${analysis.wasAttacked}`);
142
+ if (analysis.wasAttacked) {
143
+ console.log(`Attack type: ${analysis.attackType}`);
144
+ console.log(`Attacker: ${analysis.attacker}`);
145
+ console.log(`Loss: $${analysis.estimatedLoss}`);
146
+ console.log(`Frontrun tx: ${analysis.frontrunTx}`);
147
+ console.log(`Backrun tx: ${analysis.backrunTx}`);
148
+ }
149
+ ```
150
+
151
+ ### Simulate MEV Risk
152
+
153
+ ```typescript
154
+ // Before trading, check MEV risk
155
+ const risk = await mev.simulateRisk({
156
+ chain: 'ethereum',
157
+ type: 'swap',
158
+ tokenIn: 'USDC',
159
+ tokenOut: 'PEPE',
160
+ amountIn: 50000,
161
+ });
162
+
163
+ console.log(`MEV risk: ${risk.level}`); // 'low' | 'medium' | 'high'
164
+ console.log(`Estimated max loss: $${risk.maxLoss}`);
165
+ console.log(`Recommendation: ${risk.recommendation}`);
166
+
167
+ if (risk.level === 'high') {
168
+ console.log('⚠️ High MEV risk - use protection!');
169
+ }
170
+ ```
171
+
172
+ ### Protection Levels
173
+
174
+ ```typescript
175
+ // Aggressive - maximum protection, slower
176
+ mev.setLevel('aggressive', {
177
+ usePrivateMempool: true,
178
+ bundleOnly: true,
179
+ maxSlippage: 0.1,
180
+ waitForProtection: true,
181
+ });
182
+
183
+ // Standard - balanced protection
184
+ mev.setLevel('standard', {
185
+ usePrivateMempool: true,
186
+ bundleOnly: false,
187
+ maxSlippage: 0.5,
188
+ });
189
+
190
+ // Minimal - basic protection
191
+ mev.setLevel('minimal', {
192
+ usePrivateMempool: false,
193
+ bundleOnly: false,
194
+ maxSlippage: 1.0,
195
+ });
196
+ ```
197
+
198
+ ---
199
+
200
+ ## MEV Attack Types
201
+
202
+ | Attack | Description | Protection |
203
+ |--------|-------------|------------|
204
+ | **Sandwich** | Front + backrun your trade | Private mempool |
205
+ | **Front-running** | Copy your trade first | Private mempool |
206
+ | **Back-running** | Profit after your trade | Jito/Flashbots |
207
+ | **JIT Liquidity** | Manipulate pool | Slippage limits |
208
+
209
+ ---
210
+
211
+ ## Protection Providers
212
+
213
+ | Chain | Provider | Method |
214
+ |-------|----------|--------|
215
+ | **Ethereum** | Flashbots Protect | Private relay |
216
+ | **Ethereum** | MEV Blocker | CoW Protocol |
217
+ | **Solana** | Jito | Bundle submission |
218
+ | **L2s** | Native | Sequencer protection |
219
+
220
+ ---
221
+
222
+ ## When to Use Protection
223
+
224
+ | Trade Size | Token | Recommendation |
225
+ |------------|-------|----------------|
226
+ | < $1,000 | Major | Minimal |
227
+ | $1,000 - $10,000 | Major | Standard |
228
+ | > $10,000 | Major | Aggressive |
229
+ | Any size | Meme/Low liquidity | Aggressive |
230
+
231
+ ---
232
+
233
+ ## Best Practices
234
+
235
+ 1. **Always protect large trades** — MEV bots watch everything
236
+ 2. **Use tight slippage** — Limits attack profitability
237
+ 3. **Check before trading** — Simulate MEV risk
238
+ 4. **Review transactions** — Learn from past attacks
239
+ 5. **L2s are safer** — Sequencer provides natural protection
@@ -81,8 +81,8 @@ async function execute(args) {
81
81
  return helpText();
82
82
  }
83
83
  }
84
- catch {
85
- return helpText();
84
+ catch (error) {
85
+ return `Error: ${error instanceof Error ? error.message : String(error)}`;
86
86
  }
87
87
  }
88
88
  function helpText() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/mev/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,IAAI,YAAY,GAAuB,OAAO,CAAC;AAE/C,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,wDAAa,mCAAmC,GAAC,CAAC;QAE9D,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,uCAAuC,YAAY,+FAA+F,CAAC;YAE5J,KAAK,QAAQ;gBACX,OAAO,uCAAuC,YAAY,iOAAiO,CAAC;YAE9R,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACtC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;oBACpE,OAAO,yCAAyC,CAAC;gBACnD,CAAC;gBACD,YAAY,GAAG,KAAK,CAAC;gBACrB,OAAO,iCAAiC,KAAK,KAAK,CAAC;YACrD,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,KAAK,CAAC,MAAM,CAAC;oBAAE,OAAO,6BAA6B,CAAC;gBACxD,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,aAAa;gBAClC,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;gBACtE,OAAO,2CAA2C,MAAM,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,kBAAkB,SAAS,GAAG,CAAC;YACxN,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBACjD,IAAI,KAAK,CAAC,GAAG,CAAC;oBAAE,OAAO,2CAA2C,CAAC;gBACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC3D,OAAO,wBAAwB,GAAG,sBAAsB,QAAQ,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;YACtJ,CAAC;YAED;gBACE,OAAO,QAAQ,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;;;;;;6DAWoD,CAAC;AAC9D,CAAC;AAED,kBAAe;IACb,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,qEAAqE;IAClF,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO;CAChB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/mev/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: mexc-futures
3
+ description: MEXC Futures trading with DB tracking (No KYC)
4
+ emoji: "🔵"
5
+ commands:
6
+ - /mx
7
+ gates:
8
+ envs:
9
+ - MEXC_API_KEY
10
+ ---
11
+
12
+ # MEXC Futures
13
+
14
+ Trade perpetual futures on MEXC with up to 200x leverage. No KYC required for small amounts.
15
+
16
+ ## Quick Start
17
+
18
+ ```bash
19
+ # Set credentials
20
+ export MEXC_API_KEY="your-api-key"
21
+ export MEXC_API_SECRET="your-api-secret"
22
+
23
+ # Check balance
24
+ /mx balance
25
+
26
+ # Open position
27
+ /mx long BTC_USDT 1 10x
28
+
29
+ # View stats
30
+ /mx stats
31
+ ```
32
+
33
+ ## Commands
34
+
35
+ ### Account
36
+
37
+ | Command | Description |
38
+ |---------|-------------|
39
+ | `/mx balance` | Check account balance |
40
+ | `/mx positions` | View open positions |
41
+ | `/mx orders` | List open orders |
42
+
43
+ ### Trading
44
+
45
+ | Command | Description |
46
+ |---------|-------------|
47
+ | `/mx long <symbol> <vol> [leverage]x` | Open long position |
48
+ | `/mx short <symbol> <vol> [leverage]x` | Open short position |
49
+ | `/mx close <symbol>` | Close position |
50
+ | `/mx closeall` | Close all positions |
51
+ | `/mx leverage <symbol> <value>` | Set leverage |
52
+
53
+ ### Market Data
54
+
55
+ | Command | Description |
56
+ |---------|-------------|
57
+ | `/mx price <symbol>` | Get current price |
58
+ | `/mx funding <symbol>` | Check funding rate |
59
+ | `/mx markets [query]` | List markets |
60
+
61
+ ### Database/History
62
+
63
+ | Command | Description |
64
+ |---------|-------------|
65
+ | `/mx trades [symbol] [limit]` | Trade history from database |
66
+ | `/mx dbstats [symbol] [period]` | Win rate, PnL, profit factor |
67
+ | `/mx dbfunding [symbol]` | Funding payments history |
68
+ | `/mx dbpositions [all]` | Position history |
69
+
70
+ **Stats periods:** `day`, `week`, `month`
71
+
72
+ ## Examples
73
+
74
+ ```bash
75
+ /mx long BTC_USDT 1 10x # 10x leveraged long, 1 contract
76
+ /mx short ETH_USDT 5 20x # 20x leveraged short, 5 contracts
77
+ /mx close BTC_USDT # Close BTC position
78
+ /mx trades BTC_USDT 20 # Last 20 BTC trades
79
+ /mx stats ETH_USDT week # ETH stats for past week
80
+ ```
81
+
82
+ ## Notes
83
+
84
+ - MEXC uses contract notation (e.g., `BTC_USDT` not `BTCUSDT`)
85
+ - No KYC required for smaller trading volumes
86
+ - Up to 200x leverage available
@@ -8,9 +8,6 @@ declare const skill: {
8
8
  name: string;
9
9
  description: string;
10
10
  commands: string[];
11
- requires: {
12
- env: string[];
13
- };
14
11
  handle(args: string): Promise<string>;
15
12
  };
16
13
  export default skill;
@@ -335,7 +335,6 @@ const skill = {
335
335
  name: 'mexc-futures',
336
336
  description: 'MEXC Futures trading with DB tracking (No KYC, 200x)',
337
337
  commands: ['/mx'],
338
- requires: { env: ['MEXC_API_KEY', 'MEXC_API_SECRET'] },
339
338
  async handle(args) {
340
339
  const parts = args.trim().split(/\s+/);
341
340
  const cmd = parts[0]?.toLowerCase();