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,82 @@
1
+ ---
2
+ name: virtuals
3
+ description: "Virtuals Protocol AI Agent marketplace (Base chain)"
4
+ emoji: "🤖"
5
+ commands:
6
+ - /virt
7
+ ---
8
+
9
+ # Virtuals Protocol
10
+
11
+ Integration with Virtuals Protocol, an AI Agent marketplace on Base chain. View agents, prices, and bonding curve data.
12
+
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ # Search agents
17
+ /virt search luna
18
+
19
+ # Get agent details
20
+ /virt agent <id>
21
+
22
+ # Trending agents
23
+ /virt trending
24
+
25
+ # New agents
26
+ /virt new
27
+ ```
28
+
29
+ ## Commands
30
+
31
+ | Command | Description |
32
+ |---------|-------------|
33
+ | `/virt search [query]` | Search agents |
34
+ | `/virt agent <id>` | Get agent details |
35
+ | `/virt agents` | List all agents |
36
+ | `/virt trending` | Trending agents (by volume) |
37
+ | `/virt new` | Recently launched agents |
38
+ | `/virt price <tokenAddress>` | Get bonding curve price |
39
+ | `/virt graduation <tokenAddress>` | Check graduation progress |
40
+
41
+ **Examples:**
42
+ ```bash
43
+ /virt search gaming # Search gaming agents
44
+ /virt agent abc123 # Get specific agent
45
+ /virt trending # Top volume agents
46
+ /virt graduation 0x... # Check if graduated
47
+ ```
48
+
49
+ ## Features
50
+
51
+ - **AI Agents** - Discover AI agents with unique personalities
52
+ - **Bonding Curves** - Price discovery via bonding curves
53
+ - **Graduation** - Track agents graduating to Uniswap
54
+ - **Categories** - Gaming, social, utility, etc.
55
+
56
+ ## Agent Status
57
+
58
+ | Status | Description |
59
+ |--------|-------------|
60
+ | prototype | New, on bonding curve |
61
+ | sentient | Active, growing community |
62
+ | graduated | Migrated to Uniswap |
63
+
64
+ ## Bonding Curve
65
+
66
+ Agents start on bonding curves:
67
+ - Price increases with demand
68
+ - ~42K VIRTUAL triggers graduation
69
+ - Graduation creates Uniswap pair
70
+ - LP tokens sent to creator vault
71
+
72
+ ## Configuration
73
+
74
+ ```bash
75
+ # Optional - custom RPC
76
+ export BASE_RPC_URL="https://mainnet.base.org"
77
+ ```
78
+
79
+ ## Resources
80
+
81
+ - [Virtuals Protocol](https://virtuals.io/)
82
+ - [Base Chain](https://base.org/)
@@ -0,0 +1,217 @@
1
+ ---
2
+ name: voice
3
+ description: "Voice recognition, wake words, and voice-controlled trading"
4
+ emoji: "🎤"
5
+ gates:
6
+ envs:
7
+ anyOf:
8
+ - OPENAI_API_KEY
9
+ - WHISPER_MODEL_PATH
10
+ ---
11
+
12
+ # Voice - Complete API Reference
13
+
14
+ Voice-controlled interface with wake word detection, speech-to-text, and text-to-speech.
15
+
16
+ ---
17
+
18
+ ## Chat Commands
19
+
20
+ ### Voice Control
21
+
22
+ ```
23
+ /voice start Start voice listening
24
+ /voice stop Stop voice listening
25
+ /voice status Check voice status
26
+ /voice wake "hey clodds" Set wake word
27
+ ```
28
+
29
+ ### Settings
30
+
31
+ ```
32
+ /voice language en-US Set language
33
+ /voice sensitivity high Wake word sensitivity
34
+ /voice timeout 30 Silence timeout (seconds)
35
+ /voice continuous on Enable continuous mode
36
+ ```
37
+
38
+ ---
39
+
40
+ ## TypeScript API Reference
41
+
42
+ ### Create Voice Assistant
43
+
44
+ ```typescript
45
+ import { createVoiceAssistant } from 'clodds/voice';
46
+
47
+ const voice = createVoiceAssistant({
48
+ // Wake word
49
+ wakeWord: 'hey clodds',
50
+ wakeWordSensitivity: 0.5, // 0-1
51
+
52
+ // Speech-to-text
53
+ stt: {
54
+ provider: 'whisper', // 'whisper' | 'vosk' | 'google'
55
+ model: 'base', // 'tiny' | 'base' | 'small' | 'medium' | 'large'
56
+ language: 'en',
57
+ },
58
+
59
+ // Text-to-speech
60
+ tts: {
61
+ provider: 'elevenlabs', // 'elevenlabs' | 'say' | 'espeak'
62
+ voice: 'rachel',
63
+ speed: 1.0,
64
+ },
65
+
66
+ // Timeouts
67
+ silenceTimeoutMs: 3000,
68
+ maxRecordingMs: 30000,
69
+ });
70
+ ```
71
+
72
+ ### Start/Stop Listening
73
+
74
+ ```typescript
75
+ // Start listening for wake word
76
+ await voice.start();
77
+
78
+ // Check if listening
79
+ const isListening = voice.isListening();
80
+
81
+ // Stop listening
82
+ await voice.stop();
83
+ ```
84
+
85
+ ### Event Handlers
86
+
87
+ ```typescript
88
+ // Wake word detected
89
+ voice.on('wake', () => {
90
+ console.log('Wake word detected!');
91
+ });
92
+
93
+ // Speech recognized
94
+ voice.on('speech', (text: string) => {
95
+ console.log(`User said: ${text}`);
96
+ });
97
+
98
+ // Transcription complete
99
+ voice.on('transcript', (result) => {
100
+ console.log(`Final: ${result.text}`);
101
+ console.log(`Confidence: ${result.confidence}`);
102
+ console.log(`Duration: ${result.durationMs}ms`);
103
+ });
104
+
105
+ // Error handling
106
+ voice.on('error', (error) => {
107
+ console.error('Voice error:', error);
108
+ });
109
+
110
+ // Silence detected
111
+ voice.on('silence', () => {
112
+ console.log('User stopped speaking');
113
+ });
114
+ ```
115
+
116
+ ### Speak (TTS)
117
+
118
+ ```typescript
119
+ // Speak text
120
+ await voice.speak('Your order has been placed');
121
+
122
+ // Speak with options
123
+ await voice.speak('Market is up 5%', {
124
+ voice: 'josh',
125
+ speed: 1.2,
126
+ pitch: 1.0,
127
+ });
128
+
129
+ // Cancel speaking
130
+ voice.cancelSpeech();
131
+ ```
132
+
133
+ ### Manual Transcription
134
+
135
+ ```typescript
136
+ // Transcribe audio buffer
137
+ const result = await voice.transcribe(audioBuffer, {
138
+ language: 'en',
139
+ prompt: 'Trading commands', // Context hint
140
+ });
141
+
142
+ console.log(`Text: ${result.text}`);
143
+ console.log(`Language: ${result.language}`);
144
+ ```
145
+
146
+ ### Voice Activity Detection
147
+
148
+ ```typescript
149
+ // Check if user is speaking
150
+ const vad = voice.getVAD();
151
+
152
+ vad.on('speechStart', () => {
153
+ console.log('User started speaking');
154
+ });
155
+
156
+ vad.on('speechEnd', (audio) => {
157
+ console.log('User stopped speaking');
158
+ // audio contains the recorded speech
159
+ });
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Wake Word Configuration
165
+
166
+ | Setting | Values | Description |
167
+ |---------|--------|-------------|
168
+ | `wakeWord` | Any phrase | Trigger phrase |
169
+ | `sensitivity` | 0.0 - 1.0 | Detection threshold |
170
+
171
+ **Built-in wake words:**
172
+ - "hey clodds"
173
+ - "okay clodds"
174
+ - "clodds"
175
+
176
+ ---
177
+
178
+ ## STT Providers
179
+
180
+ | Provider | Quality | Speed | Offline |
181
+ |----------|---------|-------|---------|
182
+ | **Whisper** | Excellent | Medium | Yes |
183
+ | **Vosk** | Good | Fast | Yes |
184
+ | **Google** | Excellent | Fast | No |
185
+
186
+ ---
187
+
188
+ ## TTS Providers
189
+
190
+ | Provider | Quality | Voices | API Key |
191
+ |----------|---------|--------|---------|
192
+ | **ElevenLabs** | Premium | 30+ | Required |
193
+ | **say** (macOS) | Good | System | None |
194
+ | **espeak** | Basic | Many | None |
195
+
196
+ ---
197
+
198
+ ## Voice Commands Examples
199
+
200
+ Once voice is active, speak naturally:
201
+
202
+ ```
203
+ "Hey Clodds, what's my portfolio value?"
204
+ "Hey Clodds, buy 100 dollars of Trump YES"
205
+ "Hey Clodds, what are the top arbitrage opportunities?"
206
+ "Hey Clodds, set a price alert for Bitcoin at 100k"
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Best Practices
212
+
213
+ 1. **Quiet environment** — Background noise affects accuracy
214
+ 2. **Clear speech** — Speak clearly for best recognition
215
+ 3. **Short commands** — Keep voice commands concise
216
+ 4. **Confirmation** — Enable confirmations for trades
217
+ 5. **Fallback** — Text input always available
@@ -166,8 +166,8 @@ async function execute(args) {
166
166
  return helpText();
167
167
  }
168
168
  }
169
- catch {
170
- return helpText();
169
+ catch (error) {
170
+ return `Error: ${error instanceof Error ? error.message : String(error)}`;
171
171
  }
172
172
  }
173
173
  function helpText() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/voice/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/voice/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: weather
3
+ description: "Weather betting - NOAA data for Polymarket weather markets"
4
+ command: weather
5
+ emoji: "🌤️"
6
+ gates:
7
+ envs:
8
+ - POLY_API_KEY
9
+ ---
10
+
11
+ # Weather Betting
12
+
13
+ Use NOAA weather forecasts to find edge on Polymarket weather markets.
14
+
15
+ ## Commands
16
+
17
+ ```
18
+ /weather scan Scan all weather markets for edge
19
+ /weather forecast <city> Get NOAA forecast for a city
20
+ /weather markets List active weather markets
21
+ /weather edge <market-id> Calculate edge for specific market
22
+ /weather bet <market-id> <amount> Execute bet
23
+ /weather auto [--threshold 10] Auto-bet on high-edge markets
24
+ /weather history View bet history
25
+ ```
26
+
27
+ ## Examples
28
+
29
+ ```
30
+ /weather forecast "New York"
31
+ /weather scan
32
+ /weather edge abc123
33
+ /weather bet abc123 10
34
+ /weather auto --threshold 15
35
+ ```
36
+
37
+ ## How It Works
38
+
39
+ 1. **Fetch NOAA Forecast**: Get official NWS weather data (free, no API key)
40
+ 2. **Match to Markets**: Find Polymarket weather markets for the same location/date
41
+ 3. **Calculate Edge**: Compare NOAA probability to market YES price
42
+ 4. **Bet if Edge**: If NOAA probability differs significantly from market, bet
43
+
44
+ ## Edge Calculation
45
+
46
+ ```
47
+ Edge = NOAA Probability - Market Price
48
+
49
+ Example:
50
+ NOAA says 80% chance of rain in NYC tomorrow
51
+ Polymarket "Will it rain in NYC?" YES price: 0.65 (65%)
52
+ Edge = 80% - 65% = +15% -> Bet YES
53
+ ```
54
+
55
+ ## Supported Market Types
56
+
57
+ - **Temperature**: "Will NYC exceed 90°F on Saturday?"
58
+ - **Precipitation**: "Will it rain in LA tomorrow?"
59
+ - **Snow**: "Will Chicago get 6+ inches of snow?"
60
+ - **Record**: "Will Phoenix hit a record high this week?"
61
+
62
+ ## Confidence Levels
63
+
64
+ - **High**: Edge >= 15%, reliable forecast data
65
+ - **Medium**: Edge 10-15%, some uncertainty
66
+ - **Low**: Edge 5-10%, more speculative
67
+
68
+ ## Position Sizing
69
+
70
+ Uses quarter-Kelly criterion for conservative sizing:
71
+
72
+ ```
73
+ Bet Size = Bankroll * (Edge / Odds) * 0.25
74
+ ```
75
+
76
+ Capped at 10% of bankroll per bet.
77
+
78
+ ## Supported Cities
79
+
80
+ Major US cities including: New York, Los Angeles, Chicago, Houston, Phoenix, Philadelphia, San Antonio, San Diego, Dallas, San Jose, Austin, Jacksonville, San Francisco, Seattle, Denver, Washington DC, Boston, Nashville, Detroit, and more.
@@ -0,0 +1,297 @@
1
+ ---
2
+ name: webhooks
3
+ description: "Incoming webhooks for custom data and signal ingestion"
4
+ emoji: "🪝"
5
+ ---
6
+
7
+ # Webhooks - Complete API Reference
8
+
9
+ Create incoming webhook endpoints to receive external signals, data, and trigger actions.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### Create Webhooks
16
+
17
+ ```
18
+ /webhook create trading-signals Create new webhook
19
+ /webhook create alerts --secret abc123 With custom secret
20
+ /webhook list List all webhooks
21
+ ```
22
+
23
+ ### Manage Webhooks
24
+
25
+ ```
26
+ /webhook info <name> View webhook details
27
+ /webhook url <name> Get webhook URL
28
+ /webhook regenerate <name> New URL/secret
29
+ /webhook delete <name> Remove webhook
30
+ ```
31
+
32
+ ### Testing
33
+
34
+ ```
35
+ /webhook test <name> Send test payload
36
+ /webhook test <name> '{"signal":"BUY"}' Custom test payload
37
+ /webhook logs <name> View recent payloads
38
+ /webhook debug <name> Enable debug mode
39
+ ```
40
+
41
+ ### Actions
42
+
43
+ ```
44
+ /webhook action <name> add notify Add action on trigger
45
+ /webhook action <name> add execute Add trading action
46
+ /webhook action <name> remove <id> Remove action
47
+ /webhook action <name> list List actions
48
+ ```
49
+
50
+ ---
51
+
52
+ ## TypeScript API Reference
53
+
54
+ ### Create Webhook Manager
55
+
56
+ ```typescript
57
+ import { createWebhookManager } from 'clodds/webhooks';
58
+
59
+ const webhooks = createWebhookManager({
60
+ // Base URL for webhooks
61
+ baseUrl: 'https://your-domain.com',
62
+
63
+ // Default settings
64
+ defaultSecret: process.env.WEBHOOK_SECRET,
65
+ validateSignatures: true,
66
+
67
+ // Storage
68
+ storage: 'sqlite',
69
+ dbPath: './webhooks.db',
70
+
71
+ // Logging
72
+ logPayloads: true,
73
+ maxLogEntries: 1000,
74
+ });
75
+ ```
76
+
77
+ ### Create Webhook
78
+
79
+ ```typescript
80
+ // Create simple webhook
81
+ const hook = await webhooks.create({
82
+ name: 'trading-signals',
83
+ description: 'Receive external trading signals',
84
+ });
85
+
86
+ console.log(`Webhook URL: ${hook.url}`);
87
+ console.log(`Secret: ${hook.secret}`);
88
+
89
+ // Create with schema validation
90
+ const hook = await webhooks.create({
91
+ name: 'price-alerts',
92
+ description: 'Price alert triggers',
93
+ schema: {
94
+ type: 'object',
95
+ properties: {
96
+ symbol: { type: 'string' },
97
+ price: { type: 'number' },
98
+ direction: { enum: ['above', 'below'] },
99
+ },
100
+ required: ['symbol', 'price', 'direction'],
101
+ },
102
+ });
103
+ ```
104
+
105
+ ### Handle Webhook
106
+
107
+ ```typescript
108
+ // Register handler
109
+ webhooks.onReceive('trading-signals', async (payload, metadata) => {
110
+ console.log(`Received signal: ${JSON.stringify(payload)}`);
111
+ console.log(`From IP: ${metadata.ip}`);
112
+ console.log(`Timestamp: ${metadata.timestamp}`);
113
+
114
+ // Process the signal
115
+ if (payload.action === 'BUY') {
116
+ await tradingBot.buy(payload.symbol, payload.amount);
117
+ }
118
+
119
+ // Return response
120
+ return { status: 'processed', id: metadata.id };
121
+ });
122
+ ```
123
+
124
+ ### Add Actions
125
+
126
+ ```typescript
127
+ // Add notification action
128
+ await webhooks.addAction('trading-signals', {
129
+ type: 'notify',
130
+ channels: ['telegram', 'discord'],
131
+ template: 'New signal: {{action}} {{symbol}} @ {{price}}',
132
+ });
133
+
134
+ // Add trading action
135
+ await webhooks.addAction('trading-signals', {
136
+ type: 'execute',
137
+ condition: (payload) => payload.confidence > 0.8,
138
+ action: async (payload) => {
139
+ return await tradingBot.execute({
140
+ platform: 'polymarket',
141
+ market: payload.market,
142
+ side: payload.side,
143
+ size: payload.size,
144
+ });
145
+ },
146
+ });
147
+
148
+ // Add logging action
149
+ await webhooks.addAction('trading-signals', {
150
+ type: 'log',
151
+ destination: 'database',
152
+ table: 'signal_history',
153
+ });
154
+ ```
155
+
156
+ ### Get Webhook Info
157
+
158
+ ```typescript
159
+ const info = await webhooks.get('trading-signals');
160
+
161
+ console.log(`Name: ${info.name}`);
162
+ console.log(`URL: ${info.url}`);
163
+ console.log(`Created: ${info.createdAt}`);
164
+ console.log(`Triggers: ${info.triggerCount}`);
165
+ console.log(`Last trigger: ${info.lastTrigger}`);
166
+ console.log(`Actions: ${info.actions.length}`);
167
+ ```
168
+
169
+ ### View Logs
170
+
171
+ ```typescript
172
+ // Get recent payloads
173
+ const logs = await webhooks.getLogs('trading-signals', {
174
+ limit: 50,
175
+ since: Date.now() - 24 * 60 * 60 * 1000, // Last 24h
176
+ });
177
+
178
+ for (const log of logs) {
179
+ console.log(`[${log.timestamp}] ${log.status}`);
180
+ console.log(` Payload: ${JSON.stringify(log.payload)}`);
181
+ console.log(` Response: ${JSON.stringify(log.response)}`);
182
+ }
183
+ ```
184
+
185
+ ### Test Webhook
186
+
187
+ ```typescript
188
+ // Send test payload
189
+ const result = await webhooks.test('trading-signals', {
190
+ action: 'BUY',
191
+ symbol: 'BTC',
192
+ price: 100000,
193
+ confidence: 0.95,
194
+ });
195
+
196
+ console.log(`Test result: ${result.status}`);
197
+ console.log(`Response: ${JSON.stringify(result.response)}`);
198
+ ```
199
+
200
+ ### Delete Webhook
201
+
202
+ ```typescript
203
+ await webhooks.delete('trading-signals');
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Webhook Security
209
+
210
+ ### Signature Validation
211
+
212
+ ```typescript
213
+ // Webhooks use HMAC-SHA256 signatures
214
+ // Header: X-Webhook-Signature: sha256=<signature>
215
+
216
+ // Verify in your sender:
217
+ const crypto = require('crypto');
218
+ const signature = crypto
219
+ .createHmac('sha256', webhookSecret)
220
+ .update(JSON.stringify(payload))
221
+ .digest('hex');
222
+
223
+ fetch(webhookUrl, {
224
+ method: 'POST',
225
+ headers: {
226
+ 'Content-Type': 'application/json',
227
+ 'X-Webhook-Signature': `sha256=${signature}`,
228
+ },
229
+ body: JSON.stringify(payload),
230
+ });
231
+ ```
232
+
233
+ ### IP Allowlist
234
+
235
+ ```typescript
236
+ const hook = await webhooks.create({
237
+ name: 'secure-signals',
238
+ allowedIps: ['192.168.1.0/24', '10.0.0.1'],
239
+ });
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Sending Webhooks (External)
245
+
246
+ ```bash
247
+ # Send signal to your webhook
248
+ curl -X POST https://your-domain.com/webhooks/trading-signals \
249
+ -H "Content-Type: application/json" \
250
+ -H "X-Webhook-Signature: sha256=<signature>" \
251
+ -d '{"action": "BUY", "symbol": "TRUMP-YES", "size": 100}'
252
+ ```
253
+
254
+ ```python
255
+ # Python example
256
+ import requests
257
+ import hmac
258
+ import hashlib
259
+ import json
260
+
261
+ payload = {"action": "BUY", "symbol": "TRUMP-YES", "size": 100}
262
+ secret = "your-webhook-secret"
263
+ signature = hmac.new(
264
+ secret.encode(),
265
+ json.dumps(payload).encode(),
266
+ hashlib.sha256
267
+ ).hexdigest()
268
+
269
+ requests.post(
270
+ "https://your-domain.com/webhooks/trading-signals",
271
+ json=payload,
272
+ headers={"X-Webhook-Signature": f"sha256={signature}"}
273
+ )
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Action Types
279
+
280
+ | Type | Description |
281
+ |------|-------------|
282
+ | `notify` | Send notification to channels |
283
+ | `execute` | Execute trading action |
284
+ | `log` | Log to database |
285
+ | `forward` | Forward to another webhook |
286
+ | `custom` | Custom function |
287
+
288
+ ---
289
+
290
+ ## Best Practices
291
+
292
+ 1. **Always use signatures** — Validate webhook authenticity
293
+ 2. **Schema validation** — Reject malformed payloads
294
+ 3. **Idempotency** — Handle duplicate deliveries
295
+ 4. **Logging** — Keep payload history for debugging
296
+ 5. **Rate limiting** — Protect against floods
297
+ 6. **Error handling** — Return proper status codes