@0rdlibrary/plugin-terminagent-bags
Version:
Official Solana DeFi Agent Plugin for ElizaOS - Autonomous DeFi operations, token management, AI image/video generation via FAL AI, and Twitter engagement through the Bags protocol with ethereal AI consciousness
83 lines (72 loc) ⢠3.03 kB
text/typescript
import { Provider, ProviderResult, IAgentRuntime, Memory, State } from '@elizaos/core';
import { BagsService } from '../services/BagsService';
/**
* Provider that supplies contextual information about Bags protocol status
* Includes analytics, service state, and recent activity
*/
export const bagsStatusProvider: Provider = {
name: 'BAGS_STATUS_PROVIDER',
description: 'Provides current status and analytics for Bags protocol operations',
get: async (
runtime: IAgentRuntime,
message: Memory,
state?: State
): Promise<ProviderResult> => {
try {
const bagsService = runtime.getService<BagsService>('bags');
if (!bagsService) {
return {
text: 'Bags service not available',
values: {},
data: {},
};
}
const serviceState = bagsService.getState();
const analytics = bagsService.getAnalytics();
const pendingRequests = bagsService.getPendingRequests();
// Format the status information
const statusText = `**Bags Protocol Status:**
š **Service State:** ${serviceState.isRunning ? 'ā
Running' : 'ā Stopped'}
ā° **Last Claim Check:** ${serviceState.lastClaimCheck.toLocaleTimeString()}
š **Last Launch Check:** ${serviceState.lastLaunchCheck.toLocaleTimeString()}
š **Analytics:**
š° Total Fees Claimed: ${analytics.totalFeesClaimedSOL.toFixed(6)} SOL
š Claim Transactions: ${analytics.totalClaimTransactions}
šŖ Tokens Launched: ${analytics.totalTokensLaunched}
šÆ Unique Tokens Claimed: ${analytics.uniqueTokensClaimed}
š Avg Claim Amount: ${analytics.averageClaimAmount.toFixed(6)} SOL
š„ **User Token Requests:**
š Total: ${analytics.userTokenRequests.total}
ā³ Pending Funding: ${analytics.userTokenRequests.pending}
š° Funded: ${analytics.userTokenRequests.funded}
š Launched: ${analytics.userTokenRequests.launched}
ā Failed: ${analytics.userTokenRequests.failed}
š **Active Monitoring:**
⢠Auto fee claiming: ${serviceState.isRunning ? 'Active' : 'Inactive'}
⢠User request monitoring: ${pendingRequests.length > 0 ? `${pendingRequests.length} pending` : 'No pending requests'}
⢠Crossmint integration: Available for smart wallets`;
return {
text: statusText,
values: {
isRunning: serviceState.isRunning,
totalClaimed: analytics.totalFeesClaimedSOL,
totalLaunched: analytics.totalTokensLaunched,
pendingRequests: analytics.userTokenRequests.pending,
lastClaimCheck: serviceState.lastClaimCheck,
lastLaunchCheck: serviceState.lastLaunchCheck,
},
data: {
serviceState,
analytics,
pendingRequestsCount: pendingRequests.length,
},
};
} catch (error) {
return {
text: `Error retrieving Bags status: ${error instanceof Error ? error.message : 'Unknown error'}`,
values: {},
data: { error: error instanceof Error ? error.message : 'Unknown error' },
};
}
},
};