Priyanshi Saxena commited on
Commit
4c07e01
Β·
1 Parent(s): 254afdc

Enhanced status checking and error handling

Browse files

- Added detailed logging to status endpoint
- Improved error handling in status check function
- Added retry mechanism for failed status checks
- Enhanced service initialization logging
- Better debugging information in status response

Files changed (1) hide show
  1. app.py +79 -17
app.py CHANGED
@@ -46,13 +46,20 @@ class Web3CoPilotService:
46
  def __init__(self):
47
  try:
48
  logger.info("Initializing Web3 Research Service...")
 
49
 
50
  if config.GEMINI_API_KEY:
51
  logger.info("AI research capabilities enabled")
52
- self.agent = Web3ResearchAgent()
53
- self.enabled = self.agent.enabled
 
 
 
 
 
 
54
  else:
55
- logger.info("AI research capabilities disabled - API key required")
56
  self.agent = None
57
  self.enabled = False
58
 
@@ -1199,13 +1206,22 @@ async def get_homepage(request: Request):
1199
  let messageCount = 0;
1200
 
1201
  async function checkStatus() {
 
1202
  try {
1203
  const response = await fetch('/status');
 
 
 
 
 
 
1204
  const status = await response.json();
 
1205
 
1206
  const statusDiv = document.getElementById('status');
1207
 
1208
  if (status.enabled && status.gemini_configured) {
 
1209
  statusDiv.className = 'status online';
1210
  statusDiv.innerHTML = `
1211
  <span>Research systems online</span>
@@ -1213,7 +1229,8 @@ async def get_homepage(request: Request):
1213
  Tools: ${status.tools_available.join(' β€’ ')}
1214
  </div>
1215
  `;
1216
- } else {
 
1217
  statusDiv.className = 'status offline';
1218
  statusDiv.innerHTML = `
1219
  <span>Limited mode - Configure GEMINI_API_KEY for full functionality</span>
@@ -1221,11 +1238,22 @@ async def get_homepage(request: Request):
1221
  Available: ${status.tools_available.join(' β€’ ')}
1222
  </div>
1223
  `;
 
 
 
 
1224
  }
1225
  } catch (error) {
 
1226
  const statusDiv = document.getElementById('status');
1227
  statusDiv.className = 'status offline';
1228
- statusDiv.innerHTML = '<span>Connection error</span>';
 
 
 
 
 
 
1229
  }
1230
  }
1231
 
@@ -1497,10 +1525,20 @@ async def get_homepage(request: Request):
1497
 
1498
  // Initialize
1499
  document.addEventListener('DOMContentLoaded', () => {
1500
- console.log('Application initialized');
 
 
 
1501
  initializeTheme();
1502
- checkStatus();
 
 
 
 
 
 
1503
  document.getElementById('queryInput').focus();
 
1504
  });
1505
  </script>
1506
  </body>
@@ -1510,16 +1548,40 @@ async def get_homepage(request: Request):
1510
 
1511
  @app.get("/status")
1512
  async def get_status():
1513
- """System status endpoint"""
1514
- status = {
1515
- "enabled": service.enabled,
1516
- "gemini_configured": bool(config.GEMINI_API_KEY),
1517
- "tools_available": ["Market Data", "DeFi Analytics", "Network Metrics"],
1518
- "airaa_enabled": service.airaa.enabled if service.airaa else False,
1519
- "timestamp": datetime.now().isoformat(),
1520
- "version": "2.0.0"
1521
- }
1522
- return status
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1523
 
1524
  @app.post("/query", response_model=QueryResponse)
1525
  async def process_query(request: QueryRequest):
 
46
  def __init__(self):
47
  try:
48
  logger.info("Initializing Web3 Research Service...")
49
+ logger.info(f"Environment check - GEMINI_API_KEY present: {bool(config.GEMINI_API_KEY)}")
50
 
51
  if config.GEMINI_API_KEY:
52
  logger.info("AI research capabilities enabled")
53
+ try:
54
+ self.agent = Web3ResearchAgent()
55
+ self.enabled = self.agent.enabled
56
+ logger.info(f"Web3ResearchAgent initialized - enabled: {self.enabled}")
57
+ except Exception as e:
58
+ logger.error(f"Failed to initialize Web3ResearchAgent: {e}")
59
+ self.agent = None
60
+ self.enabled = False
61
  else:
62
+ logger.warning("AI research capabilities disabled - GEMINI_API_KEY not configured")
63
  self.agent = None
64
  self.enabled = False
65
 
 
1206
  let messageCount = 0;
