dynamic_grounding_for_github_copilot 0.1.0

MCP server providing Google Gemini AI integration for enhanced codebase search and analysis
Documentation
//! Example: Quota tracking and monitoring
//!
//! This example shows how to monitor API quota usage.

use dynamic_grounding_for_github_copilot::*;
use std::sync::Arc;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create a quota tracker with Gemini free tier limits:
    // - 15 requests per minute (RPM)
    // - 1,500 requests per day (RPD)
    // - 1,000,000 tokens per minute (TPM)
    let quota_tracker = Arc::new(QuotaTracker::new());

    println!("Quota tracker created with Gemini free tier limits:");
    let status = quota_tracker.get_status();
    println!("  RPM usage: {:.1}%", status.rpm_usage);
    println!("  RPD usage: {:.1}%", status.rpd_usage);
    println!("  TPM usage: {:.1}%", status.tpm_usage);
    println!("  Remaining RPM: {}", status.remaining_rpm);
    println!("  Remaining RPD: {}", status.remaining_rpd);

    // Simulate some API usage
    println!("\nSimulating API requests...");
    for i in 1..=5 {
        quota_tracker.record_request(100 + i * 50); // Record tokens used
        println!("\nAfter request {}:", i);
        let status = quota_tracker.get_status();
        println!("  RPM usage: {:.1}%", status.rpm_usage);
        println!("  RPD usage: {:.1}%", status.rpd_usage);
        println!("  TPM usage: {:.1}%", status.tpm_usage);
        println!("  Status: {}", status.format_message());

        if status.warning {
            println!("  ⚠️ Warning: Approaching quota limits!");
        }
    }

    // Check final quota status
    let final_status = quota_tracker.get_status();
    println!("\n📊 Final quota status:");
    println!(
        "  RPM: {:.1}% used ({} remaining)",
        final_status.rpm_usage, final_status.remaining_rpm
    );
    println!(
        "  RPD: {:.1}% used ({} remaining)",
        final_status.rpd_usage, final_status.remaining_rpd
    );
    println!("  TPM: {:.1}% used", final_status.tpm_usage);

    if final_status.warning {
        println!("\n⚠️ Warning: You're approaching quota limits!");
        println!("Consider waiting before making more requests.");
    } else {
        println!("\n✓ All quota limits OK");
    }

    Ok(())
}