clodds 1.6.21 → 1.6.22

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.
@@ -1,8 +1,11 @@
1
1
  /**
2
- * Market Scanner — Round-based 15-minute market discovery and rotation
2
+ * Market Scanner — Round-based market discovery and rotation
3
3
  *
4
- * Tracks round slots (unix_ts / 900) and automatically fetches new markets
4
+ * Tracks round slots (unix_ts / roundDurationSec) and automatically fetches new markets
5
5
  * when rounds transition. Enforces timing gates: min round age, min time left.
6
+ *
7
+ * Discovery method: Direct slug-based queries (e.g., btc-updown-5m-1770935700)
8
+ * This ensures reliable discovery of time-duration-specific markets.
6
9
  */
7
10
  import type { CryptoMarket, CryptoHftConfig, RoundState } from './types.js';
8
11
  export interface MarketScanner {
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * Market Scanner — Round-based 15-minute market discovery and rotation
3
+ * Market Scanner — Round-based market discovery and rotation
4
4
  *
5
- * Tracks round slots (unix_ts / 900) and automatically fetches new markets
5
+ * Tracks round slots (unix_ts / roundDurationSec) and automatically fetches new markets
6
6
  * when rounds transition. Enforces timing gates: min round age, min time left.
7
+ *
8
+ * Discovery method: Direct slug-based queries (e.g., btc-updown-5m-1770935700)
9
+ * This ensures reliable discovery of time-duration-specific markets.
7
10
  */
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
12
  exports.createMarketScanner = createMarketScanner;
@@ -39,45 +42,86 @@ function createMarketScanner(config) {
39
42
  async function fetchMarkets() {
40
43
  const cfg = getConfig();
41
44
  const found = [];
45
+ // Determine duration label (5m or 15m)
46
+ const durationLabel = cfg.roundDurationSec === 300 ? '5m' : '15m';
42
47
  for (const asset of cfg.assets) {
43
48
  try {
44
- const queries = [
49
+ // Calculate current market slot and build slug
50
+ // E.g., for 5-min: btc-updown-5m-1770935700
51
+ // The timestamp is floored to the slot boundary: floor(now / 300) * 300
52
+ const nowSec = Math.floor(Date.now() / 1000);
53
+ const slotStart = Math.floor(nowSec / cfg.roundDurationSec) * cfg.roundDurationSec;
54
+ const slug = `${asset.toLowerCase()}-updown-${durationLabel}-${slotStart}`;
55
+ // Try direct slug query first (most reliable)
56
+ const slugRes = await fetch(`${GAMMA_URL}/markets?slug=${encodeURIComponent(slug)}&active=true&closed=false`);
57
+ if (slugRes.ok) {
58
+ const slugData = (await slugRes.json());
59
+ if (slugData.length > 0) {
60
+ const m = slugData[0]; // slug should return exactly 1 result
61
+ if (!m.closed && m.active && m.tokens && m.tokens.length >= 2) {
62
+ const upToken = m.tokens.find((t) => t.outcome.toLowerCase() === 'yes' || t.outcome.toLowerCase() === 'up');
63
+ const downToken = m.tokens.find((t) => t.outcome.toLowerCase() === 'no' || t.outcome.toLowerCase() === 'down');
64
+ if (upToken && downToken) {
65
+ const expiresAt = new Date(m.end_date_iso).getTime();
66
+ const roundSlot = Math.floor(expiresAt / 1000 / cfg.roundDurationSec);
67
+ found.push({
68
+ asset: asset.toUpperCase(),
69
+ conditionId: m.condition_id,
70
+ questionId: m.question_id,
71
+ upTokenId: upToken.token_id,
72
+ downTokenId: downToken.token_id,
73
+ upPrice: upToken.price,
74
+ downPrice: downToken.price,
75
+ expiresAt,
76
+ roundSlot,
77
+ negRisk: m.neg_risk ?? true,
78
+ question: m.question,
79
+ });
80
+ logger_js_1.logger.debug({ asset, slug, slot: roundSlot }, 'Found market by slug');
81
+ continue; // Successfully found, move to next asset
82
+ }
83
+ }
84
+ }
85
+ }
86
+ // Fallback: try generic search if slug query fails (between rounds, market not yet live)
87
+ const searchQueries = [
45
88
  `Will ${asset} go up`,
46
89
  `${asset} price`,
47
- `Will the price of ${asset}`,
90
+ `${asset}-updown`,
48
91
  ];
49
- for (const query of queries) {
50
- const res = await fetch(`${GAMMA_URL}/markets?_limit=10&active=true&closed=false&_q=${encodeURIComponent(query)}`);
51
- if (!res.ok)
92
+ for (const query of searchQueries) {
93
+ const searchRes = await fetch(`${GAMMA_URL}/markets?_limit=10&active=true&closed=false&_q=${encodeURIComponent(query)}`);
94
+ if (!searchRes.ok)
52
95
  continue;
53
- const data = (await res.json());
54
- for (const m of data) {
96
+ const searchData = (await searchRes.json());
97
+ for (const m of searchData) {
55
98
  if (m.closed || !m.active)
56
99
  continue;
57
100
  if (!m.tokens || m.tokens.length < 2)
58
101
  continue;
59
- // Must mention this asset
102
+ // Verify this is the right duration market
60
103
  const q = m.question.toLowerCase();
61
104
  if (!q.includes(asset.toLowerCase()))
62
105
  continue;
63
- // Must be a short-duration market (expires within roundDuration + buffer)
106
+ // Filter by duration: must expire within roundDuration + buffer
64
107
  const expiresAt = new Date(m.end_date_iso).getTime();
65
108
  const now = Date.now();
66
109
  const secsLeft = (expiresAt - now) / 1000;
67
- // Skip expired or too-far-out markets
68
110
  if (secsLeft <= 0 || secsLeft > cfg.roundDurationSec + 60)
69
111
  continue;
112
+ // Verify slug matches expected pattern
113
+ if (!m.slug.includes(`-${durationLabel}-`))
114
+ continue;
70
115
  // Find UP/YES and DOWN/NO tokens
71
116
  const upToken = m.tokens.find((t) => t.outcome.toLowerCase() === 'yes' || t.outcome.toLowerCase() === 'up');
72
117
  const downToken = m.tokens.find((t) => t.outcome.toLowerCase() === 'no' || t.outcome.toLowerCase() === 'down');
73
118
  if (!upToken || !downToken)
74
119
  continue;
75
- // Skip if we already found a closer-expiry market for this asset
120
+ // Skip if already found a closer-expiry market for this asset
76
121
  const existing = found.find((f) => f.asset === asset.toUpperCase());
77
122
  if (existing && existing.expiresAt <= expiresAt)
78
123
  continue;
79
124
  if (existing) {
80
- // Replace with closer expiry
81
125
  const idx = found.indexOf(existing);
82
126
  found.splice(idx, 1);
83
127
  }
@@ -95,6 +139,7 @@ function createMarketScanner(config) {
95
139
  negRisk: m.neg_risk ?? true,
96
140
  question: m.question,
97
141
  });
142
+ logger_js_1.logger.debug({ asset, slug: m.slug, slot: roundSlot }, 'Found market by search');
98
143
  }
99
144
  // Found one for this asset, stop trying queries
100
145
  if (found.some((f) => f.asset === asset.toUpperCase()))
@@ -1 +1 @@
1
- {"version":3,"file":"market-scanner.js","sourceRoot":"","sources":["../../../src/strategies/crypto-hft/market-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market-scanner.js","sourceRoot":"","sources":["../../../src/strategies/crypto-hft/market-scanner.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAsCH,kDA0PC;AA9RD,qDAA+C;AAG/C,MAAM,SAAS,GAAG,kCAAkC,CAAC;AAiCrD,SAAgB,mBAAmB,CAAC,MAAiD;IACnF,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IACvE,IAAI,OAAO,GAAmB,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAA0B,IAAI,CAAC;IAC/C,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,SAAS,cAAc;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,aAAa,CAAC,IAAY;QACjC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC1D,CAAC;IAED,SAAS,aAAa;QACpB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC;QAElD,OAAO;YACL,IAAI;YACJ,SAAS;YACT,OAAO;YACP,MAAM;YACN,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,YAAY;QACzB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,uCAAuC;QACvC,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAElE,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,+CAA+C;gBAC/C,4CAA4C;gBAC5C,wEAAwE;gBACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC;gBACnF,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,WAAW,aAAa,IAAI,SAAS,EAAE,CAAC;gBAE3E,8CAA8C;gBAC9C,MAAM,OAAO,GAAG,MAAM,KAAK,CACzB,GAAG,SAAS,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,2BAA2B,CACjF,CAAC;gBAEF,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAkB,CAAC;oBACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;wBAC7D,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;4BAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAC7E,CAAC;4BACF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAC9E,CAAC;4BAEF,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gCACzB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;gCACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;gCAEtE,KAAK,CAAC,IAAI,CAAC;oCACT,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;oCAC1B,WAAW,EAAE,CAAC,CAAC,YAAY;oCAC3B,UAAU,EAAE,CAAC,CAAC,WAAW;oCACzB,SAAS,EAAE,OAAO,CAAC,QAAQ;oCAC3B,WAAW,EAAE,SAAS,CAAC,QAAQ;oCAC/B,OAAO,EAAE,OAAO,CAAC,KAAK;oCACtB,SAAS,EAAE,SAAS,CAAC,KAAK;oCAC1B,SAAS;oCACT,SAAS;oCACT,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;oCAC3B,QAAQ,EAAE,CAAC,CAAC,QAAQ;iCACrB,CAAC,CAAC;gCAEH,kBAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,sBAAsB,CAAC,CAAC;gCACvE,SAAS,CAAC,yCAAyC;4BACrD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,yFAAyF;gBACzF,MAAM,aAAa,GAAG;oBACpB,QAAQ,KAAK,QAAQ;oBACrB,GAAG,KAAK,QAAQ;oBAChB,GAAG,KAAK,SAAS;iBAClB,CAAC;gBAEF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;oBAClC,MAAM,SAAS,GAAG,MAAM,KAAK,CAC3B,GAAG,SAAS,kDAAkD,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;oBACF,IAAI,CAAC,SAAS,CAAC,EAAE;wBAAE,SAAS;oBAE5B,MAAM,UAAU,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAkB,CAAC;oBAE7D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC3B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM;4BAAE,SAAS;wBACpC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;4BAAE,SAAS;wBAE/C,2CAA2C;wBAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;wBACnC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;4BAAE,SAAS;wBAE/C,gEAAgE;wBAChE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;wBACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACvB,MAAM,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;wBAE1C,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,GAAG,CAAC,gBAAgB,GAAG,EAAE;4BAAE,SAAS;wBAEpE,uCAAuC;wBACvC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,GAAG,CAAC;4BAAE,SAAS;wBAErD,iCAAiC;wBACjC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAC7E,CAAC;wBACF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAC9E,CAAC;wBACF,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;4BAAE,SAAS;wBAErC,8DAA8D;wBAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;wBACpE,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS;4BAAE,SAAS;wBAC1D,IAAI,QAAQ,EAAE,CAAC;4BACb,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;4BACpC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBACvB,CAAC;wBAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAEtE,KAAK,CAAC,IAAI,CAAC;4BACT,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;4BAC1B,WAAW,EAAE,CAAC,CAAC,YAAY;4BAC3B,UAAU,EAAE,CAAC,CAAC,WAAW;4BACzB,SAAS,EAAE,OAAO,CAAC,QAAQ;4BAC3B,WAAW,EAAE,SAAS,CAAC,QAAQ;4BAC/B,OAAO,EAAE,OAAO,CAAC,KAAK;4BACtB,SAAS,EAAE,SAAS,CAAC,KAAK;4BAC1B,SAAS;4BACT,SAAS;4BACT,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;4BAC3B,QAAQ,EAAE,CAAC,CAAC,QAAQ;yBACrB,CAAC,CAAC;wBAEH,kBAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,wBAAwB,CAAC,CAAC;oBACnF,CAAC;oBAED,gDAAgD;oBAChD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;wBAAE,MAAM;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,kBAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,UAAU,YAAY;QACzB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAE9B,2CAA2C;QAC3C,IAAI,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC7B,WAAW,GAAG,IAAI,CAAC;YAEnB,gDAAgD;YAChD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,MAAM;gBAAE,OAAO;YAChD,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE3B,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YAE/B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5C,kBAAM,CAAC,IAAI,CACT;oBACE,IAAI;oBACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC9F,EACD,4BAA4B,CAC7B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO;YACX,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,WAAW,GAAG,cAAc,EAAE,CAAC;YAC/B,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,QAAQ;YACN,OAAO,aAAa,EAAE,CAAC;QACzB,CAAC;QAED,SAAS,CAAC,KAAK;YACb,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;QACtE,CAAC;QAED,QAAQ;YACN,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;YAE9B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;gBACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;YACzG,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;gBAC3C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;YAClH,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,KAAK;YACH,wCAAwC;YACxC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;YACzD,0BAA0B;YAC1B,YAAY,EAAE,CAAC;QACjB,CAAC;QAED,IAAI;YACF,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,CAAC,YAAY,CAAC,CAAC;gBAC5B,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAED,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS;YACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,EAAE,CAAC;gBACN,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;gBACpB,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clodds",
3
- "version": "1.6.21",
3
+ "version": "1.6.22",
4
4
  "description": "Open-source AI trading terminal. Trade Polymarket, Kalshi, Betfair, Binance, Bybit, Hyperliquid, Solana DEXs from Telegram, Discord, Slack or web. Arbitrage detection, whale tracking, copy trading, perpetual futures up to 200x, DeFi swaps, MEV protection. Self-hosted, 119 skills, powered by Claude.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {