basileus-agentkit-plugin 0.1.1 → 0.2.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/README.md +1 -0
- package/dist/actions/limitless/client.d.ts +9 -0
- package/dist/actions/limitless/client.js +19 -0
- package/dist/actions/limitless/client.js.map +1 -0
- package/dist/actions/limitless/constants.d.ts +5 -0
- package/dist/actions/limitless/constants.js +6 -0
- package/dist/actions/limitless/constants.js.map +1 -0
- package/dist/actions/limitless/index.d.ts +1 -0
- package/dist/actions/limitless/index.js +2 -0
- package/dist/actions/limitless/index.js.map +1 -0
- package/dist/actions/limitless/limitlessActionProvider.d.ts +2 -0
- package/dist/actions/limitless/limitlessActionProvider.js +314 -0
- package/dist/actions/limitless/limitlessActionProvider.js.map +1 -0
- package/dist/actions/limitless/schemas.d.ts +39 -0
- package/dist/actions/limitless/schemas.js +50 -0
- package/dist/actions/limitless/schemas.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +13 -2
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
- **Summarizer** — summarize agent phases into short, human-readable activity logs
|
|
11
11
|
- **Wallet** — create an AgentKit wallet with Basileus' ERC-8021 builder code attribution
|
|
12
12
|
- **Compound Actions** — fixed Compound Finance action provider (supply, withdraw, portfolio)
|
|
13
|
+
- **Limitless Actions** - action provider for Limitless prediction market
|
|
13
14
|
- **Aleph Actions** — VPS computing costs information, balance tracking and swaps action provider for built-in self-funding of computing costs
|
|
14
15
|
|
|
15
16
|
## Install
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HttpClient, MarketFetcher, OrderClient, PortfolioFetcher } from "@limitless-exchange/sdk";
|
|
2
|
+
export interface LimitlessClients {
|
|
3
|
+
httpClient: HttpClient;
|
|
4
|
+
marketFetcher: MarketFetcher;
|
|
5
|
+
orderClient: OrderClient;
|
|
6
|
+
portfolioFetcher: PortfolioFetcher;
|
|
7
|
+
walletAddress: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function createLimitlessClients(apiKey: string, privateKey: string): LimitlessClients;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HttpClient, MarketFetcher, OrderClient, PortfolioFetcher } from "@limitless-exchange/sdk";
|
|
2
|
+
import { ethers } from "ethers";
|
|
3
|
+
export function createLimitlessClients(apiKey, privateKey) {
|
|
4
|
+
const httpClient = new HttpClient({ apiKey });
|
|
5
|
+
const wallet = new ethers.Wallet(privateKey);
|
|
6
|
+
const marketFetcher = new MarketFetcher(httpClient);
|
|
7
|
+
// Cast wallet to satisfy SDK's CJS ethers.Wallet type expectation
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
const orderClient = new OrderClient({ httpClient, wallet: wallet, marketFetcher });
|
|
10
|
+
const portfolioFetcher = new PortfolioFetcher(httpClient);
|
|
11
|
+
return {
|
|
12
|
+
httpClient,
|
|
13
|
+
marketFetcher,
|
|
14
|
+
orderClient,
|
|
15
|
+
portfolioFetcher,
|
|
16
|
+
walletAddress: wallet.address,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/actions/limitless/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUhC,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,UAAkB;IACvE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IACpD,kEAAkE;IAClE,8DAA8D;IAC9D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,MAAa,EAAE,aAAa,EAAE,CAAC,CAAC;IAC1F,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1D,OAAO;QACL,UAAU;QACV,aAAa;QACb,WAAW;QACX,gBAAgB;QAChB,aAAa,EAAE,MAAM,CAAC,OAAO;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const LIMITLESS_API_URL = "https://api.limitless.exchange";
|
|
2
|
+
export declare const LIMITLESS_CHAIN_ID = 8453;
|
|
3
|
+
export declare const USDC_ADDRESS: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
4
|
+
export declare const CTF_ADDRESS: "0xC9c98965297Bc527861c898329Ee280632B76e18";
|
|
5
|
+
export declare const USDC_DECIMALS = 6;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const LIMITLESS_API_URL = "https://api.limitless.exchange";
|
|
2
|
+
export const LIMITLESS_CHAIN_ID = 8453;
|
|
3
|
+
export const USDC_ADDRESS = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
4
|
+
export const CTF_ADDRESS = "0xC9c98965297Bc527861c898329Ee280632B76e18";
|
|
5
|
+
export const USDC_DECIMALS = 6;
|
|
6
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/actions/limitless/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAqD,CAAC;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,4CAAqD,CAAC;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createLimitlessActionProvider } from "./limitlessActionProvider.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/limitless/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { customActionProvider } from "@coinbase/agentkit";
|
|
2
|
+
import { OrderType, Side } from "@limitless-exchange/sdk";
|
|
3
|
+
import { encodeFunctionData, erc20Abi } from "viem";
|
|
4
|
+
import { createLimitlessClients } from "./client.js";
|
|
5
|
+
import { CTF_ADDRESS, USDC_ADDRESS } from "./constants.js";
|
|
6
|
+
import { BuyMarketOrderSchema, CheckOrderStatusSchema, GetDailyMarketsSchema, GetPositionsSchema, PlaceLimitSellSchema, } from "./schemas.js";
|
|
7
|
+
/* ── ERC-1155 minimal ABI ── */
|
|
8
|
+
const erc1155SetApprovalAbi = [
|
|
9
|
+
{
|
|
10
|
+
inputs: [
|
|
11
|
+
{ name: "operator", type: "address" },
|
|
12
|
+
{ name: "approved", type: "bool" },
|
|
13
|
+
],
|
|
14
|
+
name: "setApprovalForAll",
|
|
15
|
+
outputs: [],
|
|
16
|
+
stateMutability: "nonpayable",
|
|
17
|
+
type: "function",
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
async function approveERC20(wallet, tokenAddress, spender, amount) {
|
|
21
|
+
const data = encodeFunctionData({
|
|
22
|
+
abi: erc20Abi,
|
|
23
|
+
functionName: "approve",
|
|
24
|
+
args: [spender, amount],
|
|
25
|
+
});
|
|
26
|
+
const txHash = await wallet.sendTransaction({
|
|
27
|
+
to: tokenAddress,
|
|
28
|
+
data,
|
|
29
|
+
});
|
|
30
|
+
await wallet.waitForTransactionReceipt(txHash);
|
|
31
|
+
}
|
|
32
|
+
async function approveERC1155(wallet, tokenAddress, operator) {
|
|
33
|
+
const data = encodeFunctionData({
|
|
34
|
+
abi: erc1155SetApprovalAbi,
|
|
35
|
+
functionName: "setApprovalForAll",
|
|
36
|
+
args: [operator, true],
|
|
37
|
+
});
|
|
38
|
+
const txHash = await wallet.sendTransaction({
|
|
39
|
+
to: tokenAddress,
|
|
40
|
+
data,
|
|
41
|
+
});
|
|
42
|
+
await wallet.waitForTransactionReceipt(txHash);
|
|
43
|
+
}
|
|
44
|
+
/* ── Helpers ── */
|
|
45
|
+
const CRYPTO_PAGE_ID = "5e76699e-8763-4c91-85de-3efeb064efec";
|
|
46
|
+
const SHARES_DECIMALS = 6;
|
|
47
|
+
function fmtShares(raw) {
|
|
48
|
+
if (raw == null)
|
|
49
|
+
return null;
|
|
50
|
+
return Number(raw) / 10 ** SHARES_DECIMALS;
|
|
51
|
+
}
|
|
52
|
+
function timeRemaining(expirationTimestamp) {
|
|
53
|
+
if (!expirationTimestamp)
|
|
54
|
+
return null;
|
|
55
|
+
const diffMs = expirationTimestamp - Date.now();
|
|
56
|
+
if (diffMs <= 0)
|
|
57
|
+
return "expired";
|
|
58
|
+
const h = Math.floor(diffMs / 3_600_000);
|
|
59
|
+
const m = Math.floor((diffMs % 3_600_000) / 60_000);
|
|
60
|
+
return `${h}h ${m}m`;
|
|
61
|
+
}
|
|
62
|
+
/* ── Spot price helper (CoinGecko) ── */
|
|
63
|
+
const TICKER_TO_COINGECKO = {
|
|
64
|
+
BTC: "bitcoin",
|
|
65
|
+
ETH: "ethereum",
|
|
66
|
+
SOL: "solana",
|
|
67
|
+
AVAX: "avalanche-2",
|
|
68
|
+
DOGE: "dogecoin",
|
|
69
|
+
XRP: "ripple",
|
|
70
|
+
ADA: "cardano",
|
|
71
|
+
DOT: "polkadot",
|
|
72
|
+
LINK: "chainlink",
|
|
73
|
+
MATIC: "matic-network",
|
|
74
|
+
NEAR: "near",
|
|
75
|
+
SUI: "sui",
|
|
76
|
+
ARB: "arbitrum",
|
|
77
|
+
OP: "optimism",
|
|
78
|
+
PEPE: "pepe",
|
|
79
|
+
WIF: "dogwifcoin",
|
|
80
|
+
BONK: "bonk",
|
|
81
|
+
BNB: "binancecoin",
|
|
82
|
+
LTC: "litecoin",
|
|
83
|
+
BCH: "bitcoin-cash",
|
|
84
|
+
AAVE: "aave",
|
|
85
|
+
UNI: "uniswap",
|
|
86
|
+
MKR: "maker",
|
|
87
|
+
HYPE: "hyperliquid",
|
|
88
|
+
TRX: "tron",
|
|
89
|
+
TRUMP: "official-trump",
|
|
90
|
+
MNT: "mantle",
|
|
91
|
+
XLM: "stellar",
|
|
92
|
+
ZEC: "zcash",
|
|
93
|
+
WLFI: "world-liberty-financial",
|
|
94
|
+
LEO: "leo-token",
|
|
95
|
+
HBAR: "hedera-hashgraph",
|
|
96
|
+
PAXG: "pax-gold",
|
|
97
|
+
XMR: "monero",
|
|
98
|
+
ONDO: "ondo-finance",
|
|
99
|
+
};
|
|
100
|
+
async function fetchSpotPrices(tickers) {
|
|
101
|
+
const ids = tickers.map((t) => TICKER_TO_COINGECKO[t.toUpperCase()]).filter(Boolean);
|
|
102
|
+
if (!ids.length)
|
|
103
|
+
return {};
|
|
104
|
+
const url = `https://api.coingecko.com/api/v3/simple/price?ids=${ids.join(",")}&vs_currencies=usd`;
|
|
105
|
+
const res = await fetch(url);
|
|
106
|
+
const data = await res.json();
|
|
107
|
+
const result = {};
|
|
108
|
+
for (const [ticker, cgId] of Object.entries(TICKER_TO_COINGECKO)) {
|
|
109
|
+
if (data[cgId]?.usd != null)
|
|
110
|
+
result[ticker] = data[cgId].usd;
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/* ── Factory ── */
|
|
115
|
+
export function createLimitlessActionProvider(apiKey, privateKey) {
|
|
116
|
+
const clients = createLimitlessClients(apiKey, privateKey);
|
|
117
|
+
return customActionProvider([
|
|
118
|
+
/* ───────── 1. Scan Markets ───────── */
|
|
119
|
+
{
|
|
120
|
+
name: "limitless_get_daily_markets",
|
|
121
|
+
description: "Scan daily crypto prediction markets on Limitless for mispricing opportunities. " +
|
|
122
|
+
"Returns ticker, spot-vs-strike % diff, buy YES/NO prices with available shares, and time remaining. " +
|
|
123
|
+
"Positive pctDiff = spot above strike (favors YES), negative = below (favors NO).",
|
|
124
|
+
schema: GetDailyMarketsSchema,
|
|
125
|
+
invoke: async () => {
|
|
126
|
+
try {
|
|
127
|
+
const resp = await clients.httpClient.get(`/market-pages/${CRYPTO_PAGE_ID}/markets`, { params: { duration: "daily", page: 1, limit: 25, sort: "deadline" } });
|
|
128
|
+
const now = Date.now();
|
|
129
|
+
const active = resp.data.filter((m) => !m.expired && (m.expirationTimestamp ?? 0) > now);
|
|
130
|
+
const tickers = [
|
|
131
|
+
...new Set(active
|
|
132
|
+
.map((m) => m.priceOracleMetadata?.ticker)
|
|
133
|
+
.filter(Boolean)),
|
|
134
|
+
];
|
|
135
|
+
const spotPrices = await fetchSpotPrices(tickers);
|
|
136
|
+
const markets = await Promise.all(active.map(async (m) => {
|
|
137
|
+
const mAny = m;
|
|
138
|
+
const ticker = mAny.priceOracleMetadata?.ticker ?? null;
|
|
139
|
+
let buyYes = null;
|
|
140
|
+
let buyNo = null;
|
|
141
|
+
try {
|
|
142
|
+
if (m.slug) {
|
|
143
|
+
const ob = await clients.marketFetcher.getOrderBook(m.slug);
|
|
144
|
+
if (ob.asks?.length) {
|
|
145
|
+
buyYes = { price: ob.asks[0].price, shares: fmtShares(ob.asks[0].size) };
|
|
146
|
+
}
|
|
147
|
+
if (ob.bids?.length) {
|
|
148
|
+
buyNo = {
|
|
149
|
+
price: +(1 - ob.bids[0].price).toFixed(4),
|
|
150
|
+
shares: fmtShares(ob.bids[0].size),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
/* no orderbook */
|
|
157
|
+
}
|
|
158
|
+
const spot = ticker ? (spotPrices[ticker] ?? null) : null;
|
|
159
|
+
const strikeMatch = m.title?.match(/above \$([0-9.,]+)/i);
|
|
160
|
+
const strike = strikeMatch ? parseFloat(strikeMatch[1].replace(/,/g, "")) : null;
|
|
161
|
+
const pctDiff = spot != null && strike != null
|
|
162
|
+
? +(((spot - strike) / strike) * 100).toFixed(2)
|
|
163
|
+
: null;
|
|
164
|
+
return {
|
|
165
|
+
slug: m.slug,
|
|
166
|
+
title: m.title,
|
|
167
|
+
ticker,
|
|
168
|
+
pctDiff,
|
|
169
|
+
timeRemaining: timeRemaining(m.expirationTimestamp),
|
|
170
|
+
buyYes,
|
|
171
|
+
buyNo,
|
|
172
|
+
};
|
|
173
|
+
}));
|
|
174
|
+
return JSON.stringify({ count: markets.length, markets }, null, 2);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
return `Error fetching markets: ${err instanceof Error ? err.message : String(err)}`;
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
/* ───────── 2. Buy (FOK) ───────── */
|
|
182
|
+
{
|
|
183
|
+
name: "limitless_buy_market_order",
|
|
184
|
+
description: "Buy YES or NO shares on a Limitless market. Executes immediately (Fill-or-Kill). " +
|
|
185
|
+
"Returns orderId, USDC spent, shares received. Call check_order_status right after.",
|
|
186
|
+
schema: BuyMarketOrderSchema,
|
|
187
|
+
invoke: async (walletProvider, args) => {
|
|
188
|
+
try {
|
|
189
|
+
const market = await clients.marketFetcher.getMarket(args.marketSlug);
|
|
190
|
+
if (!market.tokens)
|
|
191
|
+
return `Error: Market ${args.marketSlug} has no CLOB tokens (AMM-only).`;
|
|
192
|
+
if (!market.venue?.exchange)
|
|
193
|
+
return `Error: Market ${args.marketSlug} has no venue exchange.`;
|
|
194
|
+
const tokenId = args.side === "YES" ? market.tokens.yes : market.tokens.no;
|
|
195
|
+
await approveERC20(walletProvider, USDC_ADDRESS, market.venue.exchange, 2n ** 256n - 1n);
|
|
196
|
+
const res = await clients.orderClient.createOrder({
|
|
197
|
+
tokenId,
|
|
198
|
+
side: Side.BUY,
|
|
199
|
+
makerAmount: parseFloat(args.amountUsdc),
|
|
200
|
+
orderType: OrderType.FOK,
|
|
201
|
+
marketSlug: args.marketSlug,
|
|
202
|
+
});
|
|
203
|
+
return JSON.stringify({
|
|
204
|
+
status: "filled",
|
|
205
|
+
orderId: res.order.id,
|
|
206
|
+
side: args.side,
|
|
207
|
+
usdcSpent: fmtShares(res.order.makerAmount),
|
|
208
|
+
sharesReceived: fmtShares(res.order.takerAmount),
|
|
209
|
+
matches: res.makerMatches?.length ?? 0,
|
|
210
|
+
market: args.marketSlug,
|
|
211
|
+
}, null, 2);
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
/* ───────── 3. Check Order Status ───────── */
|
|
219
|
+
{
|
|
220
|
+
name: "limitless_check_order_status",
|
|
221
|
+
description: "Check if an order was filled, partially filled, or failed. Call right after placing any order.",
|
|
222
|
+
schema: CheckOrderStatusSchema,
|
|
223
|
+
invoke: async (_walletProvider, args) => {
|
|
224
|
+
try {
|
|
225
|
+
const result = await clients.httpClient.post("/orders/status/batch", {
|
|
226
|
+
items: [{ orderId: args.orderId }],
|
|
227
|
+
});
|
|
228
|
+
return JSON.stringify(result, null, 2);
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
/* ───────── 4. Limit Sell (GTC) ───────── */
|
|
236
|
+
{
|
|
237
|
+
name: "limitless_place_limit_sell",
|
|
238
|
+
description: "Place a limit sell order (GTC) for shares you hold. Use after buying to set a take-profit price. " +
|
|
239
|
+
"Order stays open until filled or market expires. Returns orderId.",
|
|
240
|
+
schema: PlaceLimitSellSchema,
|
|
241
|
+
invoke: async (walletProvider, args) => {
|
|
242
|
+
try {
|
|
243
|
+
const market = await clients.marketFetcher.getMarket(args.marketSlug);
|
|
244
|
+
if (!market.tokens)
|
|
245
|
+
return `Error: Market ${args.marketSlug} has no CLOB tokens.`;
|
|
246
|
+
if (!market.venue?.exchange)
|
|
247
|
+
return `Error: Market ${args.marketSlug} has no venue exchange.`;
|
|
248
|
+
const tokenId = args.side === "YES" ? market.tokens.yes : market.tokens.no;
|
|
249
|
+
await approveERC1155(walletProvider, CTF_ADDRESS, market.venue.exchange);
|
|
250
|
+
if (market.negRiskRequestId && market.venue.adapter) {
|
|
251
|
+
await approveERC1155(walletProvider, CTF_ADDRESS, market.venue.adapter);
|
|
252
|
+
}
|
|
253
|
+
const res = await clients.orderClient.createOrder({
|
|
254
|
+
tokenId,
|
|
255
|
+
side: Side.SELL,
|
|
256
|
+
price: args.price,
|
|
257
|
+
size: args.shares,
|
|
258
|
+
orderType: OrderType.GTC,
|
|
259
|
+
marketSlug: args.marketSlug,
|
|
260
|
+
});
|
|
261
|
+
return JSON.stringify({
|
|
262
|
+
status: "order_placed",
|
|
263
|
+
orderId: res.order.id,
|
|
264
|
+
side: args.side,
|
|
265
|
+
price: res.order.price,
|
|
266
|
+
shares: fmtShares(res.order.makerAmount),
|
|
267
|
+
usdcExpected: fmtShares(res.order.takerAmount),
|
|
268
|
+
market: args.marketSlug,
|
|
269
|
+
}, null, 2);
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
/* ───────── 5. Get Positions ───────── */
|
|
277
|
+
{
|
|
278
|
+
name: "limitless_get_positions",
|
|
279
|
+
description: "Get all open Limitless positions with share balances, unrealized P&L, and latest prices. " +
|
|
280
|
+
"Use to monitor positions and decide whether to sell.",
|
|
281
|
+
schema: GetPositionsSchema,
|
|
282
|
+
invoke: async () => {
|
|
283
|
+
try {
|
|
284
|
+
const pos = await clients.portfolioFetcher.getPositions();
|
|
285
|
+
const clob = pos.clob.map((p) => ({
|
|
286
|
+
market: p.market.title,
|
|
287
|
+
slug: p.market.slug,
|
|
288
|
+
closed: p.market.closed,
|
|
289
|
+
yesShares: fmtShares(p.tokensBalance.yes),
|
|
290
|
+
noShares: fmtShares(p.tokensBalance.no),
|
|
291
|
+
yesUnrealizedPnl: fmtShares(p.positions.yes.unrealizedPnl),
|
|
292
|
+
noUnrealizedPnl: fmtShares(p.positions.no.unrealizedPnl),
|
|
293
|
+
latestYesPrice: p.latestTrade?.latestYesPrice ?? null,
|
|
294
|
+
latestNoPrice: p.latestTrade?.latestNoPrice ?? null,
|
|
295
|
+
}));
|
|
296
|
+
const amm = pos.amm.map((p) => ({
|
|
297
|
+
market: p.market.title,
|
|
298
|
+
slug: p.market.slug,
|
|
299
|
+
closed: p.market.closed,
|
|
300
|
+
side: p.outcomeIndex === 0 ? "YES" : "NO",
|
|
301
|
+
shares: fmtShares(p.outcomeTokenAmount),
|
|
302
|
+
unrealizedPnl: fmtShares(p.unrealizedPnl),
|
|
303
|
+
avgPrice: p.averageFillPrice,
|
|
304
|
+
}));
|
|
305
|
+
return JSON.stringify({ clob, amm, totalClob: clob.length, totalAmm: amm.length }, null, 2);
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
return `Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
]);
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=limitlessActionProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitlessActionProvider.js","sourceRoot":"","sources":["../../../src/actions/limitless/limitlessActionProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const GetDailyMarketsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
3
|
+
export declare const BuyMarketOrderSchema: z.ZodObject<{
|
|
4
|
+
marketSlug: z.ZodString;
|
|
5
|
+
side: z.ZodEnum<["YES", "NO"]>;
|
|
6
|
+
amountUsdc: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
marketSlug: string;
|
|
9
|
+
side: "YES" | "NO";
|
|
10
|
+
amountUsdc: string;
|
|
11
|
+
}, {
|
|
12
|
+
marketSlug: string;
|
|
13
|
+
side: "YES" | "NO";
|
|
14
|
+
amountUsdc: string;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const CheckOrderStatusSchema: z.ZodObject<{
|
|
17
|
+
orderId: z.ZodString;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
orderId: string;
|
|
20
|
+
}, {
|
|
21
|
+
orderId: string;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const PlaceLimitSellSchema: z.ZodObject<{
|
|
24
|
+
marketSlug: z.ZodString;
|
|
25
|
+
side: z.ZodEnum<["YES", "NO"]>;
|
|
26
|
+
shares: z.ZodNumber;
|
|
27
|
+
price: z.ZodNumber;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
price: number;
|
|
30
|
+
marketSlug: string;
|
|
31
|
+
side: "YES" | "NO";
|
|
32
|
+
shares: number;
|
|
33
|
+
}, {
|
|
34
|
+
price: number;
|
|
35
|
+
marketSlug: string;
|
|
36
|
+
side: "YES" | "NO";
|
|
37
|
+
shares: number;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const GetPositionsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const GetDailyMarketsSchema = z
|
|
3
|
+
.object({})
|
|
4
|
+
.describe("Scan daily crypto prediction markets on Limitless for mispricing opportunities. " +
|
|
5
|
+
"Returns each market's ticker, spot-vs-strike % difference, best buy YES/NO price with available shares, and time remaining. " +
|
|
6
|
+
"Positive pctDiff = spot above strike (favors YES), negative = below (favors NO). " +
|
|
7
|
+
"Compare pctDiff against buy prices to find edges.");
|
|
8
|
+
export const BuyMarketOrderSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
marketSlug: z
|
|
11
|
+
.string()
|
|
12
|
+
.describe("Market slug from get_daily_markets, e.g. 'dollareth-above-dollar196952-on-feb-20-0600-utc-1771480804344'"),
|
|
13
|
+
side: z
|
|
14
|
+
.enum(["YES", "NO"])
|
|
15
|
+
.describe("YES if you think price will be above strike, NO if below"),
|
|
16
|
+
amountUsdc: z
|
|
17
|
+
.string()
|
|
18
|
+
.regex(/^\d+(\.\d+)?$/, "Must be a valid number")
|
|
19
|
+
.describe("USDC to spend (e.g. '5'). Will execute immediately against the orderbook (Fill-or-Kill)."),
|
|
20
|
+
})
|
|
21
|
+
.describe("Buy YES or NO shares on a Limitless market. Executes immediately as a Fill-or-Kill order. " +
|
|
22
|
+
"Returns orderId, USDC spent, and shares received. Call check_order_status right after to confirm.");
|
|
23
|
+
export const CheckOrderStatusSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
orderId: z.string().describe("Order ID returned by buy_market_order or place_limit_sell"),
|
|
26
|
+
})
|
|
27
|
+
.describe("Check if an order was filled, partially filled, or failed. Call immediately after placing any order.");
|
|
28
|
+
export const PlaceLimitSellSchema = z
|
|
29
|
+
.object({
|
|
30
|
+
marketSlug: z.string().describe("Market slug of the position to sell"),
|
|
31
|
+
side: z
|
|
32
|
+
.enum(["YES", "NO"])
|
|
33
|
+
.describe("Which outcome tokens to sell — must match the side you bought"),
|
|
34
|
+
shares: z
|
|
35
|
+
.number()
|
|
36
|
+
.positive()
|
|
37
|
+
.describe("Number of shares to sell (from buy order's sharesReceived)"),
|
|
38
|
+
price: z
|
|
39
|
+
.number()
|
|
40
|
+
.min(0.001)
|
|
41
|
+
.max(0.999)
|
|
42
|
+
.describe("Limit price per share (0.001-0.999). Order stays open until filled or market expires."),
|
|
43
|
+
})
|
|
44
|
+
.describe("Place a limit sell order (GTC) for shares you hold. Use after buying to lock in profit at a target price. " +
|
|
45
|
+
"Returns orderId and order details.");
|
|
46
|
+
export const GetPositionsSchema = z
|
|
47
|
+
.object({})
|
|
48
|
+
.describe("Get all open Limitless positions with share balances, unrealized P&L, and latest prices. " +
|
|
49
|
+
"Use to monitor existing positions and decide whether to sell.");
|
|
50
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/actions/limitless/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC,EAAE,CAAC;KACV,QAAQ,CACP,kFAAkF;IAChF,8HAA8H;IAC9H,mFAAmF;IACnF,mDAAmD,CACtD,CAAC;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,CACP,0GAA0G,CAC3G;IACH,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACnB,QAAQ,CAAC,0DAA0D,CAAC;IACvE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,KAAK,CAAC,eAAe,EAAE,wBAAwB,CAAC;SAChD,QAAQ,CACP,0FAA0F,CAC3F;CACJ,CAAC;KACD,QAAQ,CACP,4FAA4F;IAC1F,mGAAmG,CACtG,CAAC;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAC1F,CAAC;KACD,QAAQ,CACP,sGAAsG,CACvG,CAAC;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACtE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACnB,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,KAAK,CAAC;SACV,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,CACP,uFAAuF,CACxF;CACJ,CAAC;KACD,QAAQ,CACP,4GAA4G;IAC1G,oCAAoC,CACvC,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC,EAAE,CAAC;KACV,QAAQ,CACP,2FAA2F;IACzF,+DAA+D,CAClE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { actionsToTools } from "./tools.js";
|
|
|
6
6
|
export { summarizePhase } from "./summarizer.js";
|
|
7
7
|
export { createAlephActionProvider } from "./actions/aleph.js";
|
|
8
8
|
export { compoundFixedProvider } from "./actions/compound/index.js";
|
|
9
|
+
export { createLimitlessActionProvider } from "./actions/limitless/index.js";
|
|
9
10
|
export { createAgentWallet, getBalances } from "./wallet.js";
|
|
10
11
|
export type { WalletInfo } from "./wallet.js";
|
|
11
12
|
export type { ToolExecution, ActivityType, AgentActivity } from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -5,5 +5,6 @@ export { actionsToTools } from "./tools.js";
|
|
|
5
5
|
export { summarizePhase } from "./summarizer.js";
|
|
6
6
|
export { createAlephActionProvider } from "./actions/aleph.js";
|
|
7
7
|
export { compoundFixedProvider } from "./actions/compound/index.js";
|
|
8
|
+
export { createLimitlessActionProvider } from "./actions/limitless/index.js";
|
|
8
9
|
export { createAgentWallet, getBalances } from "./wallet.js";
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "basileus-agentkit-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Coinbase AgentKit plugin for Basileus — build autonomous onchain agents with Aleph Cloud, x402 payment tracking, and predefined action providers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"homepage": "https://github.com/RezaRahemtola/ETHDenver-2026/tree/main/basileus-agentkit-plugin#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/RezaRahemtola/ETHDenver-2026",
|
|
11
|
+
"url": "git+https://github.com/RezaRahemtola/ETHDenver-2026.git",
|
|
12
12
|
"directory": "basileus-agentkit-plugin"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
@@ -67,6 +67,10 @@
|
|
|
67
67
|
"types": "./dist/actions/compound/index.d.ts",
|
|
68
68
|
"import": "./dist/actions/compound/index.js"
|
|
69
69
|
},
|
|
70
|
+
"./actions/limitless": {
|
|
71
|
+
"types": "./dist/actions/limitless/index.d.ts",
|
|
72
|
+
"import": "./dist/actions/limitless/index.js"
|
|
73
|
+
},
|
|
70
74
|
"./wallet": {
|
|
71
75
|
"types": "./dist/wallet.d.ts",
|
|
72
76
|
"import": "./dist/wallet.js"
|
|
@@ -88,11 +92,18 @@
|
|
|
88
92
|
"@aleph-sdk/client": "^1.4.5",
|
|
89
93
|
"@aleph-sdk/ethereum": "^1.5.0",
|
|
90
94
|
"@aleph-sdk/message": "^1.6.3",
|
|
95
|
+
"@limitless-exchange/sdk": "^1.0.2",
|
|
91
96
|
"decimal.js": "^10.0.0",
|
|
97
|
+
"ethers": "^6.16.0",
|
|
92
98
|
"ox": "^0.12.4",
|
|
93
99
|
"zod": "^3.0.0",
|
|
94
100
|
"zod-to-json-schema": "^3.25.0"
|
|
95
101
|
},
|
|
102
|
+
"overrides": {
|
|
103
|
+
"@aleph-sdk/ethereum": {
|
|
104
|
+
"ethers": "^6.16.0"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
96
107
|
"devDependencies": {
|
|
97
108
|
"@blockrun/llm": "^0.3.0",
|
|
98
109
|
"@coinbase/agentkit": "^0.10.4",
|