clodds 1.6.10 → 1.6.11
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/agents/handlers/hyperliquid.js +5 -2
- package/dist/agents/handlers/hyperliquid.js.map +1 -1
- package/dist/agents/handlers/kalshi.js +25 -0
- package/dist/agents/handlers/kalshi.js.map +1 -1
- package/dist/agents/handlers/opinion.js +1 -1
- package/dist/agents/handlers/opinion.js.map +1 -1
- package/dist/agents/handlers/polymarket.js +8 -4
- package/dist/agents/handlers/polymarket.js.map +1 -1
- package/dist/agents/index.js +77 -11
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/subagents.js +6 -1
- package/dist/agents/subagents.js.map +1 -1
- package/dist/auth/copilot.js +2 -2
- package/dist/channels/telegram/index.js +143 -133
- package/dist/channels/telegram/index.js.map +1 -1
- package/dist/channels/twitch/index.js +76 -66
- package/dist/channels/twitch/index.js.map +1 -1
- package/dist/channels/whatsapp/index.js +131 -126
- package/dist/channels/whatsapp/index.js.map +1 -1
- package/dist/cli/commands/repl.js +9 -2
- package/dist/cli/commands/repl.js.map +1 -1
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -1
- package/dist/cron/index.js +3 -0
- package/dist/cron/index.js.map +1 -1
- package/dist/db/index.js +3 -1
- package/dist/db/index.js.map +1 -1
- package/dist/execution/bracket-orders.js +102 -31
- package/dist/execution/bracket-orders.js.map +1 -1
- package/dist/execution/circuit-breaker.js +3 -4
- package/dist/execution/circuit-breaker.js.map +1 -1
- package/dist/execution/dca.js +46 -3
- package/dist/execution/dca.js.map +1 -1
- package/dist/execution/futures.js +8 -5
- package/dist/execution/futures.js.map +1 -1
- package/dist/execution/index.js +150 -44
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/twap.js +35 -2
- package/dist/execution/twap.js.map +1 -1
- package/dist/extensions/task-runner/index.js +38 -0
- package/dist/extensions/task-runner/index.js.map +1 -1
- package/dist/feeds/betfair/index.js +8 -1
- package/dist/feeds/betfair/index.js.map +1 -1
- package/dist/feeds/crypto/whale-tracker.js +24 -5
- package/dist/feeds/crypto/whale-tracker.js.map +1 -1
- package/dist/feeds/hedgehog/index.js +12 -0
- package/dist/feeds/hedgehog/index.js.map +1 -1
- package/dist/feeds/kalshi/index.js +7 -7
- package/dist/feeds/kalshi/index.js.map +1 -1
- package/dist/feeds/manifold/index.js +12 -0
- package/dist/feeds/manifold/index.js.map +1 -1
- package/dist/feeds/polymarket/index.js +3 -2
- package/dist/feeds/polymarket/index.js.map +1 -1
- package/dist/feeds/polymarket/user-ws.js +32 -9
- package/dist/feeds/polymarket/user-ws.js.map +1 -1
- package/dist/feeds/smarkets/index.js +7 -1
- package/dist/feeds/smarkets/index.js.map +1 -1
- package/dist/gateway/api-routes.js +32 -2
- package/dist/gateway/api-routes.js.map +1 -1
- package/dist/gateway/dca-routes.d.ts +5 -1
- package/dist/gateway/dca-routes.js +32 -1
- package/dist/gateway/dca-routes.js.map +1 -1
- package/dist/gateway/index.js +6 -5
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/payments-routes.js +1 -1
- package/dist/gateway/payments-routes.js.map +1 -1
- package/dist/gateway/percolator-routes.js +3 -3
- package/dist/gateway/percolator-routes.js.map +1 -1
- package/dist/gateway/risk-routes.js +2 -2
- package/dist/gateway/risk-routes.js.map +1 -1
- package/dist/gateway/server.js +12 -2
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/signal-bus.js +23 -4
- package/dist/gateway/signal-bus.js.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/infra/index.js +27 -22
- package/dist/infra/index.js.map +1 -1
- package/dist/link-understanding/index.js +7 -1
- package/dist/link-understanding/index.js.map +1 -1
- package/dist/monitoring/alerts.js +1 -1
- package/dist/monitoring/alerts.js.map +1 -1
- package/dist/monitoring/metrics.js +49 -0
- package/dist/monitoring/metrics.js.map +1 -1
- package/dist/opportunity/analytics.js +2 -2
- package/dist/opportunity/analytics.js.map +1 -1
- package/dist/opportunity/executor.js +2 -2
- package/dist/opportunity/executor.js.map +1 -1
- package/dist/opportunity/index.d.ts +2 -0
- package/dist/opportunity/index.js +18 -2
- package/dist/opportunity/index.js.map +1 -1
- package/dist/opportunity/scoring.d.ts +1 -0
- package/dist/opportunity/scoring.js.map +1 -1
- package/dist/providers/discovery.d.ts +1 -1
- package/dist/services/feature-engineering/rolling-window.js +7 -0
- package/dist/services/feature-engineering/rolling-window.js.map +1 -1
- package/dist/services/tick-streamer/index.js +4 -0
- package/dist/services/tick-streamer/index.js.map +1 -1
- package/dist/session/index.js +14 -0
- package/dist/session/index.js.map +1 -1
- package/dist/sessions/index.js +1 -1
- package/dist/sessions/index.js.map +1 -1
- package/dist/signal-router/router.js +7 -0
- package/dist/signal-router/router.js.map +1 -1
- package/dist/skills/bundled/dca/index.js +3 -1
- package/dist/skills/bundled/dca/index.js.map +1 -1
- package/dist/skills/bundled/hyperliquid/index.js +1 -1
- package/dist/skills/bundled/hyperliquid/index.js.map +1 -1
- package/dist/skills/bundled/qmd/index.js +1 -1
- package/dist/skills/bundled/qmd/index.js.map +1 -1
- package/dist/skills/bundled/ticks/index.js +1 -1
- package/dist/skills/bundled/ticks/index.js.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/solana/pump-swarm.js +1 -1
- package/dist/solana/pump-swarm.js.map +1 -1
- package/dist/solana/swarm-builders.js +26 -0
- package/dist/solana/swarm-builders.js.map +1 -1
- package/dist/strategies/crypto-hft/index.js +7 -3
- package/dist/strategies/crypto-hft/index.js.map +1 -1
- package/dist/terminal/index.js +11 -5
- package/dist/terminal/index.js.map +1 -1
- package/dist/tools/browser.js +8 -1
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/sql.js +2 -1
- package/dist/tools/sql.js.map +1 -1
- package/dist/trading/backtest.js +1 -1
- package/dist/trading/backtest.js.map +1 -1
- package/dist/trading/copy-trading.js +7 -0
- package/dist/trading/copy-trading.js.map +1 -1
- package/dist/trading/futures/index.js +5 -5
- package/dist/trading/futures/index.js.map +1 -1
- package/dist/trading/index.js +7 -6
- package/dist/trading/index.js.map +1 -1
- package/dist/trading/kelly.js +21 -0
- package/dist/trading/kelly.js.map +1 -1
- package/dist/trading/logger.js +13 -1
- package/dist/trading/logger.js.map +1 -1
- package/dist/trading/ml-signals.js +15 -6
- package/dist/trading/ml-signals.js.map +1 -1
- package/dist/trading/orchestrator.js +25 -1
- package/dist/trading/orchestrator.js.map +1 -1
- package/dist/trading/safety.js +7 -9
- package/dist/trading/safety.js.map +1 -1
- package/dist/utils/config.js +3 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
package/dist/agents/index.js
CHANGED
|
@@ -9079,9 +9079,10 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9079
9079
|
return JSON.stringify({ error: 'Trading execution not available. Configure trading.enabled=true.' });
|
|
9080
9080
|
}
|
|
9081
9081
|
// Buy YES
|
|
9082
|
-
const
|
|
9082
|
+
const arbMarketId = marketData.condition_id || yesToken.token_id;
|
|
9083
|
+
const yesResult = await execSvc.buyLimit({ platform: 'polymarket', marketId: arbMarketId, tokenId: yesToken.token_id, price: yesAsk, size });
|
|
9083
9084
|
// Buy NO
|
|
9084
|
-
const noResult = await execSvc.buyLimit({ platform: 'polymarket', marketId:
|
|
9085
|
+
const noResult = await execSvc.buyLimit({ platform: 'polymarket', marketId: arbMarketId, tokenId: noToken.token_id, price: noAsk, size });
|
|
9085
9086
|
await context.credentials.markSuccess(userId, 'polymarket');
|
|
9086
9087
|
return JSON.stringify({
|
|
9087
9088
|
result: {
|
|
@@ -9339,7 +9340,7 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9339
9340
|
try {
|
|
9340
9341
|
const result = await execSvc.buyLimit({
|
|
9341
9342
|
platform: 'polymarket',
|
|
9342
|
-
marketId: tokenId,
|
|
9343
|
+
marketId: toolInput.condition_id || tokenId,
|
|
9343
9344
|
tokenId,
|
|
9344
9345
|
price,
|
|
9345
9346
|
size,
|
|
@@ -9378,13 +9379,25 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9378
9379
|
const tokenId = toolInput.token_id;
|
|
9379
9380
|
const size = toolInput.size;
|
|
9380
9381
|
const price = toolInput.price || 0.01;
|
|
9382
|
+
const notional = price * size;
|
|
9383
|
+
const maxError = (0, risk_1.enforceMaxOrderSize)(context, notional, 'polymarket_sell');
|
|
9384
|
+
if (maxError)
|
|
9385
|
+
return maxError;
|
|
9386
|
+
const exposureError = (0, risk_1.enforceExposureLimits)(context, userId, {
|
|
9387
|
+
platform: 'polymarket',
|
|
9388
|
+
outcomeId: tokenId,
|
|
9389
|
+
notional,
|
|
9390
|
+
label: 'polymarket_sell',
|
|
9391
|
+
});
|
|
9392
|
+
if (exposureError)
|
|
9393
|
+
return exposureError;
|
|
9381
9394
|
// Use TypeScript execution service if available
|
|
9382
9395
|
const execSvc = context.tradingContext?.executionService;
|
|
9383
9396
|
if (execSvc) {
|
|
9384
9397
|
try {
|
|
9385
9398
|
const result = await execSvc.sellLimit({
|
|
9386
9399
|
platform: 'polymarket',
|
|
9387
|
-
marketId: tokenId,
|
|
9400
|
+
marketId: toolInput.condition_id || tokenId,
|
|
9388
9401
|
tokenId,
|
|
9389
9402
|
price,
|
|
9390
9403
|
size,
|
|
@@ -9631,13 +9644,24 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9631
9644
|
case 'polymarket_market_sell': {
|
|
9632
9645
|
const tokenId = toolInput.token_id;
|
|
9633
9646
|
const size = toolInput.size;
|
|
9647
|
+
const maxError = (0, risk_1.enforceMaxOrderSize)(context, size, 'polymarket_market_sell');
|
|
9648
|
+
if (maxError)
|
|
9649
|
+
return maxError;
|
|
9650
|
+
const exposureError = (0, risk_1.enforceExposureLimits)(context, userId, {
|
|
9651
|
+
platform: 'polymarket',
|
|
9652
|
+
outcomeId: tokenId,
|
|
9653
|
+
notional: size,
|
|
9654
|
+
label: 'polymarket_market_sell',
|
|
9655
|
+
});
|
|
9656
|
+
if (exposureError)
|
|
9657
|
+
return exposureError;
|
|
9634
9658
|
// Use TypeScript execution service if available
|
|
9635
9659
|
const execSvc = context.tradingContext?.executionService;
|
|
9636
9660
|
if (execSvc) {
|
|
9637
9661
|
try {
|
|
9638
9662
|
const result = await execSvc.marketSell({
|
|
9639
9663
|
platform: 'polymarket',
|
|
9640
|
-
marketId: tokenId,
|
|
9664
|
+
marketId: toolInput.condition_id || tokenId,
|
|
9641
9665
|
tokenId,
|
|
9642
9666
|
size,
|
|
9643
9667
|
});
|
|
@@ -9689,11 +9713,28 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9689
9713
|
const execSvc = context.tradingContext?.executionService;
|
|
9690
9714
|
if (execSvc) {
|
|
9691
9715
|
try {
|
|
9716
|
+
// Fetch current buy price to convert USD amount to shares.
|
|
9717
|
+
// Polymarket size = number of shares, not USD.
|
|
9718
|
+
let buyPrice = 0.99; // fallback: worst-case price
|
|
9719
|
+
try {
|
|
9720
|
+
const priceRes = await fetchPolymarketClob(context, `https://clob.polymarket.com/price?token_id=${tokenId}&side=buy`);
|
|
9721
|
+
const priceData = await priceRes.json();
|
|
9722
|
+
const parsed = Number(priceData.price);
|
|
9723
|
+
if (parsed > 0 && parsed <= 1)
|
|
9724
|
+
buyPrice = parsed;
|
|
9725
|
+
}
|
|
9726
|
+
catch {
|
|
9727
|
+
// Use fallback price if CLOB price fetch fails
|
|
9728
|
+
}
|
|
9729
|
+
const shares = Math.floor(amount / buyPrice);
|
|
9730
|
+
if (shares <= 0) {
|
|
9731
|
+
return JSON.stringify({ error: 'Market buy failed', details: `Amount $${amount} too small at price ${buyPrice}` });
|
|
9732
|
+
}
|
|
9692
9733
|
const result = await execSvc.marketBuy({
|
|
9693
9734
|
platform: 'polymarket',
|
|
9694
|
-
marketId: tokenId,
|
|
9735
|
+
marketId: toolInput.condition_id || tokenId,
|
|
9695
9736
|
tokenId,
|
|
9696
|
-
size:
|
|
9737
|
+
size: shares,
|
|
9697
9738
|
});
|
|
9698
9739
|
if (result.success) {
|
|
9699
9740
|
await context.credentials.markSuccess(userId, 'polymarket');
|
|
@@ -9747,7 +9788,7 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9747
9788
|
try {
|
|
9748
9789
|
const result = await execSvc.makerBuy({
|
|
9749
9790
|
platform: 'polymarket',
|
|
9750
|
-
marketId: tokenId,
|
|
9791
|
+
marketId: toolInput.condition_id || tokenId,
|
|
9751
9792
|
tokenId,
|
|
9752
9793
|
price,
|
|
9753
9794
|
size,
|
|
@@ -9786,13 +9827,25 @@ async function executeTool(toolName, toolInput, context) {
|
|
|
9786
9827
|
const tokenId = toolInput.token_id;
|
|
9787
9828
|
const price = toolInput.price;
|
|
9788
9829
|
const size = toolInput.size;
|
|
9830
|
+
const notional = price * size;
|
|
9831
|
+
const maxError = (0, risk_1.enforceMaxOrderSize)(context, notional, 'polymarket_maker_sell');
|
|
9832
|
+
if (maxError)
|
|
9833
|
+
return maxError;
|
|
9834
|
+
const exposureError = (0, risk_1.enforceExposureLimits)(context, userId, {
|
|
9835
|
+
platform: 'polymarket',
|
|
9836
|
+
outcomeId: tokenId,
|
|
9837
|
+
notional,
|
|
9838
|
+
label: 'polymarket_maker_sell',
|
|
9839
|
+
});
|
|
9840
|
+
if (exposureError)
|
|
9841
|
+
return exposureError;
|
|
9789
9842
|
// Use TypeScript execution service if available
|
|
9790
9843
|
const execSvc = context.tradingContext?.executionService;
|
|
9791
9844
|
if (execSvc) {
|
|
9792
9845
|
try {
|
|
9793
9846
|
const result = await execSvc.makerSell({
|
|
9794
9847
|
platform: 'polymarket',
|
|
9795
|
-
marketId: tokenId,
|
|
9848
|
+
marketId: toolInput.condition_id || tokenId,
|
|
9796
9849
|
tokenId,
|
|
9797
9850
|
price,
|
|
9798
9851
|
size,
|
|
@@ -15970,8 +16023,21 @@ async function createAgentManager(config, feeds, db, sessionManager, sendMessage
|
|
|
15970
16023
|
}
|
|
15971
16024
|
const client = new sdk_1.default({ apiKey });
|
|
15972
16025
|
const skills = (0, loader_1.createSkillManager)(config.agents.defaults.workspace);
|
|
15973
|
-
|
|
15974
|
-
|
|
16026
|
+
let credentials;
|
|
16027
|
+
try {
|
|
16028
|
+
const createCredentialsManager = await _loadCredentials();
|
|
16029
|
+
credentials = createCredentialsManager(db);
|
|
16030
|
+
}
|
|
16031
|
+
catch (err) {
|
|
16032
|
+
logger_1.logger.warn({ err }, '[agents] Failed to load credentials module — credential tools disabled');
|
|
16033
|
+
credentials = {
|
|
16034
|
+
get: () => null,
|
|
16035
|
+
set: () => { },
|
|
16036
|
+
delete: () => { },
|
|
16037
|
+
list: () => [],
|
|
16038
|
+
has: () => false,
|
|
16039
|
+
};
|
|
16040
|
+
}
|
|
15975
16041
|
const transcription = (0, transcription_1.createTranscriptionTool)(config.agents.defaults.workspace);
|
|
15976
16042
|
const files = (0, files_1.createFileTool)(config.agents.defaults.workspace);
|
|
15977
16043
|
const shellHistory = (0, shell_history_1.createShellHistoryTool)();
|