clodds 1.2.9 → 1.4.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/agentbets/index.js +1 -1
- package/dist/skills/bundled/agentbets/index.js.map +1 -1
- 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/arbitrage/index.js +6 -1
- package/dist/skills/bundled/arbitrage/index.js.map +1 -1
- 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/bridge/index.js +6 -0
- package/dist/skills/bundled/bridge/index.js.map +1 -1
- 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 +15 -8
- 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/credentials/index.js +4 -0
- package/dist/skills/bundled/credentials/index.js.map +1 -1
- package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
- package/dist/skills/bundled/crypto-hft/index.js +18 -3
- package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
- package/dist/skills/bundled/dca/SKILL.md +27 -0
- package/dist/skills/bundled/dex/SKILL.md +92 -0
- package/dist/skills/bundled/dex/index.js +77 -29
- package/dist/skills/bundled/dex/index.js.map +1 -1
- 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/farcaster/index.js +12 -0
- package/dist/skills/bundled/farcaster/index.js.map +1 -1
- 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/jupiter/index.js +2 -2
- 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/metaculus/index.js +4 -1
- package/dist/skills/bundled/metaculus/index.js.map +1 -1
- 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/mm/index.js +28 -27
- package/dist/skills/bundled/mm/index.js.map +1 -1
- package/dist/skills/bundled/monitoring/SKILL.md +249 -0
- package/dist/skills/bundled/news/SKILL.md +95 -0
- package/dist/skills/bundled/news/index.js +1 -2
- package/dist/skills/bundled/news/index.js.map +1 -1
- 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/orca/index.js +11 -7
- package/dist/skills/bundled/orca/index.js.map +1 -1
- 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/predictit/index.js +4 -1
- package/dist/skills/bundled/predictit/index.js.map +1 -1
- 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.js +82 -8
- 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/smarkets/index.js +3 -3
- package/dist/skills/bundled/smarkets/index.js.map +1 -1
- 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-kalshi/index.js +2 -0
- package/dist/skills/bundled/trading-kalshi/index.js.map +1 -1
- 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-polymarket/index.js +28 -19
- package/dist/skills/bundled/trading-polymarket/index.js.map +1 -1
- package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
- package/dist/skills/bundled/trading-solana/index.js +1 -1
- package/dist/skills/bundled/trading-solana/index.js.map +1 -1
- 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/weather/index.js +3 -0
- package/dist/skills/bundled/weather/index.js.map +1 -1
- 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,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pairing
|
|
3
|
+
description: "User pairing, authentication, and trust management"
|
|
4
|
+
emoji: "🔗"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Pairing - Complete API Reference
|
|
8
|
+
|
|
9
|
+
Pair new users to Clodds, manage trust levels, and control access across channels.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Chat Commands
|
|
14
|
+
|
|
15
|
+
### Pairing (New Users)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/pair Request pairing (generates code)
|
|
19
|
+
/pair-code ABC123 Enter pairing code
|
|
20
|
+
/unpair Remove your pairing
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Admin Commands
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
/pairing list List pending requests
|
|
27
|
+
/pairing approve <code> Approve pairing request
|
|
28
|
+
/pairing reject <code> Reject pairing request
|
|
29
|
+
/pairing users List paired users
|
|
30
|
+
/pairing remove <user> Remove user pairing
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Trust Management
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/trust <user> owner Grant owner trust
|
|
37
|
+
/trust <user> paired Standard trust
|
|
38
|
+
/trust list List trust levels
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## TypeScript API Reference
|
|
44
|
+
|
|
45
|
+
### Create Pairing Service
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { createPairingService } from 'clodds/pairing';
|
|
49
|
+
|
|
50
|
+
const pairing = createPairingService({
|
|
51
|
+
// Code settings
|
|
52
|
+
codeLength: 8,
|
|
53
|
+
codeExpiryMinutes: 60,
|
|
54
|
+
maxPendingPerChannel: 3,
|
|
55
|
+
|
|
56
|
+
// Auto-approve settings
|
|
57
|
+
autoApproveLocal: true, // Auto-approve localhost
|
|
58
|
+
autoApproveTailscale: true, // Auto-approve Tailscale IPs
|
|
59
|
+
autoApproveOwners: true, // Owners auto-approve their requests
|
|
60
|
+
|
|
61
|
+
// Storage
|
|
62
|
+
storage: 'sqlite',
|
|
63
|
+
dbPath: './pairing.db',
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Create Pairing Request
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// User requests pairing
|
|
71
|
+
const request = await pairing.createPairingRequest({
|
|
72
|
+
channelId: 'telegram-123',
|
|
73
|
+
userId: 'telegram-user-456',
|
|
74
|
+
username: 'johndoe',
|
|
75
|
+
displayName: 'John Doe',
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
console.log(`Pairing code: ${request.code}`);
|
|
79
|
+
console.log(`Expires: ${request.expiresAt}`);
|
|
80
|
+
console.log(`Share this code with an admin to get approved`);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Validate Code
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
// Check if code is valid
|
|
87
|
+
const valid = await pairing.validateCode({
|
|
88
|
+
code: 'ABC123XY',
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
if (valid) {
|
|
92
|
+
console.log(`Valid code for user: ${valid.username}`);
|
|
93
|
+
console.log(`Channel: ${valid.channelId}`);
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Approve Request
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// Admin approves pairing
|
|
101
|
+
await pairing.approveRequest({
|
|
102
|
+
code: 'ABC123XY',
|
|
103
|
+
approvedBy: 'admin-user-id',
|
|
104
|
+
trustLevel: 'paired',
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Reject Request
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// Admin rejects pairing
|
|
112
|
+
await pairing.rejectRequest({
|
|
113
|
+
code: 'ABC123XY',
|
|
114
|
+
rejectedBy: 'admin-user-id',
|
|
115
|
+
reason: 'Unknown user',
|
|
116
|
+
});
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Check Pairing Status
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
// Check if user is paired
|
|
123
|
+
const isPaired = await pairing.isPaired({
|
|
124
|
+
channelId: 'telegram-123',
|
|
125
|
+
userId: 'telegram-user-456',
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
if (isPaired) {
|
|
129
|
+
console.log('User is paired and can use Clodds');
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Get Trust Level
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
const trust = await pairing.getTrustLevel({
|
|
137
|
+
channelId: 'telegram-123',
|
|
138
|
+
userId: 'telegram-user-456',
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
console.log(`Trust level: ${trust}`);
|
|
142
|
+
// 'owner' | 'paired' | 'stranger'
|
|
143
|
+
|
|
144
|
+
// Check specific permission
|
|
145
|
+
if (trust === 'owner') {
|
|
146
|
+
console.log('Full admin access');
|
|
147
|
+
} else if (trust === 'paired') {
|
|
148
|
+
console.log('Standard trading access');
|
|
149
|
+
} else {
|
|
150
|
+
console.log('No access - must pair first');
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### List Pending Requests
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
const pending = await pairing.listPendingRequests({
|
|
158
|
+
channelId: 'telegram-123', // Optional: filter by channel
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
for (const req of pending) {
|
|
162
|
+
console.log(`Code: ${req.code}`);
|
|
163
|
+
console.log(`User: ${req.username} (${req.displayName})`);
|
|
164
|
+
console.log(`Requested: ${req.createdAt}`);
|
|
165
|
+
console.log(`Expires: ${req.expiresAt}`);
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### List Paired Users
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
const users = await pairing.listPairedUsers({
|
|
173
|
+
channelId: 'telegram-123', // Optional: filter by channel
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
for (const user of users) {
|
|
177
|
+
console.log(`${user.username}: ${user.trustLevel}`);
|
|
178
|
+
console.log(` Paired: ${user.pairedAt}`);
|
|
179
|
+
console.log(` Approved by: ${user.approvedBy}`);
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Check Owner Status
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
const isOwner = await pairing.isOwner({
|
|
187
|
+
channelId: 'telegram-123',
|
|
188
|
+
userId: 'telegram-user-456',
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
if (isOwner) {
|
|
192
|
+
console.log('User has owner privileges');
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Remove Pairing
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Remove user's pairing
|
|
200
|
+
await pairing.removePairing({
|
|
201
|
+
channelId: 'telegram-123',
|
|
202
|
+
userId: 'telegram-user-456',
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Trust Levels
|
|
209
|
+
|
|
210
|
+
| Level | Access |
|
|
211
|
+
|-------|--------|
|
|
212
|
+
| **owner** | Full admin: approve users, manage settings, trading |
|
|
213
|
+
| **paired** | Standard: trading, portfolio, queries |
|
|
214
|
+
| **stranger** | None: must pair first |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Pairing Code Format
|
|
219
|
+
|
|
220
|
+
- **Length**: 8 characters
|
|
221
|
+
- **Characters**: Uppercase letters + numbers
|
|
222
|
+
- **Excludes**: 0, O, 1, I, L (avoid confusion)
|
|
223
|
+
- **Example**: `ABC234XY`
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Auto-Approve Rules
|
|
228
|
+
|
|
229
|
+
| Condition | Behavior |
|
|
230
|
+
|-----------|----------|
|
|
231
|
+
| Localhost | Auto-approve with owner trust |
|
|
232
|
+
| Tailscale IP | Auto-approve with owner trust |
|
|
233
|
+
| Owner request | Auto-approve their other channels |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Security Features
|
|
238
|
+
|
|
239
|
+
| Feature | Description |
|
|
240
|
+
|---------|-------------|
|
|
241
|
+
| **Code expiry** | Codes expire after 1 hour |
|
|
242
|
+
| **Rate limiting** | Max 3 pending per channel |
|
|
243
|
+
| **Unambiguous codes** | No confusable characters |
|
|
244
|
+
| **Audit trail** | Who approved/rejected when |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## CLI Admin Commands
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# List pending pairing requests
|
|
252
|
+
clodds pairing list telegram
|
|
253
|
+
|
|
254
|
+
# Approve a request
|
|
255
|
+
clodds pairing approve ABC234XY
|
|
256
|
+
|
|
257
|
+
# List paired users
|
|
258
|
+
clodds pairing users telegram
|
|
259
|
+
|
|
260
|
+
# Add user directly (bypass code)
|
|
261
|
+
clodds pairing add telegram user-123
|
|
262
|
+
|
|
263
|
+
# Remove user
|
|
264
|
+
clodds pairing remove telegram user-123
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Best Practices
|
|
270
|
+
|
|
271
|
+
1. **Share codes securely** — Don't post in public channels
|
|
272
|
+
2. **Set expiry appropriately** — Shorter for sensitive systems
|
|
273
|
+
3. **Review pending regularly** — Don't let requests pile up
|
|
274
|
+
4. **Use owner sparingly** — Most users only need 'paired'
|
|
275
|
+
5. **Audit periodically** — Review who has access
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pancakeswap
|
|
3
|
+
description: "PancakeSwap — Multi-chain DEX (BNB Chain, ETH, ARB, Base)"
|
|
4
|
+
emoji: "🥞"
|
|
5
|
+
commands:
|
|
6
|
+
- /cake
|
|
7
|
+
gates:
|
|
8
|
+
envs:
|
|
9
|
+
- EVM_PRIVATE_KEY
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# PancakeSwap
|
|
13
|
+
|
|
14
|
+
Multi-chain AMM DEX with V3 concentrated liquidity. Swap tokens on BNB Chain, Ethereum, Arbitrum, and Base.
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Set credentials
|
|
20
|
+
export EVM_PRIVATE_KEY="0x..."
|
|
21
|
+
|
|
22
|
+
# Get a quote
|
|
23
|
+
/cake quote BNB USDT 1 --chain bsc
|
|
24
|
+
|
|
25
|
+
# Execute swap
|
|
26
|
+
/cake swap BNB USDT 1 --chain bsc
|
|
27
|
+
|
|
28
|
+
# Check price
|
|
29
|
+
/cake price CAKE USDT --chain bsc
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Commands
|
|
33
|
+
|
|
34
|
+
| Command | Description |
|
|
35
|
+
|---------|-------------|
|
|
36
|
+
| `/cake swap <from> <to> <amount> [--chain bsc]` | Execute swap |
|
|
37
|
+
| `/cake quote <from> <to> <amount> [--chain bsc]` | Get quote without executing |
|
|
38
|
+
| `/cake price <tokenA> <tokenB> [--chain bsc]` | Get relative price |
|
|
39
|
+
| `/cake balance <token> [--chain bsc]` | Check token balance |
|
|
40
|
+
| `/cake help` | Show commands |
|
|
41
|
+
|
|
42
|
+
## Chain Flag
|
|
43
|
+
|
|
44
|
+
Use `--chain` to select network (default: bsc):
|
|
45
|
+
|
|
46
|
+
| Flag | Network |
|
|
47
|
+
|------|---------|
|
|
48
|
+
| `--chain bsc` | BNB Smart Chain (default) |
|
|
49
|
+
| `--chain eth` | Ethereum |
|
|
50
|
+
| `--chain arb` | Arbitrum |
|
|
51
|
+
| `--chain base` | Base |
|
|
52
|
+
|
|
53
|
+
## Examples
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Swap 1 BNB to USDT on BSC
|
|
57
|
+
/cake swap BNB USDT 1
|
|
58
|
+
|
|
59
|
+
# Swap 100 USDC to CAKE on Ethereum
|
|
60
|
+
/cake swap USDC CAKE 100 --chain eth
|
|
61
|
+
|
|
62
|
+
# Get quote for WETH to USDC on Arbitrum
|
|
63
|
+
/cake quote WETH USDC 0.5 --chain arb
|
|
64
|
+
|
|
65
|
+
# Check CAKE balance on BSC
|
|
66
|
+
/cake balance CAKE
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Common Tokens
|
|
70
|
+
|
|
71
|
+
| Token | BSC | ETH | ARB | Base |
|
|
72
|
+
|-------|-----|-----|-----|------|
|
|
73
|
+
| CAKE | Yes | Yes | Yes | Yes |
|
|
74
|
+
| USDC | Yes | Yes | Yes | Yes |
|
|
75
|
+
| USDT | Yes | Yes | Yes | - |
|
|
76
|
+
| WBNB | Yes | - | - | - |
|
|
77
|
+
| WETH | - | Yes | Yes | Yes |
|
|
78
|
+
|
|
79
|
+
## Configuration
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Required
|
|
83
|
+
export EVM_PRIVATE_KEY="0x..."
|
|
84
|
+
|
|
85
|
+
# Optional: custom RPC URLs
|
|
86
|
+
export BSC_RPC_URL="https://..."
|
|
87
|
+
export ETH_RPC_URL="https://..."
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Resources
|
|
91
|
+
|
|
92
|
+
- [PancakeSwap App](https://pancakeswap.finance)
|
|
93
|
+
- [PancakeSwap Docs](https://docs.pancakeswap.finance)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/pancakeswap/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/pancakeswap/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: percolator
|
|
3
|
+
description: "On-chain Solana perpetual futures"
|
|
4
|
+
command: percolator
|
|
5
|
+
emoji: "⚡"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Percolator
|
|
9
|
+
|
|
10
|
+
On-chain Solana perpetual futures with leverage via Percolator protocol.
|
|
11
|
+
|
|
12
|
+
## Commands
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/percolator status Show market state (price, OI, funding, spread)
|
|
16
|
+
/percolator positions View your open positions
|
|
17
|
+
/percolator long <size> Open long position (size in USD)
|
|
18
|
+
/percolator short <size> Open short position (size in USD)
|
|
19
|
+
/percolator deposit <amount> Deposit USDC collateral
|
|
20
|
+
/percolator withdraw <amount> Withdraw USDC collateral
|
|
21
|
+
/percolator help Show help
|
|
22
|
+
```
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: permissions
|
|
3
|
+
description: "Command approvals, tool policies, and exec security"
|
|
4
|
+
emoji: "🛡️"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Permissions - Complete API Reference
|
|
8
|
+
|
|
9
|
+
Manage command execution approvals, tool access policies, and security controls.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Chat Commands
|
|
14
|
+
|
|
15
|
+
### View Permissions
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/permissions View current permissions
|
|
19
|
+
/permissions list List all rules
|
|
20
|
+
/permissions pending View pending approvals
|
|
21
|
+
/permissions history View approval history
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Approve/Reject
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/approve Approve pending command
|
|
28
|
+
/approve <id> Approve specific request
|
|
29
|
+
/reject Reject pending command
|
|
30
|
+
/reject <id> "reason" Reject with reason
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Allow/Block Rules
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/permissions allow "npm install" Allow pattern
|
|
37
|
+
/permissions allow "git *" Allow with wildcard
|
|
38
|
+
/permissions block "rm -rf" Block dangerous command
|
|
39
|
+
/permissions remove <rule-id> Remove rule
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Security Mode
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
/permissions mode Check current mode
|
|
46
|
+
/permissions mode allowlist Only allowed commands
|
|
47
|
+
/permissions mode blocklist Block specific commands
|
|
48
|
+
/permissions mode full Allow all (dangerous)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## TypeScript API Reference
|
|
54
|
+
|
|
55
|
+
### Create Permissions Manager
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import { createPermissionsManager } from 'clodds/permissions';
|
|
59
|
+
|
|
60
|
+
const perms = createPermissionsManager({
|
|
61
|
+
// Security mode
|
|
62
|
+
mode: 'allowlist', // 'deny' | 'allowlist' | 'blocklist' | 'full'
|
|
63
|
+
|
|
64
|
+
// Default rules
|
|
65
|
+
defaultAllow: [
|
|
66
|
+
'ls *',
|
|
67
|
+
'cat *',
|
|
68
|
+
'git status',
|
|
69
|
+
'git diff',
|
|
70
|
+
'npm run *',
|
|
71
|
+
],
|
|
72
|
+
|
|
73
|
+
defaultBlock: [
|
|
74
|
+
'rm -rf *',
|
|
75
|
+
'sudo *',
|
|
76
|
+
'chmod 777 *',
|
|
77
|
+
],
|
|
78
|
+
|
|
79
|
+
// Approval settings
|
|
80
|
+
requireApproval: true,
|
|
81
|
+
approvalTimeoutMs: 60000,
|
|
82
|
+
|
|
83
|
+
// Storage
|
|
84
|
+
storage: 'sqlite',
|
|
85
|
+
dbPath: './permissions.db',
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Check Permission
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// Check if command is allowed
|
|
93
|
+
const result = await perms.check({
|
|
94
|
+
command: 'npm install lodash',
|
|
95
|
+
userId: 'user-123',
|
|
96
|
+
context: 'Installing dependency',
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
if (result.allowed) {
|
|
100
|
+
console.log('Command allowed');
|
|
101
|
+
} else if (result.needsApproval) {
|
|
102
|
+
console.log(`Waiting for approval: ${result.requestId}`);
|
|
103
|
+
} else {
|
|
104
|
+
console.log(`Blocked: ${result.reason}`);
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Request Approval
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
// Request approval for command
|
|
112
|
+
const request = await perms.requestApproval({
|
|
113
|
+
command: 'docker build -t myapp .',
|
|
114
|
+
userId: 'user-123',
|
|
115
|
+
reason: 'Building application container',
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
console.log(`Request ID: ${request.id}`);
|
|
119
|
+
console.log(`Status: ${request.status}`);
|
|
120
|
+
|
|
121
|
+
// Wait for approval
|
|
122
|
+
const approved = await perms.waitForApproval(request.id, {
|
|
123
|
+
timeoutMs: 60000,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
if (approved) {
|
|
127
|
+
console.log('Approved! Executing...');
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Approve/Reject
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
// Approve request
|
|
135
|
+
await perms.approve({
|
|
136
|
+
requestId: 'req-123',
|
|
137
|
+
approvedBy: 'admin-user',
|
|
138
|
+
note: 'Looks safe',
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Reject request
|
|
142
|
+
await perms.reject({
|
|
143
|
+
requestId: 'req-123',
|
|
144
|
+
rejectedBy: 'admin-user',
|
|
145
|
+
reason: 'Command too broad',
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### List Pending
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
// Get pending approvals
|
|
153
|
+
const pending = await perms.listPending();
|
|
154
|
+
|
|
155
|
+
for (const req of pending) {
|
|
156
|
+
console.log(`[${req.id}] ${req.command}`);
|
|
157
|
+
console.log(` User: ${req.userId}`);
|
|
158
|
+
console.log(` Reason: ${req.reason}`);
|
|
159
|
+
console.log(` Requested: ${req.createdAt}`);
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Add Rules
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// Add allow rule
|
|
167
|
+
await perms.addRule({
|
|
168
|
+
type: 'allow',
|
|
169
|
+
pattern: 'npm run *',
|
|
170
|
+
description: 'Allow npm scripts',
|
|
171
|
+
createdBy: 'admin',
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Add block rule
|
|
175
|
+
await perms.addRule({
|
|
176
|
+
type: 'block',
|
|
177
|
+
pattern: 'rm -rf /',
|
|
178
|
+
description: 'Prevent root deletion',
|
|
179
|
+
createdBy: 'admin',
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// List rules
|
|
183
|
+
const rules = await perms.listRules();
|
|
184
|
+
|
|
185
|
+
for (const rule of rules) {
|
|
186
|
+
console.log(`${rule.type}: ${rule.pattern}`);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Remove rule
|
|
190
|
+
await perms.removeRule('rule-id');
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Tool Policies
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
// Set tool policy for agent
|
|
197
|
+
await perms.setToolPolicy({
|
|
198
|
+
agentId: 'trading',
|
|
199
|
+
allow: ['execute', 'portfolio', 'markets'],
|
|
200
|
+
deny: ['browser', 'docker', 'exec'],
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// Check tool access
|
|
204
|
+
const canUse = perms.isToolAllowed('trading', 'execute');
|
|
205
|
+
|
|
206
|
+
// Get agent's allowed tools
|
|
207
|
+
const tools = perms.getAllowedTools('trading');
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Security Modes
|
|
213
|
+
|
|
214
|
+
| Mode | Behavior |
|
|
215
|
+
|------|----------|
|
|
216
|
+
| **deny** | Block all exec commands |
|
|
217
|
+
| **allowlist** | Only explicitly allowed commands |
|
|
218
|
+
| **blocklist** | Block specific patterns, allow rest |
|
|
219
|
+
| **full** | Allow all (dangerous!) |
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Pattern Syntax
|
|
224
|
+
|
|
225
|
+
| Pattern | Matches |
|
|
226
|
+
|---------|---------|
|
|
227
|
+
| `npm install` | Exact command |
|
|
228
|
+
| `npm *` | npm with any args |
|
|
229
|
+
| `git status` | Exact command |
|
|
230
|
+
| `* --version` | Any command with --version |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Built-in Safety Rules
|
|
235
|
+
|
|
236
|
+
Always blocked regardless of mode:
|
|
237
|
+
- `rm -rf /`
|
|
238
|
+
- `sudo rm -rf`
|
|
239
|
+
- `chmod 777 /`
|
|
240
|
+
- `:(){ :|:& };:` (fork bomb)
|
|
241
|
+
- Commands with shell injection patterns
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## CLI Commands
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# List permission rules
|
|
249
|
+
clodds permissions list
|
|
250
|
+
|
|
251
|
+
# Add allow pattern
|
|
252
|
+
clodds permissions allow "npm run *"
|
|
253
|
+
|
|
254
|
+
# View pending approvals
|
|
255
|
+
clodds permissions pending
|
|
256
|
+
|
|
257
|
+
# Approve request
|
|
258
|
+
clodds permissions approve req-123
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Best Practices
|
|
264
|
+
|
|
265
|
+
1. **Use allowlist mode** — Most secure, explicit permissions
|
|
266
|
+
2. **Review pending regularly** — Don't let requests pile up
|
|
267
|
+
3. **Specific patterns** — `npm install lodash` over `npm *`
|
|
268
|
+
4. **Audit history** — Review what was approved
|
|
269
|
+
5. **Tool policies** — Restrict agent tool access
|