The file /Users/neog/Apps/macOS/NEOGHub/NEOGCommand/Services/Monitoring/ConsumptionTracker.swift has been updated. Here's the result of running `cat -n` on a snippet of the edited file: 333→ // Record initial point 334→ recordHistoryPoint() 335→ } 336→ 337→ private func recordHistoryPoint() { 338→ let point = ConsumptionDataPoint( 339→ timestamp: Date(), 340→ cumulativeCost: sessionCost, 341→ inputTokens: sessionInputTokens, 342→ outputTokens: sessionOutputTokens, 343→ cacheTokens: sessionCacheTokens 344→ ) 345→ 346→ consumptionHistory.append(point) 347→ 348→ // Keep last 2 hours of data (240 points at 30s intervals) 349→ if consumptionHistory.count > 240 { 350→ consumptionHistory.removeFirst() 351→ } 352→ } 353→ 354→ // MARK: - Live Session Monitoring 355→ 356→ private func startLiveSessionMonitoring() { 357→ liveSessionTask = Task { 358→ await monitorLiveSession() 359→ } 360→ } 361→ 362→ private func monitorLiveSession() async { 363→ while !Task.isCancelled { 364→ if !isPaused { 365→ await fetchLiveSession() 366→ } 367→ try? await Task.sleep(for: .seconds(1)) // Faster polling for live data 368→ } 369→ } 370→ 371→ private func fetchLiveSession() async { 372→ guard let url = URL(string: "http://localhost:9001/api/cc/session/current") else { return } 373→ 374→ do { 375→ let (data, response) = try await URLSession.shared.data(from: url) 376→ 377→ guard let httpResponse = response as? HTTPURLResponse, 378→ httpResponse.statusCode == 200 else { 379→ liveSessionActive = false 380→ return 381→ } 382→ 383→ let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] 384→ 385→ if let active = json?["active"] as? Bool, active { 386→ // Live session is active 387→ let sessionId = json?["session_id"] as? String 388→ let cost = json?["cumulative_cost"] as? Double ?? 0 389→ let duration = json?["duration_seconds"] as? Double ?? 0 390→ let costRate = json?["cost_rate_per_hour"] as? Double ?? 0 391→ let tokens = json?["cumulative_tokens"] as? [String: Any] 392→ 393→ // Update live session state 394→ if liveSessionId != sessionId { 395→ // New session detected 396→ addActivity(.process, "Live session started: \(sessionId ?? "unknown")") 397→ } 398→ 399→ liveSessionId = sessionId 400→ liveSessionActive = true 401→ liveSessionCost = cost 402→ liveSessionDurationSeconds = duration 403→ 404→ // Update main metrics from live session 405→ if let tokens = tokens { 406→ let input = tokens["input"] as? Int ?? 0 407→ let output = tokens["output"] as? Int ?? 0 408→ let cacheRead = tokens["cacheRead"] as? Int ?? 0 409→ 410→ // Update session tokens if live data is newer 411→ if input > sessionInputTokens || output > sessionOutputTokens { 412→ sessionInputTokens = input 413→ sessionOutputTokens = output 414→ sessionCacheTokens = cacheRead 415→ } 416→ } 417→ 418→ // Update cost rate from live session 419→ if costRate > 0 { 420→ costPerHour = costRate 421→ costPerMinute = costRate / 60 422→ } 423→ 424→ // Update session cost if live is higher 425→ if cost > sessionCost { 426→ let costDelta = cost - sessionCost 427→ sessionCost = cost 428→ if costDelta > 0.0001 { 429→ addActivity(.cost, "Live cost update", cost: costDelta) 430→ } 431→ } 432→ 433→ lastLiveSessionUpdate = Date() 434→ 435→ } else { 436→ // No active live session 437→ if liveSessionActive { 438→ addActivity(.process, "Live session ended") 439→ } 440→ liveSessionActive = false 441→ liveSessionId = nil 442→ } 443→ 444→ } catch { 445→ // API not available or error 446→ if liveSessionActive { 447→ liveSessionActive = false 448→ } 449→ } 450→ } 451→ 452→ // MARK: - Activity Logging 453→ 454→ private func addActivity(_ type: ConsumptionActivity.ActivityType, _ description: String, cost: Double? = nil) { 455→ let activity = ConsumptionActivity( 456→ type: type,