@agenticocean/defi-agent 0.2.0 → 0.3.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/types.d.ts
CHANGED
|
@@ -81,7 +81,14 @@ export interface PortfolioSnapshot {
|
|
|
81
81
|
export interface AgentAIConfig {
|
|
82
82
|
stellarRpcUrl: string;
|
|
83
83
|
networkPassphrase: string;
|
|
84
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Single AI API key — provider is auto-detected from the key prefix:
|
|
86
|
+
* sk-ant-* → Anthropic Claude
|
|
87
|
+
* AIza* → Google Gemini
|
|
88
|
+
* gsk_* → Groq (Llama)
|
|
89
|
+
* xai-* → xAI Grok
|
|
90
|
+
*/
|
|
91
|
+
aiApiKey?: string;
|
|
85
92
|
soroswapApiKey?: string;
|
|
86
93
|
usdcAddress?: string;
|
|
87
94
|
blendPoolId?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAID,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,SAAS,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AAID,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,14 @@ import type { AgentAIConfig, StrategyResponse } from "./types.js";
|
|
|
5
5
|
/**
|
|
6
6
|
* AI-powered yield optimization engine.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* 5. Optionally trigger rebalancer with new targets
|
|
8
|
+
* Set a single `aiApiKey` in config — the provider is auto-detected:
|
|
9
|
+
* sk-ant-* → Anthropic Claude
|
|
10
|
+
* AIza* → Google Gemini
|
|
11
|
+
* gsk_* → Groq / Llama
|
|
12
|
+
* xai-* → xAI Grok
|
|
14
13
|
*/
|
|
15
14
|
export declare class YieldOptimizer {
|
|
16
|
-
private
|
|
15
|
+
private provider;
|
|
17
16
|
private blendClient;
|
|
18
17
|
private soroswapClient;
|
|
19
18
|
private rebalancer;
|
|
@@ -21,12 +20,11 @@ export declare class YieldOptimizer {
|
|
|
21
20
|
private log;
|
|
22
21
|
private config;
|
|
23
22
|
constructor(config: AgentAIConfig, rebalancer?: Rebalancer);
|
|
24
|
-
/** Get the internal BlendClient instance. */
|
|
25
23
|
getBlendClient(): BlendClient;
|
|
26
|
-
/** Get the internal SoroswapClient instance. */
|
|
27
24
|
getSoroswapClient(): SoroswapClient;
|
|
28
25
|
optimize(query: string, riskTolerance?: string, amount?: number): Promise<StrategyResponse>;
|
|
29
|
-
private
|
|
26
|
+
private callProvider;
|
|
27
|
+
private parseJson;
|
|
30
28
|
private formatPoolContext;
|
|
31
29
|
private fallbackStrategy;
|
|
32
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yield-optimizer.d.ts","sourceRoot":"","sources":["../src/yield-optimizer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"yield-optimizer.d.ts","sourceRoot":"","sources":["../src/yield-optimizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EACV,aAAa,EAEb,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAyBpB;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,UAAU;IAa1D,cAAc,IAAI,WAAW;IAC7B,iBAAiB,IAAI,cAAc;IAE7B,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,MAAmB,EAClC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;YAsDd,YAAY;IAoC1B,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,gBAAgB;CAoCzB"}
|
package/dist/yield-optimizer.js
CHANGED
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
import Anthropic from "@anthropic-ai/sdk";
|
|
2
|
+
import { GoogleGenerativeAI } from "@google/generative-ai";
|
|
3
|
+
import OpenAI from "openai";
|
|
2
4
|
import { BlendClient } from "./blend-client.js";
|
|
3
5
|
import { SoroswapClient } from "./soroswap-client.js";
|
|
4
6
|
import { SYSTEM_PROMPT, buildUserPrompt } from "./prompts.js";
|
|
7
|
+
function detectProvider(apiKey) {
|
|
8
|
+
if (apiKey.startsWith("sk-ant-")) {
|
|
9
|
+
return { type: "anthropic", client: new Anthropic({ apiKey }) };
|
|
10
|
+
}
|
|
11
|
+
if (apiKey.startsWith("AIza")) {
|
|
12
|
+
return { type: "gemini", client: new GoogleGenerativeAI(apiKey) };
|
|
13
|
+
}
|
|
14
|
+
if (apiKey.startsWith("gsk_")) {
|
|
15
|
+
return { type: "groq", client: new OpenAI({ apiKey, baseURL: "https://api.groq.com/openai/v1" }) };
|
|
16
|
+
}
|
|
17
|
+
if (apiKey.startsWith("xai-")) {
|
|
18
|
+
return { type: "xai", client: new OpenAI({ apiKey, baseURL: "https://api.x.ai/v1" }) };
|
|
19
|
+
}
|
|
20
|
+
// Unknown prefix — try as Anthropic
|
|
21
|
+
return { type: "anthropic", client: new Anthropic({ apiKey }) };
|
|
22
|
+
}
|
|
5
23
|
/**
|
|
6
24
|
* AI-powered yield optimization engine.
|
|
7
25
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* 5. Optionally trigger rebalancer with new targets
|
|
26
|
+
* Set a single `aiApiKey` in config — the provider is auto-detected:
|
|
27
|
+
* sk-ant-* → Anthropic Claude
|
|
28
|
+
* AIza* → Google Gemini
|
|
29
|
+
* gsk_* → Groq / Llama
|
|
30
|
+
* xai-* → xAI Grok
|
|
14
31
|
*/
|
|
15
32
|
export class YieldOptimizer {
|
|
16
|
-
|
|
33
|
+
provider;
|
|
17
34
|
blendClient;
|
|
18
35
|
soroswapClient;
|
|
19
36
|
rebalancer;
|
|
@@ -22,23 +39,18 @@ export class YieldOptimizer {
|
|
|
22
39
|
config;
|
|
23
40
|
constructor(config, rebalancer) {
|
|
24
41
|
this.config = config;
|
|
25
|
-
this.
|
|
26
|
-
? new Anthropic({ apiKey: config.anthropicApiKey })
|
|
27
|
-
: null;
|
|
42
|
+
this.provider = config.aiApiKey ? detectProvider(config.aiApiKey) : null;
|
|
28
43
|
this.blendClient = new BlendClient(config);
|
|
29
44
|
this.soroswapClient = new SoroswapClient(config);
|
|
30
45
|
this.rebalancer = rebalancer ?? null;
|
|
31
46
|
this.usdcAddress = config.usdcAddress || "";
|
|
32
47
|
this.log = config.logger ?? console;
|
|
48
|
+
if (this.provider) {
|
|
49
|
+
this.log.info(`AI provider: ${this.provider.type}`);
|
|
50
|
+
}
|
|
33
51
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return this.blendClient;
|
|
37
|
-
}
|
|
38
|
-
/** Get the internal SoroswapClient instance. */
|
|
39
|
-
getSoroswapClient() {
|
|
40
|
-
return this.soroswapClient;
|
|
41
|
-
}
|
|
52
|
+
getBlendClient() { return this.blendClient; }
|
|
53
|
+
getSoroswapClient() { return this.soroswapClient; }
|
|
42
54
|
async optimize(query, riskTolerance = "moderate", amount) {
|
|
43
55
|
const [blendData, soroswapPools] = await Promise.all([
|
|
44
56
|
this.blendClient.loadPool(),
|
|
@@ -46,12 +58,13 @@ export class YieldOptimizer {
|
|
|
46
58
|
]);
|
|
47
59
|
const poolContext = this.formatPoolContext(blendData, soroswapPools);
|
|
48
60
|
let strategy;
|
|
49
|
-
if (this.
|
|
61
|
+
if (this.provider) {
|
|
50
62
|
try {
|
|
51
|
-
strategy = await this.
|
|
63
|
+
strategy = await this.callProvider(this.provider, query, poolContext, riskTolerance, amount);
|
|
64
|
+
this.log.info(`Strategy generated via ${this.provider.type}`);
|
|
52
65
|
}
|
|
53
66
|
catch (err) {
|
|
54
|
-
this.log.warn(
|
|
67
|
+
this.log.warn(`${this.provider.type} failed, using hardcoded fallback`, { error: String(err).slice(0, 150) });
|
|
55
68
|
strategy = this.fallbackStrategy(riskTolerance, amount);
|
|
56
69
|
}
|
|
57
70
|
}
|
|
@@ -71,12 +84,7 @@ export class YieldOptimizer {
|
|
|
71
84
|
this.rebalancer.setTargetAllocation(strategy.strategies.map(s => {
|
|
72
85
|
const protocol = s.protocol.toLowerCase().includes("blend") ? "blend" : "soroswap";
|
|
73
86
|
const pos = snapshot?.positions.find(p => p.protocol === protocol);
|
|
74
|
-
return {
|
|
75
|
-
protocol,
|
|
76
|
-
asset: this.usdcAddress,
|
|
77
|
-
targetPct: s.allocation_pct,
|
|
78
|
-
currentPct: pos?.pct ?? 0,
|
|
79
|
-
};
|
|
87
|
+
return { protocol, asset: this.usdcAddress, targetPct: s.allocation_pct, currentPct: pos?.pct ?? 0 };
|
|
80
88
|
}));
|
|
81
89
|
}
|
|
82
90
|
return {
|
|
@@ -94,24 +102,41 @@ export class YieldOptimizer {
|
|
|
94
102
|
disclaimer: "APY estimates based on current rates. Not financial advice. DYOR.",
|
|
95
103
|
};
|
|
96
104
|
}
|
|
97
|
-
async
|
|
105
|
+
async callProvider(provider, query, poolContext, risk, amount) {
|
|
98
106
|
const userPrompt = buildUserPrompt(query, poolContext, risk, amount);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const end = text.lastIndexOf("}") + 1;
|
|
109
|
-
return JSON.parse(text.slice(start, end));
|
|
107
|
+
if (provider.type === "anthropic") {
|
|
108
|
+
const res = await provider.client.messages.create({
|
|
109
|
+
model: "claude-sonnet-4-6",
|
|
110
|
+
max_tokens: 1500,
|
|
111
|
+
system: SYSTEM_PROMPT,
|
|
112
|
+
messages: [{ role: "user", content: userPrompt }],
|
|
113
|
+
});
|
|
114
|
+
const text = res.content[0].type === "text" ? res.content[0].text : "";
|
|
115
|
+
return this.parseJson(text);
|
|
110
116
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
117
|
+
if (provider.type === "gemini") {
|
|
118
|
+
const model = provider.client.getGenerativeModel({ model: "gemini-2.0-flash-lite" });
|
|
119
|
+
const res = await model.generateContent(`${SYSTEM_PROMPT}\n\n${userPrompt}`);
|
|
120
|
+
return this.parseJson(res.response.text());
|
|
114
121
|
}
|
|
122
|
+
// groq or xai — both OpenAI-compatible
|
|
123
|
+
const model = provider.type === "xai" ? "grok-3-mini" : "llama-3.3-70b-versatile";
|
|
124
|
+
const res = await provider.client.chat.completions.create({
|
|
125
|
+
model,
|
|
126
|
+
max_tokens: 1500,
|
|
127
|
+
messages: [
|
|
128
|
+
{ role: "system", content: SYSTEM_PROMPT },
|
|
129
|
+
{ role: "user", content: userPrompt },
|
|
130
|
+
],
|
|
131
|
+
});
|
|
132
|
+
return this.parseJson(res.choices[0]?.message?.content ?? "");
|
|
133
|
+
}
|
|
134
|
+
parseJson(text) {
|
|
135
|
+
const start = text.indexOf("{");
|
|
136
|
+
const end = text.lastIndexOf("}") + 1;
|
|
137
|
+
if (start === -1 || end === 0)
|
|
138
|
+
throw new Error("No JSON in response");
|
|
139
|
+
return JSON.parse(text.slice(start, end));
|
|
115
140
|
}
|
|
116
141
|
formatPoolContext(blend, soroswap) {
|
|
117
142
|
const lines = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yield-optimizer.js","sourceRoot":"","sources":["../src/yield-optimizer.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"yield-optimizer.js","sourceRoot":"","sources":["../src/yield-optimizer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agenticocean/defi-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "AI-powered DeFi agent toolkit for Stellar — yield optimization, Blend, Soroswap",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@anthropic-ai/sdk": "^0.40.0",
|
|
24
|
+
"@google/generative-ai": "^0.21.0",
|
|
25
|
+
"openai": "^4.77.0",
|
|
24
26
|
"@stellar/stellar-sdk": "^13.1.0"
|
|
25
27
|
},
|
|
26
28
|
"peerDependencies": {
|