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.
Files changed (263) 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/agentbets/index.js +1 -1
  7. package/dist/skills/bundled/agentbets/index.js.map +1 -1
  8. package/dist/skills/bundled/ai-strategy/SKILL.md +111 -0
  9. package/dist/skills/bundled/ai-strategy/index.js +1 -1
  10. package/dist/skills/bundled/ai-strategy/index.js.map +1 -1
  11. package/dist/skills/bundled/alerts/SKILL.md +87 -0
  12. package/dist/skills/bundled/analytics/SKILL.md +252 -0
  13. package/dist/skills/bundled/analytics/index.js +2 -2
  14. package/dist/skills/bundled/analytics/index.js.map +1 -1
  15. package/dist/skills/bundled/arbitrage/SKILL.md +287 -0
  16. package/dist/skills/bundled/arbitrage/index.js +6 -1
  17. package/dist/skills/bundled/arbitrage/index.js.map +1 -1
  18. package/dist/skills/bundled/auto-reply/SKILL.md +285 -0
  19. package/dist/skills/bundled/auto-reply/index.js +2 -2
  20. package/dist/skills/bundled/auto-reply/index.js.map +1 -1
  21. package/dist/skills/bundled/automation/SKILL.md +242 -0
  22. package/dist/skills/bundled/automation/index.js +2 -2
  23. package/dist/skills/bundled/automation/index.js.map +1 -1
  24. package/dist/skills/bundled/backtest/SKILL.md +225 -0
  25. package/dist/skills/bundled/bags/SKILL.md +131 -0
  26. package/dist/skills/bundled/bankr/SKILL.md +114 -0
  27. package/dist/skills/bundled/betfair/SKILL.md +113 -0
  28. package/dist/skills/bundled/binance-futures/SKILL.md +84 -0
  29. package/dist/skills/bundled/binance-futures/index.d.ts +0 -3
  30. package/dist/skills/bundled/binance-futures/index.js +1 -2
  31. package/dist/skills/bundled/binance-futures/index.js.map +1 -1
  32. package/dist/skills/bundled/botchan/SKILL.md +66 -0
  33. package/dist/skills/bundled/botchan/index.d.ts +0 -3
  34. package/dist/skills/bundled/botchan/index.js +0 -1
  35. package/dist/skills/bundled/botchan/index.js.map +1 -1
  36. package/dist/skills/bundled/bridge/SKILL.md +215 -0
  37. package/dist/skills/bundled/bridge/index.js +6 -0
  38. package/dist/skills/bundled/bridge/index.js.map +1 -1
  39. package/dist/skills/bundled/bybit-futures/SKILL.md +84 -0
  40. package/dist/skills/bundled/bybit-futures/index.d.ts +0 -3
  41. package/dist/skills/bundled/bybit-futures/index.js +0 -1
  42. package/dist/skills/bundled/bybit-futures/index.js.map +1 -1
  43. package/dist/skills/bundled/clanker/SKILL.md +125 -0
  44. package/dist/skills/bundled/clanker/index.d.ts +0 -3
  45. package/dist/skills/bundled/clanker/index.js +0 -1
  46. package/dist/skills/bundled/clanker/index.js.map +1 -1
  47. package/dist/skills/bundled/copy-trading/SKILL.md +285 -0
  48. package/dist/skills/bundled/copy-trading/index.js +15 -8
  49. package/dist/skills/bundled/copy-trading/index.js.map +1 -1
  50. package/dist/skills/bundled/copy-trading-solana/SKILL.md +66 -0
  51. package/dist/skills/bundled/credentials/SKILL.md +261 -0
  52. package/dist/skills/bundled/credentials/index.js +4 -0
  53. package/dist/skills/bundled/credentials/index.js.map +1 -1
  54. package/dist/skills/bundled/crypto-hft/SKILL.md +121 -0
  55. package/dist/skills/bundled/crypto-hft/index.js +18 -3
  56. package/dist/skills/bundled/crypto-hft/index.js.map +1 -1
  57. package/dist/skills/bundled/dca/SKILL.md +27 -0
  58. package/dist/skills/bundled/dex/SKILL.md +92 -0
  59. package/dist/skills/bundled/dex/index.js +77 -29
  60. package/dist/skills/bundled/dex/index.js.map +1 -1
  61. package/dist/skills/bundled/divergence/SKILL.md +83 -0
  62. package/dist/skills/bundled/doctor/SKILL.md +267 -0
  63. package/dist/skills/bundled/doctor/index.js +2 -8
  64. package/dist/skills/bundled/doctor/index.js.map +1 -1
  65. package/dist/skills/bundled/drift/SKILL.md +53 -0
  66. package/dist/skills/bundled/drift-sdk/SKILL.md +103 -0
  67. package/dist/skills/bundled/drift-sdk/index.d.ts +0 -3
  68. package/dist/skills/bundled/drift-sdk/index.js +0 -1
  69. package/dist/skills/bundled/drift-sdk/index.js.map +1 -1
  70. package/dist/skills/bundled/edge/SKILL.md +84 -0
  71. package/dist/skills/bundled/embeddings/SKILL.md +244 -0
  72. package/dist/skills/bundled/endaoment/SKILL.md +65 -0
  73. package/dist/skills/bundled/endaoment/index.d.ts +0 -3
  74. package/dist/skills/bundled/endaoment/index.js +0 -1
  75. package/dist/skills/bundled/endaoment/index.js.map +1 -1
  76. package/dist/skills/bundled/ens/SKILL.md +63 -0
  77. package/dist/skills/bundled/ens/index.d.ts +0 -3
  78. package/dist/skills/bundled/ens/index.js +0 -1
  79. package/dist/skills/bundled/ens/index.js.map +1 -1
  80. package/dist/skills/bundled/erc8004/SKILL.md +79 -0
  81. package/dist/skills/bundled/erc8004/index.d.ts +0 -3
  82. package/dist/skills/bundled/erc8004/index.js +0 -1
  83. package/dist/skills/bundled/erc8004/index.js.map +1 -1
  84. package/dist/skills/bundled/execution/SKILL.md +278 -0
  85. package/dist/skills/bundled/farcaster/SKILL.md +80 -0
  86. package/dist/skills/bundled/farcaster/index.js +12 -0
  87. package/dist/skills/bundled/farcaster/index.js.map +1 -1
  88. package/dist/skills/bundled/features/SKILL.md +20 -0
  89. package/dist/skills/bundled/feeds/SKILL.md +288 -0
  90. package/dist/skills/bundled/harden/SKILL.md +74 -0
  91. package/dist/skills/bundled/history/SKILL.md +257 -0
  92. package/dist/skills/bundled/hyperliquid/SKILL.md +200 -0
  93. package/dist/skills/bundled/hyperliquid/index.d.ts +0 -3
  94. package/dist/skills/bundled/hyperliquid/index.js +0 -1
  95. package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
  96. package/dist/skills/bundled/identity/SKILL.md +228 -0
  97. package/dist/skills/bundled/identity/index.js +2 -2
  98. package/dist/skills/bundled/identity/index.js.map +1 -1
  99. package/dist/skills/bundled/integrations/SKILL.md +321 -0
  100. package/dist/skills/bundled/integrations/index.js +2 -2
  101. package/dist/skills/bundled/integrations/index.js.map +1 -1
  102. package/dist/skills/bundled/jupiter/SKILL.md +163 -0
  103. package/dist/skills/bundled/jupiter/index.js +2 -2
  104. package/dist/skills/bundled/kamino/SKILL.md +69 -0
  105. package/dist/skills/bundled/ledger/SKILL.md +20 -0
  106. package/dist/skills/bundled/lighter/SKILL.md +83 -0
  107. package/dist/skills/bundled/lighter/index.d.ts +0 -3
  108. package/dist/skills/bundled/lighter/index.js +0 -1
  109. package/dist/skills/bundled/lighter/index.js.map +1 -1
  110. package/dist/skills/bundled/marginfi/SKILL.md +62 -0
  111. package/dist/skills/bundled/market-index/SKILL.md +242 -0
  112. package/dist/skills/bundled/market-index/index.js +1 -3
  113. package/dist/skills/bundled/market-index/index.js.map +1 -1
  114. package/dist/skills/bundled/markets/SKILL.md +49 -0
  115. package/dist/skills/bundled/mcp/SKILL.md +235 -0
  116. package/dist/skills/bundled/mcp/index.js +1 -3
  117. package/dist/skills/bundled/mcp/index.js.map +1 -1
  118. package/dist/skills/bundled/memory/SKILL.md +209 -0
  119. package/dist/skills/bundled/metaculus/SKILL.md +62 -0
  120. package/dist/skills/bundled/metaculus/index.js +4 -1
  121. package/dist/skills/bundled/metaculus/index.js.map +1 -1
  122. package/dist/skills/bundled/meteora/SKILL.md +28 -0
  123. package/dist/skills/bundled/meteora-dbc/SKILL.md +25 -0
  124. package/dist/skills/bundled/metrics/SKILL.md +338 -0
  125. package/dist/skills/bundled/mev/SKILL.md +239 -0
  126. package/dist/skills/bundled/mev/index.js +2 -2
  127. package/dist/skills/bundled/mev/index.js.map +1 -1
  128. package/dist/skills/bundled/mexc-futures/SKILL.md +86 -0
  129. package/dist/skills/bundled/mexc-futures/index.d.ts +0 -3
  130. package/dist/skills/bundled/mexc-futures/index.js +0 -1
  131. package/dist/skills/bundled/mexc-futures/index.js.map +1 -1
  132. package/dist/skills/bundled/mm/SKILL.md +142 -0
  133. package/dist/skills/bundled/mm/index.js +28 -27
  134. package/dist/skills/bundled/mm/index.js.map +1 -1
  135. package/dist/skills/bundled/monitoring/SKILL.md +249 -0
  136. package/dist/skills/bundled/news/SKILL.md +95 -0
  137. package/dist/skills/bundled/news/index.js +1 -2
  138. package/dist/skills/bundled/news/index.js.map +1 -1
  139. package/dist/skills/bundled/onchainkit/SKILL.md +83 -0
  140. package/dist/skills/bundled/opinion/SKILL.md +87 -0
  141. package/dist/skills/bundled/opportunity/SKILL.md +308 -0
  142. package/dist/skills/bundled/orca/SKILL.md +28 -0
  143. package/dist/skills/bundled/orca/index.js +11 -7
  144. package/dist/skills/bundled/orca/index.js.map +1 -1
  145. package/dist/skills/bundled/pairing/SKILL.md +275 -0
  146. package/dist/skills/bundled/pancakeswap/SKILL.md +93 -0
  147. package/dist/skills/bundled/pancakeswap/index.d.ts +0 -3
  148. package/dist/skills/bundled/pancakeswap/index.js +0 -1
  149. package/dist/skills/bundled/pancakeswap/index.js.map +1 -1
  150. package/dist/skills/bundled/percolator/SKILL.md +22 -0
  151. package/dist/skills/bundled/permissions/SKILL.md +269 -0
  152. package/dist/skills/bundled/permissions/index.js +2 -2
  153. package/dist/skills/bundled/permissions/index.js.map +1 -1
  154. package/dist/skills/bundled/plugins/SKILL.md +263 -0
  155. package/dist/skills/bundled/plugins/index.js +2 -2
  156. package/dist/skills/bundled/plugins/index.js.map +1 -1
  157. package/dist/skills/bundled/portfolio/SKILL.md +161 -0
  158. package/dist/skills/bundled/portfolio/index.js +1 -1
  159. package/dist/skills/bundled/portfolio/index.js.map +1 -1
  160. package/dist/skills/bundled/portfolio-sync/SKILL.md +466 -0
  161. package/dist/skills/bundled/positions/SKILL.md +262 -0
  162. package/dist/skills/bundled/predictfun/SKILL.md +109 -0
  163. package/dist/skills/bundled/predictfun/index.js +1 -1
  164. package/dist/skills/bundled/predictfun/index.js.map +1 -1
  165. package/dist/skills/bundled/predictit/SKILL.md +66 -0
  166. package/dist/skills/bundled/predictit/index.js +4 -1
  167. package/dist/skills/bundled/predictit/index.js.map +1 -1
  168. package/dist/skills/bundled/presence/SKILL.md +217 -0
  169. package/dist/skills/bundled/presence/index.js +2 -2
  170. package/dist/skills/bundled/presence/index.js.map +1 -1
  171. package/dist/skills/bundled/processes/SKILL.md +254 -0
  172. package/dist/skills/bundled/pump-swarm/SKILL.md +309 -0
  173. package/dist/skills/bundled/pumpfun/SKILL.md +145 -0
  174. package/dist/skills/bundled/pumpfun/index.js +82 -8
  175. package/dist/skills/bundled/pumpfun/index.js.map +1 -1
  176. package/dist/skills/bundled/qmd/SKILL.md +129 -0
  177. package/dist/skills/bundled/qrcoin/SKILL.md +60 -0
  178. package/dist/skills/bundled/qrcoin/index.d.ts +0 -3
  179. package/dist/skills/bundled/qrcoin/index.js +0 -1
  180. package/dist/skills/bundled/qrcoin/index.js.map +1 -1
  181. package/dist/skills/bundled/raydium/SKILL.md +198 -0
  182. package/dist/skills/bundled/remote/SKILL.md +201 -0
  183. package/dist/skills/bundled/research/SKILL.md +83 -0
  184. package/dist/skills/bundled/research/index.js +2 -2
  185. package/dist/skills/bundled/research/index.js.map +1 -1
  186. package/dist/skills/bundled/risk/SKILL.md +323 -0
  187. package/dist/skills/bundled/router/SKILL.md +233 -0
  188. package/dist/skills/bundled/routing/SKILL.md +258 -0
  189. package/dist/skills/bundled/sandbox/SKILL.md +257 -0
  190. package/dist/skills/bundled/search-config/SKILL.md +257 -0
  191. package/dist/skills/bundled/search-config/index.js +2 -2
  192. package/dist/skills/bundled/search-config/index.js.map +1 -1
  193. package/dist/skills/bundled/sessions/SKILL.md +251 -0
  194. package/dist/skills/bundled/sessions/index.js +1 -1
  195. package/dist/skills/bundled/sessions/index.js.map +1 -1
  196. package/dist/skills/bundled/setup/SKILL.md +53 -0
  197. package/dist/skills/bundled/shield/SKILL.md +21 -0
  198. package/dist/skills/bundled/signals/SKILL.md +106 -0
  199. package/dist/skills/bundled/signals/index.d.ts +0 -3
  200. package/dist/skills/bundled/signals/index.js +3 -4
  201. package/dist/skills/bundled/signals/index.js.map +1 -1
  202. package/dist/skills/bundled/sizing/SKILL.md +238 -0
  203. package/dist/skills/bundled/slippage/SKILL.md +306 -0
  204. package/dist/skills/bundled/smarkets/SKILL.md +107 -0
  205. package/dist/skills/bundled/smarkets/index.js +3 -3
  206. package/dist/skills/bundled/smarkets/index.js.map +1 -1
  207. package/dist/skills/bundled/solend/SKILL.md +63 -0
  208. package/dist/skills/bundled/strategy/SKILL.md +266 -0
  209. package/dist/skills/bundled/streaming/SKILL.md +150 -0
  210. package/dist/skills/bundled/streaming/index.js +2 -2
  211. package/dist/skills/bundled/streaming/index.js.map +1 -1
  212. package/dist/skills/bundled/tailscale/SKILL.md +249 -0
  213. package/dist/skills/bundled/tailscale/index.js +2 -2
  214. package/dist/skills/bundled/tailscale/index.js.map +1 -1
  215. package/dist/skills/bundled/ticks/SKILL.md +61 -0
  216. package/dist/skills/bundled/token-security/SKILL.md +18 -0
  217. package/dist/skills/bundled/trading-evm/SKILL.md +329 -0
  218. package/dist/skills/bundled/trading-futures/SKILL.md +865 -0
  219. package/dist/skills/bundled/trading-kalshi/SKILL.md +629 -0
  220. package/dist/skills/bundled/trading-kalshi/index.js +2 -0
  221. package/dist/skills/bundled/trading-kalshi/index.js.map +1 -1
  222. package/dist/skills/bundled/trading-manifold/SKILL.md +387 -0
  223. package/dist/skills/bundled/trading-polymarket/SKILL.md +1080 -0
  224. package/dist/skills/bundled/trading-polymarket/index.js +28 -19
  225. package/dist/skills/bundled/trading-polymarket/index.js.map +1 -1
  226. package/dist/skills/bundled/trading-solana/SKILL.md +418 -0
  227. package/dist/skills/bundled/trading-solana/index.js +1 -1
  228. package/dist/skills/bundled/trading-solana/index.js.map +1 -1
  229. package/dist/skills/bundled/trading-system/SKILL.md +290 -0
  230. package/dist/skills/bundled/triggers/SKILL.md +433 -0
  231. package/dist/skills/bundled/tts/SKILL.md +220 -0
  232. package/dist/skills/bundled/tweet-ideas/SKILL.md +77 -0
  233. package/dist/skills/bundled/usage/SKILL.md +239 -0
  234. package/dist/skills/bundled/usage/index.js +2 -2
  235. package/dist/skills/bundled/usage/index.js.map +1 -1
  236. package/dist/skills/bundled/veil/SKILL.md +76 -0
  237. package/dist/skills/bundled/veil/index.d.ts +0 -3
  238. package/dist/skills/bundled/veil/index.js +0 -1
  239. package/dist/skills/bundled/veil/index.js.map +1 -1
  240. package/dist/skills/bundled/verify/SKILL.md +199 -0
  241. package/dist/skills/bundled/verify/index.d.ts +0 -3
  242. package/dist/skills/bundled/verify/index.js +0 -1
  243. package/dist/skills/bundled/verify/index.js.map +1 -1
  244. package/dist/skills/bundled/virtuals/SKILL.md +82 -0
  245. package/dist/skills/bundled/voice/SKILL.md +217 -0
  246. package/dist/skills/bundled/voice/index.js +2 -2
  247. package/dist/skills/bundled/voice/index.js.map +1 -1
  248. package/dist/skills/bundled/weather/SKILL.md +80 -0
  249. package/dist/skills/bundled/weather/index.js +3 -0
  250. package/dist/skills/bundled/weather/index.js.map +1 -1
  251. package/dist/skills/bundled/webhooks/SKILL.md +297 -0
  252. package/dist/skills/bundled/webhooks/index.js +2 -2
  253. package/dist/skills/bundled/webhooks/index.js.map +1 -1
  254. package/dist/skills/bundled/whale-tracking/SKILL.md +287 -0
  255. package/dist/skills/bundled/whale-tracking/index.js +2 -2
  256. package/dist/skills/bundled/whale-tracking/index.js.map +1 -1
  257. package/dist/skills/bundled/yoink/SKILL.md +54 -0
  258. package/dist/skills/bundled/yoink/index.d.ts +0 -3
  259. package/dist/skills/bundled/yoink/index.js +0 -1
  260. package/dist/skills/bundled/yoink/index.js.map +1 -1
  261. package/dist/skills/executor.js +5 -3
  262. package/dist/skills/executor.js.map +1 -1
  263. package/package.json +2 -2