1207
 
1208
  async function checkStatus() {
1209
+ console.log('Checking system status...');
1210
  try {
1211
  const response = await fetch('/status');
1212
+ console.log('Status response:', response.status, response.statusText);
1213
+
1214
+ if (!response.ok) {
1215
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
1216
+ }
1217
+
1218
  const status = await response.json();
1219
+ console.log('Status data:', status);
1220
 
1221
  const statusDiv = document.getElementById('status');
1222
 
1223
  if (status.enabled && status.gemini_configured) {
1224
+ console.log('βœ… System is fully operational');
1225
  statusDiv.className = 'status online';
1226
  statusDiv.innerHTML = `
1227
  <span>Research systems online</span>
 
1229
  Tools: ${status.tools_available.join(' β€’ ')}
1230
  </div>
1231
  `;
1232
+ } else if (status.enabled) {
1233
+ console.log('⚠️ System is in limited mode');
1234
  statusDiv.className = 'status offline';
1235
  statusDiv.innerHTML = `
1236
  <span>Limited mode - Configure GEMINI_API_KEY for full functionality</span>
 
1238
  Available: ${status.tools_available.join(' β€’ ')}
1239
  </div>
1240
  `;
1241
+ } else {
1242
+ console.log('❌ System is disabled');
1243
+ statusDiv.className = 'status offline';
1244
+ statusDiv.innerHTML = '<span>System disabled</span>';
1245
  }
1246
  } catch (error) {
1247
+ console.error('❌ Status check failed:', error);
1248
  const statusDiv = document.getElementById('status');
1249
  statusDiv.className = 'status offline';
1250
+ statusDiv.innerHTML = `<span>Connection error: ${error.message}</span>`;
1251
+
1252
+ // Retry after 5 seconds
1253
+ setTimeout(() => {
1254
+ console.log('πŸ”„ Retrying status check...');
1255
+ checkStatus();
1256
+ }, 5000);
1257
  }
1258
  }
1259
 
 
1525
 
1526
  // Initialize
1527
  document.addEventListener('DOMContentLoaded', () => {
1528
+ console.log('πŸš€ Web3 Research Co-Pilot - Application initializing...');
1529
+ console.log('πŸ“ Current URL:', window.location.href);
1530
+ console.log('🌐 User Agent:', navigator.userAgent.substring(0, 100));
1531
+
1532
  initializeTheme();
1533
+
1534
+ // Initial status check with delay to ensure server is ready
1535
+ setTimeout(() => {
1536
+ console.log('πŸ” Starting status check...');
1537
+ checkStatus();
1538
+ }, 1000);
1539
+
1540
  document.getElementById('queryInput').focus();
1541
+ console.log('βœ… Application initialization complete');
1542
  });
1543
  </script>
1544
  </body>
 
1548
 
1549
  @app.get("/status")
1550
  async def get_status():
1551
+ """System status endpoint with detailed debugging information"""
1552
+ try:
1553
+ gemini_configured = bool(config.GEMINI_API_KEY)
1554
+ service_enabled = service.enabled
1555
+ agent_available = service.agent is not None
1556
+
1557
+ status = {
1558
+ "enabled": service_enabled,
1559
+ "gemini_configured": gemini_configured,
1560
+ "agent_available": agent_available,
1561
+ "tools_available": ["Market Data", "DeFi Analytics", "Network Metrics"],
1562
+ "airaa_enabled": service.airaa.enabled if service.airaa else False,
1563
+ "timestamp": datetime.now().isoformat(),
1564
+ "version": "2.0.0",
1565
+ "debug_info": {
1566
+ "gemini_key_length": len(config.GEMINI_API_KEY) if config.GEMINI_API_KEY else 0,
1567
+ "service_enabled": service_enabled,
1568
+ "agent_initialized": agent_available
1569
+ }
1570
+ }
1571
+ logger.info(f"Status check - Enabled: {service_enabled}, Gemini: {gemini_configured}")
1572
+ return status
1573
+ except Exception as e:
1574
+ logger.error(f"Status endpoint error: {e}")
1575
+ return {
1576
+ "enabled": False,
1577
+ "gemini_configured": False,
1578
+ "agent_available": False,
1579
+ "tools_available": [],
1580
+ "airaa_enabled": False,
1581
+ "timestamp": datetime.now().isoformat(),
1582
+ "version": "2.0.0",
1583
+ "error": str(e)
1584
+ }
1585
 
1586
  @app.post("/query", response_model=QueryResponse)
1587
  async def process_query(request: QueryRequest):