Skip to main content
Glama
example-usage.ts6.32 kB
/* istanbul ignore file */ import { initializeAuditServices, AgentDecision, TestExecution, TransactionTrace } from './index.js'; // Example: Initialize all audit services const { auditService, agentLogger, testAuditor, transactionLogger } = initializeAuditServices(); // Example: Agent Decision Logging export function exampleAgentDecision() { const correlationId = auditService.generateCorrelationId(); // Log agent reasoning agentLogger.logReasoning({ agentId: 'agent-001', context: 'Transaction validation', analysis: 'Analyzing transaction amount and recipient', factors: ['Amount threshold', 'Recipient whitelist', 'Risk score'], conclusion: 'Transaction appears legitimate', confidence: 0.85 }, correlationId); // Log agent decision const decision: AgentDecision = { agentId: 'agent-001', decisionType: 'transaction', input: { amount: '1000', recipient: '0x123...' }, reasoning: 'Transaction amount is within limits and recipient is whitelisted', confidence: 0.85, alternatives: ['Reject', 'Hold for review'], selectedAction: 'approve', expectedOutcome: 'Transaction will be processed successfully', riskAssessment: 'low' }; agentLogger.logDecision(decision, correlationId); // Log agent action agentLogger.logAction({ agentId: 'agent-001', actionType: 'transaction_approval', target: 'transaction-123', parameters: { approved: true, timestamp: Date.now() }, timestamp: Date.now(), correlationId }); } // Example: Test Outcome Auditing export function exampleTestAuditing() { const testId = 'test-001'; const correlationId = auditService.generateCorrelationId(); // Start test tracking const testExecution: TestExecution = { testId, testName: 'Transaction Flow Test', testSuite: 'Integration Tests', agentId: 'agent-001', environment: 'test', startTime: Date.now(), status: 'running', correlationId }; testAuditor.startTest(testExecution); // Log test decision testAuditor.logTestDecision({ testId, decisionType: 'continue', reasoning: 'Test is progressing normally', agentId: 'agent-001', confidence: 0.9, alternatives: ['retry', 'abort'], selectedAction: 'continue', timestamp: Date.now(), correlationId }); // Complete test testAuditor.completeTest(testId, 'passed', 'All assertions passed'); // Log test outcome testAuditor.logTestOutcome({ testId, outcome: 'success', summary: 'Transaction flow test completed successfully', details: { assertions: 5, passed: 5, failed: 0 }, recommendations: ['Consider adding more edge cases'], nextSteps: ['Run performance tests'], timestamp: Date.now(), correlationId }); } // Example: Transaction Trace Logging export function exampleTransactionTracing() { const transactionId = 'tx-123'; const correlationId = auditService.generateCorrelationId(); // Start transaction trace transactionLogger.startTrace(transactionId, correlationId, { amount: '1000', recipient: '0x123...', agentId: 'agent-001' }); // Add transaction steps const validationStepId = transactionLogger.addStep( transactionId, 'validate_transaction', 'validation-service', { amount: '1000', recipient: '0x123...' } ); // Simulate step completion setTimeout(() => { transactionLogger.completeStep(transactionId, validationStepId, { valid: true, riskScore: 0.1 }); // Add more steps const signingStepId = transactionLogger.addStep( transactionId, 'sign_transaction', 'wallet-service', { transaction: 'signed_data' } ); setTimeout(() => { transactionLogger.completeStep(transactionId, signingStepId, { signature: '0xabc...', signed: true }); // Log transaction sent transactionLogger.logTransactionSent(transactionId, '0xdef...', correlationId); // Complete trace transactionLogger.completeTrace(transactionId, 'completed', 'Transaction processed successfully'); }, 100); }, 100); } // Example: Integration with existing wallet code export function integrateWithWallet() { // This shows how you could integrate audit trail with existing wallet operations // When a transaction is initiated const transactionId = 'tx-456'; const correlationId = auditService.generateCorrelationId(); transactionLogger.startTrace(transactionId, correlationId); // Log agent decision for transaction agentLogger.logTransactionDecision( 'agent-001', transactionId, 'approve', 'Transaction amount and recipient are within acceptable limits', '1000', '0x123...', correlationId ); // Add transaction processing steps const stepId = transactionLogger.addStep( transactionId, 'process_transaction', 'wallet-manager', { amount: '1000', to: '0x123...' } ); // When transaction completes or fails try { // Simulate transaction processing const result = { success: true, txHash: '0xabc...' }; transactionLogger.completeStep(transactionId, stepId, result); transactionLogger.logTransactionSent(transactionId, '0xabc...', correlationId); transactionLogger.completeTrace(transactionId, 'completed'); } catch (error) { transactionLogger.completeStep(transactionId, stepId, undefined, error as Error); transactionLogger.logTransactionFailure(transactionId, error as Error, {}, correlationId); transactionLogger.completeTrace(transactionId, 'failed'); } } // Example: Export audit trail for analysis export function exportAuditTrail() { // Export all audit events to file const exportPath = auditService.exportToFile('audit-trail-export.json'); console.log(`Audit trail exported to: ${exportPath}`); // Get specific events const agentDecisions = auditService.getEventsByType('agent_decision'); const transactionEvents = auditService.getEventsByType('transaction_initiated'); const testEvents = auditService.getEventsByType('test_started'); console.log(`Total agent decisions: ${agentDecisions.length}`); console.log(`Total transactions: ${transactionEvents.length}`); console.log(`Total tests: ${testEvents.length}`); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evilpixi/pixi-midnight-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server