@clawnch/clawtomaton 0.3.0 → 0.4.1
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 +2 -2
- package/dist/agent/index.d.ts +5 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +108 -10
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +158 -2
- package/dist/agent/prompt.js.map +1 -1
- package/dist/heartbeat/index.d.ts +18 -0
- package/dist/heartbeat/index.d.ts.map +1 -1
- package/dist/heartbeat/index.js +153 -2
- package/dist/heartbeat/index.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/market/index.d.ts +8 -1
- package/dist/market/index.d.ts.map +1 -1
- package/dist/market/index.js +28 -2
- package/dist/market/index.js.map +1 -1
- package/dist/skills/analyze-market.d.ts +17 -0
- package/dist/skills/analyze-market.d.ts.map +1 -0
- package/dist/skills/analyze-market.js +156 -0
- package/dist/skills/analyze-market.js.map +1 -0
- package/dist/skills/check-balance.d.ts +2 -2
- package/dist/skills/check-balance.d.ts.map +1 -1
- package/dist/skills/check-balance.js +43 -8
- package/dist/skills/check-balance.js.map +1 -1
- package/dist/skills/check-price.d.ts +11 -0
- package/dist/skills/check-price.d.ts.map +1 -0
- package/dist/skills/check-price.js +83 -0
- package/dist/skills/check-price.js.map +1 -0
- package/dist/skills/claim-vault.d.ts +15 -0
- package/dist/skills/claim-vault.d.ts.map +1 -0
- package/dist/skills/claim-vault.js +96 -0
- package/dist/skills/claim-vault.js.map +1 -0
- package/dist/skills/deploy.d.ts.map +1 -1
- package/dist/skills/deploy.js +10 -1
- package/dist/skills/deploy.js.map +1 -1
- package/dist/skills/index.d.ts +8 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +29 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/manage-orders.d.ts +26 -0
- package/dist/skills/manage-orders.d.ts.map +1 -0
- package/dist/skills/manage-orders.js +470 -0
- package/dist/skills/manage-orders.js.map +1 -0
- package/dist/skills/portfolio.d.ts +19 -0
- package/dist/skills/portfolio.d.ts.map +1 -0
- package/dist/skills/portfolio.js +189 -0
- package/dist/skills/portfolio.js.map +1 -0
- package/dist/skills/watch-activity.d.ts +12 -0
- package/dist/skills/watch-activity.d.ts.map +1 -0
- package/dist/skills/watch-activity.js +130 -0
- package/dist/skills/watch-activity.js.map +1 -0
- package/dist/skills/xmtp.d.ts +24 -0
- package/dist/skills/xmtp.d.ts.map +1 -0
- package/dist/skills/xmtp.js +282 -0
- package/dist/skills/xmtp.js.map +1 -0
- package/dist/state/index.d.ts +19 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +101 -0
- package/dist/state/index.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/xmtp/client.d.ts +127 -0
- package/dist/xmtp/client.d.ts.map +1 -0
- package/dist/xmtp/client.js +454 -0
- package/dist/xmtp/client.js.map +1 -0
- package/dist/xmtp/index.d.ts +9 -0
- package/dist/xmtp/index.d.ts.map +1 -0
- package/dist/xmtp/index.js +8 -0
- package/dist/xmtp/index.js.map +1 -0
- package/dist/xmtp/types.d.ts +80 -0
- package/dist/xmtp/types.d.ts.map +1 -0
- package/dist/xmtp/types.js +5 -0
- package/dist/xmtp/types.js.map +1 -0
- package/package.json +3 -2
package/dist/heartbeat/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { buildClients } from '../identity/index.js';
|
|
|
20
20
|
import { BunkerClient } from '../bunker/client.js';
|
|
21
21
|
import { checkThreat, handleThreatEscalation, handleCriticalMigration, formatThreat } from '../bunker/threat-monitor.js';
|
|
22
22
|
import { BUNKER_EXPIRY_WARN_HOURS } from '../constants.js';
|
|
23
|
+
import { ClawnchOrders, ClawnchTrader } from '@clawnch/clawncher-sdk';
|
|
23
24
|
/** Minimum time between agent runs even if conditions are met (5 min) */
|
|
24
25
|
const MIN_RUN_INTERVAL_MS = 5 * 60 * 1000;
|
|
25
26
|
/** How often to do a full self-reflection run regardless of conditions (24h) */
|
|
@@ -83,9 +84,13 @@ export class Heartbeat {
|
|
|
83
84
|
const { wake, reason } = await this.market.shouldWake(tokenAddress);
|
|
84
85
|
// Check bunker conditions (cheap API calls, gated behind config)
|
|
85
86
|
const bunkerWake = await this.checkBunkerConditions();
|
|
87
|
+
// Check conditional orders against current price (cheap — pure data check)
|
|
88
|
+
const orderWake = await this.checkOrderTriggers(tokenAddress);
|
|
89
|
+
// Check XMTP inbox for unread messages (cheap — just queue check)
|
|
90
|
+
const xmtpWake = this.checkXmtpInbox();
|
|
86
91
|
// Also check if it's time for periodic self-reflection
|
|
87
92
|
const reflectionDue = Date.now() - this.lastReflectionTime > REFLECTION_INTERVAL_MS;
|
|
88
|
-
if (!wake && !bunkerWake.wake && !reflectionDue) {
|
|
93
|
+
if (!wake && !bunkerWake.wake && !orderWake.wake && !xmtpWake.wake && !reflectionDue) {
|
|
89
94
|
// Nothing to do. Silence is golden.
|
|
90
95
|
return;
|
|
91
96
|
}
|
|
@@ -94,7 +99,52 @@ export class Heartbeat {
|
|
|
94
99
|
const conditions = this.market.evaluate(snap);
|
|
95
100
|
const snapshotText = formatSnapshot(snap);
|
|
96
101
|
let prompt;
|
|
97
|
-
if (
|
|
102
|
+
if (xmtpWake.wake) {
|
|
103
|
+
// XMTP messages — the agent needs to read and respond
|
|
104
|
+
console.log(`[heartbeat] Waking agent: ${xmtpWake.reason}`);
|
|
105
|
+
const promptParts = [
|
|
106
|
+
`[HEARTBEAT — XMTP MESSAGE RECEIVED]`,
|
|
107
|
+
`Trigger: ${xmtpWake.reason}`,
|
|
108
|
+
``,
|
|
109
|
+
`UNREAD MESSAGES:`,
|
|
110
|
+
...xmtpWake.messages.map((m) => {
|
|
111
|
+
const time = new Date(m.sentAt).toISOString();
|
|
112
|
+
const type = m.isDm ? 'DM' : 'Group';
|
|
113
|
+
return ` [${time}] [${type}] From: ${m.senderAddress}\n Conversation: ${m.conversationId}\n Message: ${m.content}`;
|
|
114
|
+
}),
|
|
115
|
+
``,
|
|
116
|
+
snapshotText,
|
|
117
|
+
``,
|
|
118
|
+
`You have received XMTP messages. Read them carefully and decide how to respond.`,
|
|
119
|
+
`Use the xmtp skill with action=reply to respond to conversations.`,
|
|
120
|
+
`Consider: Is this a user asking about your token? A trading request? A greeting?`,
|
|
121
|
+
`Respond authentically in your voice. Be helpful but concise.`,
|
|
122
|
+
];
|
|
123
|
+
prompt = promptParts.join('\n');
|
|
124
|
+
}
|
|
125
|
+
else if (orderWake.wake) {
|
|
126
|
+
// Order triggers take priority — the agent needs to execute swaps
|
|
127
|
+
console.log(`[heartbeat] Waking agent: ${orderWake.reason}`);
|
|
128
|
+
const promptParts = [
|
|
129
|
+
`[HEARTBEAT — ORDER TRIGGERED]`,
|
|
130
|
+
`Trigger: ${orderWake.reason}`,
|
|
131
|
+
``,
|
|
132
|
+
snapshotText,
|
|
133
|
+
``,
|
|
134
|
+
`Conditions:`,
|
|
135
|
+
conditions.summary,
|
|
136
|
+
``,
|
|
137
|
+
`TRIGGERED ORDERS:`,
|
|
138
|
+
...orderWake.triggeredOrders.map(o => ` ${o.id} [${o.type}]: ${o.description}\n Action: ${o.action.side} ${o.action.amountPct ? `${o.action.amountPct}%` : o.action.amountRaw ?? '?'} — Token: ${o.token}\n Slippage: ${o.action.slippageBps ?? 200}bps`),
|
|
139
|
+
``,
|
|
140
|
+
`ACTION REQUIRED: Execute each triggered order with the swap skill, then mark it done:`,
|
|
141
|
+
` manage_orders action=executed orderId=<id> executionResult=<txHash>`,
|
|
142
|
+
`If a swap fails, revert the order to pending:`,
|
|
143
|
+
` manage_orders action=check currentPrice=<price> (will re-trigger on next heartbeat)`,
|
|
144
|
+
];
|
|
145
|
+
prompt = promptParts.join('\n');
|
|
146
|
+
}
|
|
147
|
+
else if (wake || bunkerWake.wake) {
|
|
98
148
|
const triggerReason = wake ? reason : bunkerWake.reason;
|
|
99
149
|
console.log(`[heartbeat] Waking agent: ${triggerReason}`);
|
|
100
150
|
const promptParts = [
|
|
@@ -135,6 +185,13 @@ export class Heartbeat {
|
|
|
135
185
|
`Reflect on: What's working? What should change? Any strategic adjustments?`,
|
|
136
186
|
].join('\n');
|
|
137
187
|
}
|
|
188
|
+
// Record portfolio snapshot + update drawdown tracking (non-blocking)
|
|
189
|
+
try {
|
|
190
|
+
this.recordPortfolioSnapshot(snap);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
// Non-fatal
|
|
194
|
+
}
|
|
138
195
|
this.lastRunTime = Date.now();
|
|
139
196
|
await this.agent.run(prompt);
|
|
140
197
|
}
|
|
@@ -144,6 +201,100 @@ export class Heartbeat {
|
|
|
144
201
|
this.agent.getState().audit('heartbeat_error', msg);
|
|
145
202
|
}
|
|
146
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Record a portfolio snapshot and update drawdown tracking.
|
|
206
|
+
* Called on each heartbeat cycle that gets past the condition checks.
|
|
207
|
+
*/
|
|
208
|
+
recordPortfolioSnapshot(snap) {
|
|
209
|
+
const state = this.agent.getState();
|
|
210
|
+
const trader = new ClawnchTrader(state.asTraderStorage());
|
|
211
|
+
// Compute total portfolio value from token positions + ETH
|
|
212
|
+
const ethBalanceEth = Number(snap.ethBalance) / 1e18;
|
|
213
|
+
const tokenValueEth = snap.ownToken?.priceEth != null
|
|
214
|
+
? parseFloat(snap.ownToken.balanceFormatted) * snap.ownToken.priceEth
|
|
215
|
+
: 0;
|
|
216
|
+
const totalValueEth = tokenValueEth + ethBalanceEth;
|
|
217
|
+
// Record snapshot
|
|
218
|
+
const totalValueUsd = snap.ownToken?.priceUsd != null && snap.ownToken?.priceEth != null && snap.ownToken.priceEth > 0
|
|
219
|
+
? parseFloat(snap.ownToken.balanceFormatted) * snap.ownToken.priceUsd + ethBalanceEth * (snap.ownToken.priceUsd / snap.ownToken.priceEth)
|
|
220
|
+
: null;
|
|
221
|
+
trader.recordSnapshot(tokenValueEth, totalValueUsd, ethBalanceEth);
|
|
222
|
+
// Update drawdown tracking in risk config
|
|
223
|
+
const orders = new ClawnchOrders(state, state.asRiskStorage());
|
|
224
|
+
const { circuitBreakerTripped } = orders.updatePortfolioValue(totalValueEth);
|
|
225
|
+
if (circuitBreakerTripped) {
|
|
226
|
+
console.log(`[heartbeat] CIRCUIT BREAKER TRIPPED — max drawdown exceeded`);
|
|
227
|
+
state.audit('circuit_breaker', 'Drawdown circuit breaker tripped. All orders halted.');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Check conditional orders against the current on-chain price.
|
|
232
|
+
* If any orders trigger, return wake=true with the triggered orders.
|
|
233
|
+
*
|
|
234
|
+
* This is cheap: reads price from the already-available snapshot data,
|
|
235
|
+
* then does a pure in-memory comparison against stored orders.
|
|
236
|
+
*/
|
|
237
|
+
async checkOrderTriggers(tokenAddress) {
|
|
238
|
+
if (!tokenAddress) {
|
|
239
|
+
return { wake: false, reason: '' };
|
|
240
|
+
}
|
|
241
|
+
const state = this.agent.getState();
|
|
242
|
+
const pendingOrders = state.getOrders().filter(o => o.status === 'pending');
|
|
243
|
+
if (pendingOrders.length === 0) {
|
|
244
|
+
return { wake: false, reason: '' };
|
|
245
|
+
}
|
|
246
|
+
// Get current price — use a quick snapshot read (already cached if recent)
|
|
247
|
+
try {
|
|
248
|
+
const snap = await this.market.snapshot(tokenAddress);
|
|
249
|
+
const priceEth = snap.ownToken?.priceEth;
|
|
250
|
+
if (priceEth == null || priceEth <= 0) {
|
|
251
|
+
return { wake: false, reason: '' };
|
|
252
|
+
}
|
|
253
|
+
const orders = new ClawnchOrders(state);
|
|
254
|
+
const triggered = orders.checkTriggers(priceEth);
|
|
255
|
+
if (triggered.length === 0) {
|
|
256
|
+
return { wake: false, reason: '' };
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
wake: true,
|
|
260
|
+
reason: `${triggered.length} order(s) triggered at price ${priceEth.toExponential(4)} ETH`,
|
|
261
|
+
triggeredOrders: triggered,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
// Price read failed — don't block the heartbeat
|
|
266
|
+
return { wake: false, reason: '' };
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Check XMTP inbox for unread messages.
|
|
271
|
+
* Drains the message queue — messages are included in the wake prompt.
|
|
272
|
+
*/
|
|
273
|
+
checkXmtpInbox() {
|
|
274
|
+
const xmtpClient = this.agent.getXmtpClient();
|
|
275
|
+
if (!xmtpClient || !xmtpClient.isStarted() || !xmtpClient.hasUnreadMessages()) {
|
|
276
|
+
return { wake: false, reason: '' };
|
|
277
|
+
}
|
|
278
|
+
const messages = xmtpClient.drainMessages();
|
|
279
|
+
if (messages.length === 0) {
|
|
280
|
+
return { wake: false, reason: '' };
|
|
281
|
+
}
|
|
282
|
+
// Filter by allowlist if configured
|
|
283
|
+
const config = this.config.xmtp;
|
|
284
|
+
let filtered = messages;
|
|
285
|
+
if (config?.allowlist && config.allowlist.length > 0) {
|
|
286
|
+
const allowed = new Set(config.allowlist.map(a => a.toLowerCase()));
|
|
287
|
+
filtered = messages.filter(m => allowed.has(m.senderAddress.toLowerCase()));
|
|
288
|
+
}
|
|
289
|
+
if (filtered.length === 0) {
|
|
290
|
+
return { wake: false, reason: '' };
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
wake: true,
|
|
294
|
+
reason: `${filtered.length} XMTP message(s) received`,
|
|
295
|
+
messages: filtered,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
147
298
|
/**
|
|
148
299
|
* Check bunker-specific wake conditions:
|
|
149
300
|
* 1. Runtime expiring within BUNKER_EXPIRY_WARN_HOURS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/heartbeat/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/heartbeat/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export { StateStore } from './state/index.js';
|
|
|
22
22
|
export type { AuditEntry } from './state/index.js';
|
|
23
23
|
export { SurvivalMonitor, determineTier, formatSurvivalStatus } from './survival/index.js';
|
|
24
24
|
export { ALL_SKILLS, getSkillsForTier } from './skills/index.js';
|
|
25
|
-
export { checkBalanceSkill, checkStatsSkill, claimFeesSkill, deployTokenSkill, swapSkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, } from './skills/index.js';
|
|
25
|
+
export { checkBalanceSkill, checkStatsSkill, claimFeesSkill, deployTokenSkill, swapSkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, xmtpSkill, } from './skills/index.js';
|
|
26
26
|
export { Heartbeat } from './heartbeat/index.js';
|
|
27
27
|
export { MarketIntelligence, formatSnapshot } from './market/index.js';
|
|
28
28
|
export type { MarketSnapshot, MarketConditions, OwnTokenStats } from './market/index.js';
|
|
@@ -36,5 +36,7 @@ export type { ThreatCheckResult } from './bunker/threat-monitor.js';
|
|
|
36
36
|
export { SelfModAuditor } from './self-mod/index.js';
|
|
37
37
|
export type { ClawtomatonIdentity, SurvivalTier, SurvivalState, AgentContext, ConversationTurn, ToolCall, ToolResult, SkillDefinition, SkillParameter, HeartbeatTask, ClawtomatonConfig, ActivationResult, } from './types.js';
|
|
38
38
|
export { SURVIVAL_THRESHOLDS, CLAWTOMATON_ACTIVATION_COST, CLAWNCH_TOKEN_ADDRESS, CLAWNCH_BURN_ADDRESS, } from './types.js';
|
|
39
|
+
export { XmtpClient } from './xmtp/client.js';
|
|
40
|
+
export type { XmtpConfig, XmtpMessage, XmtpMessageType, XmtpConversationInfo, XmtpTransactionRef } from './xmtp/types.js';
|
|
39
41
|
export { BUNKER_TOKEN_ADDRESS, BUNKER_API_URL, BUNKER_DOCKER_IMAGE, BUNKER_EXPIRY_WARN_HOURS, BUNKER_DEFAULT_DURATION_HOURS, } from './constants.js';
|
|
40
42
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGzF,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzJ,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxH,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,GAAG,EACH,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,EACR,KAAK,EACL,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1H,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export { StateStore } from './state/index.js';
|
|
|
25
25
|
export { SurvivalMonitor, determineTier, formatSurvivalStatus } from './survival/index.js';
|
|
26
26
|
// Skills
|
|
27
27
|
export { ALL_SKILLS, getSkillsForTier } from './skills/index.js';
|
|
28
|
-
export { checkBalanceSkill, checkStatsSkill, claimFeesSkill, deployTokenSkill, swapSkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, } from './skills/index.js';
|
|
28
|
+
export { checkBalanceSkill, checkStatsSkill, claimFeesSkill, deployTokenSkill, swapSkill, transferSkill, shellSkill, conwaySkill, editSoulSkill, clawnxSkill, bunkerSkill, xmtpSkill, } from './skills/index.js';
|
|
29
29
|
// Heartbeat
|
|
30
30
|
export { Heartbeat } from './heartbeat/index.js';
|
|
31
31
|
// Market intelligence
|
|
@@ -37,6 +37,8 @@ export { checkThreat, handleThreatEscalation, handleCriticalMigration, formatThr
|
|
|
37
37
|
// Self-modification audit
|
|
38
38
|
export { SelfModAuditor } from './self-mod/index.js';
|
|
39
39
|
export { SURVIVAL_THRESHOLDS, CLAWTOMATON_ACTIVATION_COST, CLAWNCH_TOKEN_ADDRESS, CLAWNCH_BURN_ADDRESS, } from './types.js';
|
|
40
|
+
// XMTP (encrypted messaging)
|
|
41
|
+
export { XmtpClient } from './xmtp/client.js';
|
|
40
42
|
// Constants
|
|
41
43
|
export { BUNKER_TOKEN_ADDRESS, BUNKER_API_URL, BUNKER_DOCKER_IMAGE, BUNKER_EXPIRY_WARN_HOURS, BUNKER_DEFAULT_DURATION_HOURS, } from './constants.js';
|
|
42
44
|
//# 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;;;;;;;;;;;;;;;GAeG;AAEH,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAG/E,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3F,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAG/E,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3F,SAAS;AACT,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMvE,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACzJ,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAoBxH,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAkBrD,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC"}
|
package/dist/market/index.d.ts
CHANGED
|
@@ -40,6 +40,12 @@ export interface OwnTokenStats {
|
|
|
40
40
|
balanceFormatted: string;
|
|
41
41
|
totalSupply: bigint;
|
|
42
42
|
holdingPct: number;
|
|
43
|
+
/** Price in ETH per token (null if pool read fails) */
|
|
44
|
+
priceEth: number | null;
|
|
45
|
+
/** Price in USD per token (null if unavailable) */
|
|
46
|
+
priceUsd: number | null;
|
|
47
|
+
/** Market cap in USD (null if unavailable) */
|
|
48
|
+
marketCapUsd: number | null;
|
|
43
49
|
}
|
|
44
50
|
export interface MarketConditions {
|
|
45
51
|
feesWorthClaiming: boolean;
|
|
@@ -54,6 +60,7 @@ export declare class MarketIntelligence {
|
|
|
54
60
|
private address;
|
|
55
61
|
private state;
|
|
56
62
|
private reader;
|
|
63
|
+
private price;
|
|
57
64
|
constructor(publicClient: PublicClient, address: Address, state: StateStore, network?: NetworkName);
|
|
58
65
|
/**
|
|
59
66
|
* Take a full market snapshot — all data from chain, no caching.
|
|
@@ -77,7 +84,7 @@ export declare class MarketIntelligence {
|
|
|
77
84
|
*/
|
|
78
85
|
private fetchBunkerData;
|
|
79
86
|
/**
|
|
80
|
-
* Fetch own token stats using the SDK's ClawnchReader + ERC20ABI.
|
|
87
|
+
* Fetch own token stats using the SDK's ClawnchReader + ERC20ABI + ClawnchPrice.
|
|
81
88
|
*/
|
|
82
89
|
private fetchOwnTokenStats;
|
|
83
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AACd,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AACd,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAcpD,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAE9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B,EAAE,MAAM,CAAC;IAEpC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAE/B,QAAQ,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,wCAAwC;IACxC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAe;gBAG1B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,WAAuB;IASlC;;OAEG;IACG,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAkD/D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB;IA0ChD;;OAEG;IACG,UAAU,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;YAyBtE,SAAS;IAyBvB;;;OAGG;YACW,eAAe;IAwC7B;;OAEG;YACW,kBAAkB;CA6CjC;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAmC3D"}
|
package/dist/market/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Uses the Clawncher SDK for all on-chain reads — no local ABI duplication.
|
|
6
6
|
*/
|
|
7
7
|
import { formatEther, erc20Abi, } from 'viem';
|
|
8
|
-
import { ClawnchReader, ERC20ABI, } from '@clawnch/clawncher-sdk';
|
|
8
|
+
import { ClawnchReader, ClawnchPrice, ERC20ABI, } from '@clawnch/clawncher-sdk';
|
|
9
9
|
import { BASE_WETH, GAS_PER_TX, CLAIM_TX_COUNT, MIN_CLAIM_PROFIT_WEI, INFERENCE_COST_ETH_EQUIV, BUNKER_TOKEN_ADDRESS, } from '../constants.js';
|
|
10
10
|
// ============================================================================
|
|
11
11
|
// Market Intelligence
|
|
@@ -15,11 +15,13 @@ export class MarketIntelligence {
|
|
|
15
15
|
address;
|
|
16
16
|
state;
|
|
17
17
|
reader;
|
|
18
|
+
price;
|
|
18
19
|
constructor(publicClient, address, state, network = 'mainnet') {
|
|
19
20
|
this.publicClient = publicClient;
|
|
20
21
|
this.address = address;
|
|
21
22
|
this.state = state;
|
|
22
23
|
this.reader = new ClawnchReader({ publicClient: publicClient, network });
|
|
24
|
+
this.price = new ClawnchPrice({ publicClient: publicClient, network });
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Take a full market snapshot — all data from chain, no caching.
|
|
@@ -187,7 +189,7 @@ export class MarketIntelligence {
|
|
|
187
189
|
}
|
|
188
190
|
}
|
|
189
191
|
/**
|
|
190
|
-
* Fetch own token stats using the SDK's ClawnchReader + ERC20ABI.
|
|
192
|
+
* Fetch own token stats using the SDK's ClawnchReader + ERC20ABI + ClawnchPrice.
|
|
191
193
|
*/
|
|
192
194
|
async fetchOwnTokenStats(tokenAddress) {
|
|
193
195
|
try {
|
|
@@ -203,6 +205,19 @@ export class MarketIntelligence {
|
|
|
203
205
|
const holdingPct = tokenInfo.totalSupply > 0n
|
|
204
206
|
? Number((balance * 10000n) / tokenInfo.totalSupply) / 100
|
|
205
207
|
: 0;
|
|
208
|
+
// Fetch price (non-fatal — null on failure)
|
|
209
|
+
let priceEth = null;
|
|
210
|
+
let priceUsd = null;
|
|
211
|
+
let marketCapUsd = null;
|
|
212
|
+
try {
|
|
213
|
+
const priceInfo = await this.price.getTokenPrice(tokenAddress);
|
|
214
|
+
priceEth = priceInfo.priceInEth;
|
|
215
|
+
priceUsd = priceInfo.priceInUsd;
|
|
216
|
+
marketCapUsd = priceInfo.marketCapUsd;
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
// Price read failed — pool may not exist or token not paired with WETH
|
|
220
|
+
}
|
|
206
221
|
return {
|
|
207
222
|
address: tokenAddress,
|
|
208
223
|
symbol: tokenInfo.symbol,
|
|
@@ -210,6 +225,9 @@ export class MarketIntelligence {
|
|
|
210
225
|
balanceFormatted: formatEther(balance),
|
|
211
226
|
totalSupply: tokenInfo.totalSupply,
|
|
212
227
|
holdingPct,
|
|
228
|
+
priceEth,
|
|
229
|
+
priceUsd,
|
|
230
|
+
marketCapUsd,
|
|
213
231
|
};
|
|
214
232
|
}
|
|
215
233
|
catch {
|
|
@@ -238,6 +256,14 @@ export function formatSnapshot(snap) {
|
|
|
238
256
|
lines.push(`--- Own Token ---`);
|
|
239
257
|
lines.push(`$${snap.ownToken.symbol} (${snap.ownToken.address})`);
|
|
240
258
|
lines.push(`Balance: ${snap.ownToken.balanceFormatted} (${snap.ownToken.holdingPct.toFixed(2)}% of supply)`);
|
|
259
|
+
if (snap.ownToken.priceEth != null) {
|
|
260
|
+
lines.push(`Price: ${snap.ownToken.priceEth.toExponential(4)} ETH${snap.ownToken.priceUsd != null ? ` ($${snap.ownToken.priceUsd.toExponential(4)})` : ''}`);
|
|
261
|
+
}
|
|
262
|
+
if (snap.ownToken.marketCapUsd != null) {
|
|
263
|
+
const mcap = snap.ownToken.marketCapUsd;
|
|
264
|
+
const mcapStr = mcap >= 1_000_000 ? `$${(mcap / 1_000_000).toFixed(2)}M` : mcap >= 1_000 ? `$${(mcap / 1_000).toFixed(2)}K` : `$${mcap.toFixed(2)}`;
|
|
265
|
+
lines.push(`Market Cap: ${mcapStr}`);
|
|
266
|
+
}
|
|
241
267
|
}
|
|
242
268
|
if (snap.bunkerBalance !== null && snap.bunkerBalance > 0n) {
|
|
243
269
|
lines.push(`--- Bunker ---`);
|
package/dist/market/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,QAAQ,GAGT,MAAM,MAAM,CAAC;AACd,OAAO,EAEL,aAAa,EACb,QAAQ,GAET,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: analyze_market — Technical analysis of a token's trading activity.
|
|
3
|
+
*
|
|
4
|
+
* Fetches recent swap events from the V4 pool, builds OHLCV candles,
|
|
5
|
+
* and computes technical indicators:
|
|
6
|
+
* - SMA (20, 50)
|
|
7
|
+
* - RSI (14)
|
|
8
|
+
* - Bollinger Bands (20, 2)
|
|
9
|
+
* - VWAP
|
|
10
|
+
* - Volatility (annualized)
|
|
11
|
+
* - Combined signal (strong_buy → strong_sell)
|
|
12
|
+
*
|
|
13
|
+
* No gas cost — read-only operation using event logs.
|
|
14
|
+
*/
|
|
15
|
+
import type { SkillDefinition } from '../types.js';
|
|
16
|
+
export declare const analyzeMarketSkill: SkillDefinition;
|
|
17
|
+
//# sourceMappingURL=analyze-market.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-market.d.ts","sourceRoot":"","sources":["../../src/skills/analyze-market.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAG7E,eAAO,MAAM,kBAAkB,EAAE,eA8HhC,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill: analyze_market — Technical analysis of a token's trading activity.
|
|
3
|
+
*
|
|
4
|
+
* Fetches recent swap events from the V4 pool, builds OHLCV candles,
|
|
5
|
+
* and computes technical indicators:
|
|
6
|
+
* - SMA (20, 50)
|
|
7
|
+
* - RSI (14)
|
|
8
|
+
* - Bollinger Bands (20, 2)
|
|
9
|
+
* - VWAP
|
|
10
|
+
* - Volatility (annualized)
|
|
11
|
+
* - Combined signal (strong_buy → strong_sell)
|
|
12
|
+
*
|
|
13
|
+
* No gas cost — read-only operation using event logs.
|
|
14
|
+
*/
|
|
15
|
+
import { ClawnchAnalytics, ClawnchPrice, ClawnchReader, ClawnchWatcher } from '@clawnch/clawncher-sdk';
|
|
16
|
+
export const analyzeMarketSkill = {
|
|
17
|
+
name: 'analyze_market',
|
|
18
|
+
description: [
|
|
19
|
+
'Technical analysis of a token: SMA, RSI, Bollinger Bands, VWAP, volatility.',
|
|
20
|
+
'Builds OHLCV candles from on-chain swap events and produces a buy/sell signal.',
|
|
21
|
+
'No gas cost (read-only). Needs ~50+ swaps for meaningful indicators.',
|
|
22
|
+
].join(' '),
|
|
23
|
+
parameters: [
|
|
24
|
+
{
|
|
25
|
+
name: 'token',
|
|
26
|
+
type: 'address',
|
|
27
|
+
description: 'Token address to analyze. Defaults to own token.',
|
|
28
|
+
required: false,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'interval',
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Candle interval: "5m", "15m", "1h", "4h", "1d". Default "1h".',
|
|
34
|
+
required: false,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'blocks',
|
|
38
|
+
type: 'number',
|
|
39
|
+
description: 'Number of past blocks to scan for swaps (default 10000, ~5.5 hours on Base).',
|
|
40
|
+
required: false,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
execute: async (params, ctx) => {
|
|
44
|
+
try {
|
|
45
|
+
const tokenAddress = params.token ?? ctx.identity.tokenAddress;
|
|
46
|
+
if (!tokenAddress) {
|
|
47
|
+
return { callId: '', success: false, result: null, error: 'No token address. Deploy a token first or specify one.' };
|
|
48
|
+
}
|
|
49
|
+
const { buildClients } = await import('../identity/index.js');
|
|
50
|
+
const rpcUrl = process.env.BASE_RPC_URL ?? 'https://mainnet.base.org';
|
|
51
|
+
const { publicClient } = buildClients(ctx.identity, rpcUrl);
|
|
52
|
+
// Get pool ID and WETH side
|
|
53
|
+
const reader = new ClawnchReader({ publicClient: publicClient, network: 'mainnet' });
|
|
54
|
+
const rewards = await reader.getTokenRewards(tokenAddress);
|
|
55
|
+
if (!rewards) {
|
|
56
|
+
return { callId: '', success: false, result: null, error: 'No pool found for this token. It may not be a Clawncher token.' };
|
|
57
|
+
}
|
|
58
|
+
const poolKey = rewards.poolKey;
|
|
59
|
+
const wethAddress = '0x4200000000000000000000000000000000000006';
|
|
60
|
+
const wethSide = poolKey.currency0.toLowerCase() === wethAddress.toLowerCase() ? 0 : 1;
|
|
61
|
+
// Build pool ID from the rewards data
|
|
62
|
+
// The watcher needs the pool ID as a hex string. We can get it from getTokenPrice.
|
|
63
|
+
const price = new ClawnchPrice({ publicClient: publicClient, network: 'mainnet' });
|
|
64
|
+
let poolId;
|
|
65
|
+
try {
|
|
66
|
+
const priceInfo = await price.getTokenPrice(tokenAddress);
|
|
67
|
+
// poolId is not directly returned by getTokenPrice. We need to compute it.
|
|
68
|
+
// For now, use reader.getTokenRewards which returns poolKey but not poolId.
|
|
69
|
+
// We'll fetch swaps by scanning the PoolManager for events with this token's pool.
|
|
70
|
+
// Actually, the watcher's getRecentSwaps needs a poolId. Let's compute it from the pool key.
|
|
71
|
+
poolId = computePoolId(poolKey);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return { callId: '', success: false, result: null, error: 'Failed to read pool state. Token may not have liquidity.' };
|
|
75
|
+
}
|
|
76
|
+
// Fetch swap events
|
|
77
|
+
const blocksToScan = params.blocks ?? 10000;
|
|
78
|
+
const currentBlock = await publicClient.getBlockNumber();
|
|
79
|
+
const fromBlock = currentBlock > BigInt(blocksToScan) ? currentBlock - BigInt(blocksToScan) : 0n;
|
|
80
|
+
const watcher = new ClawnchWatcher({ publicClient: publicClient, network: 'mainnet' });
|
|
81
|
+
const swaps = await watcher.getRecentSwaps(poolId, {
|
|
82
|
+
fromBlock,
|
|
83
|
+
toBlock: currentBlock,
|
|
84
|
+
limit: 500,
|
|
85
|
+
});
|
|
86
|
+
if (swaps.length < 5) {
|
|
87
|
+
return {
|
|
88
|
+
callId: '',
|
|
89
|
+
success: true,
|
|
90
|
+
result: `Only ${swaps.length} swap(s) found in the last ${blocksToScan} blocks. Not enough data for technical analysis.\n\nTry increasing the blocks parameter or wait for more trading activity.`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Build candles and analyze
|
|
94
|
+
const interval = params.interval ?? '1h';
|
|
95
|
+
const analytics = new ClawnchAnalytics();
|
|
96
|
+
const candles = analytics.buildCandles(swaps, wethSide, interval);
|
|
97
|
+
if (candles.length < 5) {
|
|
98
|
+
return {
|
|
99
|
+
callId: '',
|
|
100
|
+
success: true,
|
|
101
|
+
result: `${swaps.length} swaps produced only ${candles.length} candle(s). Need more data for meaningful analysis.`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const analysis = analytics.analyze(candles, interval);
|
|
105
|
+
const lines = [
|
|
106
|
+
`Market Analysis for ${tokenAddress}`,
|
|
107
|
+
` ${swaps.length} swaps → ${candles.length} candles (${interval})`,
|
|
108
|
+
``,
|
|
109
|
+
];
|
|
110
|
+
if (analysis) {
|
|
111
|
+
lines.push(analysis.summary);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Not enough candles for full analysis, show what we can
|
|
115
|
+
const lastCandle = candles[candles.length - 1];
|
|
116
|
+
const vwap = analytics.vwap(candles);
|
|
117
|
+
const vol = analytics.volatility(candles, interval);
|
|
118
|
+
lines.push(`Price: ${lastCandle.close.toExponential(4)} ETH`);
|
|
119
|
+
lines.push(`Range: ${lastCandle.low.toExponential(3)} — ${lastCandle.high.toExponential(3)}`);
|
|
120
|
+
lines.push(`VWAP: ${vwap.toExponential(4)} ETH`);
|
|
121
|
+
lines.push(`Volatility: ${(vol * 100).toFixed(0)}% annualized`);
|
|
122
|
+
lines.push(`Total volume: ${candles.reduce((s, c) => s + c.volume, 0).toFixed(6)} ETH`);
|
|
123
|
+
lines.push(``, `(Need 50+ candles for SMA/RSI/BB. Currently ${candles.length}.)`);
|
|
124
|
+
}
|
|
125
|
+
return { callId: '', success: true, result: lines.join('\n') };
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
return { callId: '', success: false, result: null, error: err instanceof Error ? err.message : String(err) };
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Compute Uniswap V4 pool ID from pool key via keccak256.
|
|
134
|
+
* Pool ID = keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks))
|
|
135
|
+
*/
|
|
136
|
+
function computePoolId(poolKey) {
|
|
137
|
+
// We need viem's encodePacked / keccak256. Dynamic import to keep the function sync-compatible.
|
|
138
|
+
// Actually, for V4, pool ID is keccak256(abi.encode(...)) not encodePacked.
|
|
139
|
+
// Use viem's encodeAbiParameters + keccak256.
|
|
140
|
+
const { encodeAbiParameters, keccak256 } = require('viem');
|
|
141
|
+
const encoded = encodeAbiParameters([
|
|
142
|
+
{ type: 'address' },
|
|
143
|
+
{ type: 'address' },
|
|
144
|
+
{ type: 'uint24' },
|
|
145
|
+
{ type: 'int24' },
|
|
146
|
+
{ type: 'address' },
|
|
147
|
+
], [
|
|
148
|
+
poolKey.currency0,
|
|
149
|
+
poolKey.currency1,
|
|
150
|
+
poolKey.fee,
|
|
151
|
+
poolKey.tickSpacing,
|
|
152
|
+
poolKey.hooks,
|
|
153
|
+
]);
|
|
154
|
+
return keccak256(encoded);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=analyze-market.js.map
|