@@ -0,0 +1,217 @@
1
+ ---
2
+ name: presence
3
+ description: "Online status, activity tracking, and multi-device sync"
4
+ emoji: "🟢"
5
+ ---
6
+
7
+ # Presence - Complete API Reference
8
+
9
+ Manage online status, track activity across devices, and sync presence information.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### View Status
16
+
17
+ ```
18
+ /presence Show your status
19
+ /presence who Who's online
20
+ /presence activity Recent activity
21
+ ```
22
+
23
+ ### Set Status
24
+
25
+ ```
26
+ /presence online Set online
27
+ /presence away Set away
28
+ /presence dnd Do not disturb
29
+ /presence offline Appear offline
30
+ /presence status "In a meeting" Custom status
31
+ ```
32
+
33
+ ### Devices
34
+
35
+ ```
36
+ /presence devices Your connected devices
37
+ /presence sync Force sync all devices
38
+ ```
39
+
40
+ ---
41
+
42
+ ## TypeScript API Reference
43
+
44
+ ### Create Presence Service
45
+
46
+ ```typescript
47
+ import { createPresenceService } from 'clodds/presence';
48
+
49
+ const presence = createPresenceService({
50
+ // Update interval
51
+ heartbeatIntervalMs: 30000,
52
+
53
+ // Auto-away after idle
54
+ awayAfterMs: 300000, // 5 minutes
55
+
56
+ // Storage
57
+ storage: 'redis', // 'redis' | 'memory'
58
+ redisUrl: process.env.REDIS_URL,
59
+ });
60
+ ```
61
+
62
+ ### Get Status
63
+
64
+ ```typescript
65
+ // Get own status
66
+ const status = await presence.getStatus(userId);
67
+
68
+ console.log(`Status: ${status.status}`); // 'online' | 'away' | 'dnd' | 'offline'
69
+ console.log(`Custom: ${status.customStatus}`);
70
+ console.log(`Last seen: ${status.lastSeen}`);
71
+ console.log(`Device: ${status.activeDevice}`);
72
+
73
+ // Get multiple users
74
+ const statuses = await presence.getStatuses(['user-1', 'user-2', 'user-3']);
75
+ ```
76
+
77
+ ### Set Status
78
+
79
+ ```typescript
80
+ // Set status
81
+ await presence.setStatus(userId, 'online');
82
+ await presence.setStatus(userId, 'away');
83
+ await presence.setStatus(userId, 'dnd');
84
+ await presence.setStatus(userId, 'offline');
85
+
86
+ // Set custom status message
87
+ await presence.setCustomStatus(userId, 'Trading BTC');
88
+
89
+ // Clear custom status
90
+ await presence.clearCustomStatus(userId);
91
+ ```
92
+
93
+ ### Activity Tracking
94
+
95
+ ```typescript
96
+ // Record activity
97
+ await presence.recordActivity(userId, {
98
+ type: 'message',
99
+ channelId: 'telegram-123',
100
+ timestamp: Date.now(),
101
+ });
102
+
103
+ // Get recent activity
104
+ const activity = await presence.getActivity(userId, {
105
+ limit: 10,
106
+ since: Date.now() - 3600000, // Last hour
107
+ });
108
+
109
+ for (const event of activity) {
110
+ console.log(`${event.type} at ${event.timestamp}`);
111
+ console.log(` Channel: ${event.channelId}`);
112
+ }
113
+ ```
114
+
115
+ ### Device Presence
116
+
117
+ ```typescript
118
+ // Get user's devices
119
+ const devices = await presence.getDevices(userId);
120
+
121
+ for (const device of devices) {
122
+ console.log(`${device.id}: ${device.name}`);
123
+ console.log(` Status: ${device.status}`);
124
+ console.log(` Last seen: ${device.lastSeen}`);
125
+ console.log(` Active: ${device.isActive}`);
126
+ }
127
+
128
+ // Set device status
129
+ await presence.setDeviceStatus(userId, deviceId, 'online');
130
+ ```
131
+
132
+ ### Who's Online
133
+
134
+ ```typescript
135
+ // Get online users
136
+ const online = await presence.getOnlineUsers({
137
+ channelId: 'telegram-123', // Optional: filter by channel
138
+ });
139
+
140
+ for (const user of online) {
141
+ console.log(`${user.name}: ${user.status}`);
142
+ }
143
+ ```
144
+
145
+ ### Event Handlers
146
+
147
+ ```typescript
148
+ // Status changes
149
+ presence.on('statusChange', (userId, oldStatus, newStatus) => {
150
+ console.log(`${userId}: ${oldStatus} -> ${newStatus}`);
151
+ });
152
+
153
+ // User came online
154
+ presence.on('online', (userId) => {
155
+ console.log(`${userId} is now online`);
156
+ });
157
+
158
+ // User went offline
159
+ presence.on('offline', (userId) => {
160
+ console.log(`${userId} went offline`);
161
+ });
162
+ ```
163
+
164
+ ### Sync Across Devices
165
+
166
+ ```typescript
167
+ // Force sync
168
+ await presence.sync(userId);
169
+
170
+ // Get sync status
171
+ const syncStatus = await presence.getSyncStatus(userId);
172
+ console.log(`Devices synced: ${syncStatus.synced}/${syncStatus.total}`);
173
+ console.log(`Last sync: ${syncStatus.lastSync}`);
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Status Types
179
+
180
+ | Status | Description |
181
+ |--------|-------------|
182
+ | `online` | Active and available |
183
+ | `away` | Idle/inactive |
184
+ | `dnd` | Do not disturb |
185
+ | `offline` | Not available |
186
+
187
+ ---
188
+
189
+ ## Auto-Away
190
+
191
+ Presence automatically changes to `away` after inactivity:
192
+
193
+ ```typescript
194
+ const presence = createPresenceService({
195
+ awayAfterMs: 300000, // 5 min idle -> away
196
+ offlineAfterMs: 3600000, // 1 hour idle -> offline
197
+ });
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Multi-Device Sync
203
+
204
+ When user is active on multiple devices:
205
+ - Most recent activity determines primary device
206
+ - Status syncs across all devices
207
+ - Custom status shared everywhere
208
+
209
+ ---
210
+
211
+ ## Best Practices
212
+
213
+ 1. **Use heartbeats** — Keep status accurate
214
+ 2. **Set away appropriately** — Don't spam status changes
215
+ 3. **Custom status** — Let others know what you're doing
216
+ 4. **Review devices** — Keep device list clean
217
+ 5. **DND for focus** — Mute notifications during trades
@@ -128,8 +128,8 @@ async function execute(args) {
128
128
  return helpText();
129
129
  }
