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.
- package/dist/skills/bundled/acp/SKILL.md +188 -0
- package/dist/skills/bundled/acp/index.d.ts +0 -3
- package/dist/skills/bundled/acp/index.js +1 -1
- package/dist/skills/bundled/acp/index.js.map +1 -1
- package/dist/skills/bundled/agentbets/SKILL.md +19 -0
- package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
- package/dist/skills/bundled/ai-strategy/index.js +1 -1
- package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
- package/dist/skills/bundled/alerts/SKILL.md +87 -0
- package/dist/skills/bundled/analytics/SKILL.md +252 -0
- package/dist/skills/bundled/analytics/index.js +2 -2
- package/dist/skills/bundled/analytics/index.js.map +1 -1
- package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
- package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
- package/dist/skills/bundled/auto-reply/index.js +2 -2
- package/dist/skills/bundled/auto-reply/index.js.map +1 -1
- package/dist/skills/bundled/automation/SKILL.md +242 -0
- package/dist/skills/bundled/automation/index.js +2 -2
- package/dist/skills/bundled/automation/index.js.map +1 -1
- package/dist/skills/bundled/backtest/SKILL.md +225 -0
- package/dist/skills/bundled/bags/SKILL.md +131 -0
- package/dist/skills/bundled/bankr/SKILL.md +114 -0
- package/dist/skills/bundled/betfair/SKILL.md +113 -0
- package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
- package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
- package/dist/skills/bundled/binance-futures/index.js +1 -2
- package/dist/skills/bundled/binance-futures/index.js.map +1 -1
- package/dist/skills/bundled/botchan/SKILL.md +66 -0
- package/dist/skills/bundled/botchan/index.d.ts +0 -3
- package/dist/skills/bundled/botchan/index.js +0 -1
- package/dist/skills/bundled/botchan/index.js.map +1 -1
- package/dist/skills/bundled/bridge/SKILL.md +215 -0
- package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
- package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
- package/dist/skills/bundled/bybit-futures/index.js +0 -1
- package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
- package/dist/skills/bundled/clanker/SKILL.md +125 -0
- package/dist/skills/bundled/clanker/index.d.ts +0 -3
- package/dist/skills/bundled/clanker/index.js +0 -1
- package/dist/skills/bundled/clanker/index.js.map +1 -1
- package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
- package/dist/skills/bundled/copy-trading/index.js +2 -2
- package/dist/skills/bundled/copy-trading/index.js.map +1 -1
- package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
- package/dist/skills/bundled/credentials/SKILL.md +261 -0
- package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
- package/dist/skills/bundled/dca/SKILL.md +27 -0
- package/dist/skills/bundled/dex/SKILL.md +87 -0
- package/dist/skills/bundled/dex/index.d.ts +36 -0
- package/dist/skills/bundled/dex/index.js +537 -0
- package/dist/skills/bundled/dex/index.js.map +1 -0
- package/dist/skills/bundled/divergence/SKILL.md +83 -0
- package/dist/skills/bundled/doctor/SKILL.md +267 -0
- package/dist/skills/bundled/doctor/index.js +2 -8
- package/dist/skills/bundled/doctor/index.js.map +1 -1
- package/dist/skills/bundled/drift/SKILL.md +53 -0
- package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
- package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
- package/dist/skills/bundled/drift-sdk/index.js +0 -1
- package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
- package/dist/skills/bundled/edge/SKILL.md +84 -0
- package/dist/skills/bundled/embeddings/SKILL.md +244 -0
- package/dist/skills/bundled/endaoment/SKILL.md +65 -0
- package/dist/skills/bundled/endaoment/index.d.ts +0 -3
- package/dist/skills/bundled/endaoment/index.js +0 -1
- package/dist/skills/bundled/endaoment/index.js.map +1 -1
- package/dist/skills/bundled/ens/SKILL.md +63 -0
- package/dist/skills/bundled/ens/index.d.ts +0 -3
- package/dist/skills/bundled/ens/index.js +0 -1
- package/dist/skills/bundled/ens/index.js.map +1 -1
- package/dist/skills/bundled/erc8004/SKILL.md +79 -0
- package/dist/skills/bundled/erc8004/index.d.ts +0 -3
- package/dist/skills/bundled/erc8004/index.js +0 -1
- package/dist/skills/bundled/erc8004/index.js.map +1 -1
- package/dist/skills/bundled/execution/SKILL.md +278 -0
- package/dist/skills/bundled/farcaster/SKILL.md +80 -0
- package/dist/skills/bundled/features/SKILL.md +20 -0
- package/dist/skills/bundled/feeds/SKILL.md +288 -0
- package/dist/skills/bundled/harden/SKILL.md +74 -0
- package/dist/skills/bundled/history/SKILL.md +257 -0
- package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
- package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
- package/dist/skills/bundled/hyperliquid/index.js +0 -1
- package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
- package/dist/skills/bundled/identity/SKILL.md +228 -0
- package/dist/skills/bundled/identity/index.js +2 -2
- package/dist/skills/bundled/identity/index.js.map +1 -1
- package/dist/skills/bundled/integrations/SKILL.md +321 -0
- package/dist/skills/bundled/integrations/index.js +2 -2
- package/dist/skills/bundled/integrations/index.js.map +1 -1
- package/dist/skills/bundled/jupiter/SKILL.md +163 -0
- package/dist/skills/bundled/kamino/SKILL.md +69 -0
- package/dist/skills/bundled/ledger/SKILL.md +20 -0
- package/dist/skills/bundled/lighter/SKILL.md +83 -0
- package/dist/skills/bundled/lighter/index.d.ts +0 -3
- package/dist/skills/bundled/lighter/index.js +0 -1
- package/dist/skills/bundled/lighter/index.js.map +1 -1
- package/dist/skills/bundled/marginfi/SKILL.md +62 -0
- package/dist/skills/bundled/market-index/SKILL.md +242 -0
- package/dist/skills/bundled/market-index/index.js +1 -3
- package/dist/skills/bundled/market-index/index.js.map +1 -1
- package/dist/skills/bundled/markets/SKILL.md +49 -0
- package/dist/skills/bundled/mcp/SKILL.md +235 -0
- package/dist/skills/bundled/mcp/index.js +1 -3
- package/dist/skills/bundled/mcp/index.js.map +1 -1
- package/dist/skills/bundled/memory/SKILL.md +209 -0
- package/dist/skills/bundled/metaculus/SKILL.md +62 -0
- package/dist/skills/bundled/meteora/SKILL.md +28 -0
- package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
- package/dist/skills/bundled/metrics/SKILL.md +338 -0
- package/dist/skills/bundled/mev/SKILL.md +239 -0
- package/dist/skills/bundled/mev/index.js +2 -2
- package/dist/skills/bundled/mev/index.js.map +1 -1
- package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
- package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
- package/dist/skills/bundled/mexc-futures/index.js +0 -1
- package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
- package/dist/skills/bundled/mm/SKILL.md +142 -0
- package/dist/skills/bundled/monitoring/SKILL.md +249 -0
- package/dist/skills/bundled/news/SKILL.md +95 -0
- package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
- package/dist/skills/bundled/opinion/SKILL.md +87 -0
- package/dist/skills/bundled/opportunity/SKILL.md +308 -0
- package/dist/skills/bundled/orca/SKILL.md +28 -0
- package/dist/skills/bundled/pairing/SKILL.md +275 -0
- package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
- package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
- package/dist/skills/bundled/pancakeswap/index.js +0 -1
- package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
- package/dist/skills/bundled/percolator/SKILL.md +22 -0
- package/dist/skills/bundled/permissions/SKILL.md +269 -0
- package/dist/skills/bundled/permissions/index.js +2 -2
- package/dist/skills/bundled/permissions/index.js.map +1 -1
- package/dist/skills/bundled/plugins/SKILL.md +263 -0
- package/dist/skills/bundled/plugins/index.js +2 -2
- package/dist/skills/bundled/plugins/index.js.map +1 -1
- package/dist/skills/bundled/portfolio/SKILL.md +161 -0
- package/dist/skills/bundled/portfolio/index.js +1 -1
- package/dist/skills/bundled/portfolio/index.js.map +1 -1
- package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
- package/dist/skills/bundled/positions/SKILL.md +262 -0
- package/dist/skills/bundled/predictfun/SKILL.md +109 -0
- package/dist/skills/bundled/predictfun/index.js +1 -1
- package/dist/skills/bundled/predictfun/index.js.map +1 -1
- package/dist/skills/bundled/predictit/SKILL.md +66 -0
- package/dist/skills/bundled/presence/SKILL.md +217 -0
- package/dist/skills/bundled/presence/index.js +2 -2
- package/dist/skills/bundled/presence/index.js.map +1 -1
- package/dist/skills/bundled/processes/SKILL.md +254 -0
- package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
- package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
- package/dist/skills/bundled/pumpfun/index.d.ts +8 -1
- package/dist/skills/bundled/pumpfun/index.js +221 -11
- package/dist/skills/bundled/pumpfun/index.js.map +1 -1
- package/dist/skills/bundled/qmd/SKILL.md +129 -0
- package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
- package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
- package/dist/skills/bundled/qrcoin/index.js +0 -1
- package/dist/skills/bundled/qrcoin/index.js.map +1 -1
- package/dist/skills/bundled/raydium/SKILL.md +198 -0
- package/dist/skills/bundled/remote/SKILL.md +201 -0
- package/dist/skills/bundled/research/SKILL.md +83 -0
- package/dist/skills/bundled/research/index.js +2 -2
- package/dist/skills/bundled/research/index.js.map +1 -1
- package/dist/skills/bundled/risk/SKILL.md +323 -0
- package/dist/skills/bundled/router/SKILL.md +233 -0
- package/dist/skills/bundled/routing/SKILL.md +258 -0
- package/dist/skills/bundled/sandbox/SKILL.md +257 -0
- package/dist/skills/bundled/search-config/SKILL.md +257 -0
- package/dist/skills/bundled/search-config/index.js +2 -2
- package/dist/skills/bundled/search-config/index.js.map +1 -1
- package/dist/skills/bundled/sessions/SKILL.md +251 -0
- package/dist/skills/bundled/sessions/index.js +1 -1
- package/dist/skills/bundled/sessions/index.js.map +1 -1
- package/dist/skills/bundled/setup/SKILL.md +53 -0
- package/dist/skills/bundled/shield/SKILL.md +21 -0
- package/dist/skills/bundled/signals/SKILL.md +106 -0
- package/dist/skills/bundled/signals/index.d.ts +0 -3
- package/dist/skills/bundled/signals/index.js +3 -4
- package/dist/skills/bundled/signals/index.js.map +1 -1
- package/dist/skills/bundled/sizing/SKILL.md +238 -0
- package/dist/skills/bundled/slippage/SKILL.md +306 -0
- package/dist/skills/bundled/smarkets/SKILL.md +107 -0
- package/dist/skills/bundled/solend/SKILL.md +63 -0
- package/dist/skills/bundled/strategy/SKILL.md +266 -0
- package/dist/skills/bundled/streaming/SKILL.md +150 -0
- package/dist/skills/bundled/streaming/index.js +2 -2
- package/dist/skills/bundled/streaming/index.js.map +1 -1
- package/dist/skills/bundled/tailscale/SKILL.md +249 -0
- package/dist/skills/bundled/tailscale/index.js +2 -2
- package/dist/skills/bundled/tailscale/index.js.map +1 -1
- package/dist/skills/bundled/ticks/SKILL.md +61 -0
- package/dist/skills/bundled/token-security/SKILL.md +18 -0
- package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
- package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
- package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
- package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
- package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
- package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
- package/dist/skills/bundled/trading-system/SKILL.md +290 -0
- package/dist/skills/bundled/triggers/SKILL.md +433 -0
- package/dist/skills/bundled/tts/SKILL.md +220 -0
- package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
- package/dist/skills/bundled/usage/SKILL.md +239 -0
- package/dist/skills/bundled/usage/index.js +2 -2
- package/dist/skills/bundled/usage/index.js.map +1 -1
- package/dist/skills/bundled/veil/SKILL.md +76 -0
- package/dist/skills/bundled/veil/index.d.ts +0 -3
- package/dist/skills/bundled/veil/index.js +0 -1
- package/dist/skills/bundled/veil/index.js.map +1 -1
- package/dist/skills/bundled/verify/SKILL.md +199 -0
- package/dist/skills/bundled/verify/index.d.ts +0 -3
- package/dist/skills/bundled/verify/index.js +0 -1
- package/dist/skills/bundled/verify/index.js.map +1 -1
- package/dist/skills/bundled/virtuals/SKILL.md +82 -0
- package/dist/skills/bundled/voice/SKILL.md +217 -0
- package/dist/skills/bundled/voice/index.js +2 -2
- package/dist/skills/bundled/voice/index.js.map +1 -1
- package/dist/skills/bundled/weather/SKILL.md +80 -0
- package/dist/skills/bundled/webhooks/SKILL.md +297 -0
- package/dist/skills/bundled/webhooks/index.js +2 -2
- package/dist/skills/bundled/webhooks/index.js.map +1 -1
- package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
- package/dist/skills/bundled/whale-tracking/index.js +2 -2
- package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
- package/dist/skills/bundled/yoink/SKILL.md +54 -0
- package/dist/skills/bundled/yoink/index.d.ts +0 -3
- package/dist/skills/bundled/yoink/index.js +0 -1
- package/dist/skills/bundled/yoink/index.js.map +1 -1
- package/dist/skills/executor.js +5 -3
- package/dist/skills/executor.js.map +1 -1
- 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
|
|
@@ -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
|