130
130
  }
131
- catch {
132
- return helpText();
131
+ catch (error) {
132
+ return `Error: ${error instanceof Error ? error.message : String(error)}`;
133
133
  }
134
134
  }
135
135
  function helpText() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/presence/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/bundled/presence/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ ---
2
+ name: processes
3
+ description: "Background jobs, long-running processes, and task management"
4
+ emoji: "⚙️"
5
+ ---
6
+
7
+ # Processes - Complete API Reference
8
+
9
+ Spawn and manage background processes, long-running jobs, and scheduled tasks.
10
+
11
+ ---
12
+
13
+ ## Chat Commands
14
+
15
+ ### Spawn Jobs
16
+
17
+ ```
18
+ /job spawn "npm run backtest" Start background job
19
+ /job spawn "python train.py" --name ml Named job
20
+ /job spawn "node bot.js" --restart Auto-restart on exit
21
+ ```
22
+
23
+ ### Manage Jobs
24
+
25
+ ```
26
+ /jobs List all jobs
27
+ /job status <id> Check job status
28
+ /job output <id> View job output
29
+ /job output <id> --follow Stream output
30
+ /job stop <id> Stop job
31
+ /job restart <id> Restart job
32
+ ```
33
+
34
+ ### Logs
35
+
36
+ ```
37
+ /job logs <id> View logs
38
+ /job logs <id> --tail 100 Last 100 lines
39
+ /job logs <id> --since 1h Last hour
40
+ ```
41
+
42
+ ---
43
+
44
+ ## TypeScript API Reference
45
+
46
+ ### Create Process Manager
47
+
48
+ ```typescript
49
+ import { createProcessManager } from 'clodds/processes';
50
+
51
+ const processes = createProcessManager({
52
+ // Working directory
53
+ cwd: process.cwd(),
54
+
55
+ // Environment
56
+ env: process.env,
57
+
58
+ // Limits
59
+ maxProcesses: 10,
60
+ maxMemoryMB: 1024,
61
+
62
+ // Logging
63
+ logDir: './logs/jobs',
64
+ maxLogSizeMB: 100,
65
+
66
+ // Storage
67
+ storage: 'sqlite',
68
+ dbPath: './jobs.db',
69
+ });
70
+ ```
71
+
72
+ ### Spawn Process
73
+
74
+ ```typescript
75
+ // Simple spawn
76
+ const job = await processes.spawn({
77
+ command: 'npm',
78
+ args: ['run', 'backtest'],
79
+ name: 'backtest-btc',
80
+ });
81
+
82
+ console.log(`Job ID: ${job.id}`);
83
+ console.log(`PID: ${job.pid}`);
84
+
85
+ // With options
86
+ const job = await processes.spawn({
87
+ command: 'python',
88
+ args: ['train.py', '--epochs', '100'],
89
+ name: 'ml-training',
90
+
91
+ // Environment
92
+ env: {
93
+ ...process.env,
94
+ CUDA_VISIBLE_DEVICES: '0',
95
+ },
96
+
97
+ // Working directory
98
+ cwd: '/path/to/ml-project',
99
+
100
+ // Auto-restart
101
+ restart: true,
102
+ maxRestarts: 3,
103
+ restartDelayMs: 5000,
104
+
105
+ // Resource limits
106
+ maxMemoryMB: 4096,
107
+ timeoutMs: 3600000, // 1 hour
108
+ });
109
+ ```
110
+
111
+ ### List Jobs
112
+
113
+ ```typescript
114
+ const jobs = await processes.list();
115
+
116
+ for (const job of jobs) {
117
+ console.log(`${job.id}: ${job.name}`);
118
+ console.log(` Status: ${job.status}`); // 'running' | 'stopped' | 'failed' | 'completed'
119
+ console.log(` PID: ${job.pid}`);
120
+ console.log(` Started: ${job.startedAt}`);
121
+ console.log(` Memory: ${job.memoryMB}MB`);
122
+ console.log(` CPU: ${job.cpuPercent}%`);
123
+ }
124
+ ```
125
+
126
+ ### Get Status
127
+
128
+ ```typescript
129
+ const status = await processes.getStatus(jobId);
130
+
131
+ console.log(`Status: ${status.status}`);
132
+ console.log(`Exit code: ${status.exitCode}`);
133
+ console.log(`Runtime: ${status.runtimeMs}ms`);
134
+ console.log(`Restarts: ${status.restarts}`);
135
+ console.log(`Memory: ${status.memoryMB}MB`);
136
+ console.log(`CPU: ${status.cpuPercent}%`);
137
+ ```
138
+
139
+ ### Get Output
140
+
141
+ ```typescript
142
+ // Get all output
143
+ const output = await processes.getOutput(jobId);
144
+ console.log(output.stdout);
145
+ console.log(output.stderr);
146
+
147
+ // Get last N lines
148
+ const output = await processes.getOutput(jobId, { tail: 100 });
149
+
150
+ // Stream output
151
+ const stream = processes.streamOutput(jobId);
152
+ stream.on('stdout', (data) => console.log(data));
153
+ stream.on('stderr', (data) => console.error(data));
154
+ stream.on('exit', (code) => console.log(`Exit: ${code}`));
155
+ ```
156
+
157
+ ### Stop Job
158
+
159
+ ```typescript
160
+ // Graceful stop (SIGTERM)
161
+ await processes.stop(jobId);
162
+
163
+ // Force kill (SIGKILL)
164
+ await processes.stop(jobId, { force: true });
165
+
166
+ // Stop all
167
+ await processes.stopAll();
168
+ ```
169
+
170
+ ### Restart Job
171
+
172
+ ```typescript
173
+ await processes.restart(jobId);
174
+ ```
175
+
176
+ ### Event Handlers
177
+
178
+ ```typescript
179
+ processes.on('started', (job) => {
180
+ console.log(`Job started: ${job.name}`);
181
+ });
182
+
183
+ processes.on('stopped', (job) => {
184
+ console.log(`Job stopped: ${job.name} (code: ${job.exitCode})`);
185
+ });
186
+
187
+ processes.on('failed', (job, error) => {
188
+ console.error(`Job failed: ${job.name}`, error);
189
+ });
190
+
191
+ processes.on('output', (job, type, data) => {
192
+ console.log(`[${job.name}] ${type}: ${data}`);
193
+ });
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Job Status
199
+
200
+ | Status | Description |
201
+ |--------|-------------|
202
+ | `running` | Currently executing |
203
+ | `stopped` | Stopped by user |
204
+ | `completed` | Finished successfully |
205
+ | `failed` | Exited with error |
206
+ | `restarting` | Auto-restarting |
207
+
208
+ ---
209
+
210
+ ## Use Cases
211
+
212
+ ### Run Backtest
213
+
214
+ ```typescript
215
+ const job = await processes.spawn({
216
+ command: 'npm',
217
+ args: ['run', 'backtest', '--', '--strategy', 'momentum'],
218
+ name: 'backtest-momentum',
219
+ });
220
+
221
+ // Wait for completion
222
+ const result = await processes.wait(job.id);
223
+ console.log(`Backtest complete: ${result.exitCode === 0 ? 'success' : 'failed'}`);
224
+ ```
225
+
226
+ ### Train ML Model
227
+
228
+ ```typescript
229
+ const job = await processes.spawn({
230
+ command: 'python',
231
+ args: ['train.py'],
232
+ name: 'ml-training',
233
+ cwd: './ml',
234
+ maxMemoryMB: 8192,
235
+ timeoutMs: 86400000, // 24 hours
236
+ });
237
+
238
+ // Monitor progress
239
+ processes.streamOutput(job.id).on('stdout', (line) => {
240
+ if (line.includes('Epoch')) {
241
+ console.log(line);
242
+ }
243
+ });
244
+ ```
245
+
246
+ ---
247
+
248
+ ## Best Practices
249
+
250
+ 1. **Name your jobs** — Easier to identify
251
+ 2. **Set timeouts** — Prevent runaway processes
252
+ 3. **Monitor memory** — Prevent OOM kills
253
+ 4. **Use restart sparingly** — Debug failures first
254
+ 5. **Check logs** — Always review output