An Actual AI Agent for Competitive Programming and Problem Solving
Difference between en16 and en17, changed 2 character(s)

Hello Codeforces!↵


Yes. It is me again :D↵

I’m excited to share a project I've been working on at [Repovive](https://repovive.com), with the Great [user:Shayan,2025-12-19].↵

We all know the struggle: you're stuck on a problem, the editorial is confusing (or non-existent), and you just need a *small hint* to nudge you in the right direction—not the full solution. That's exactly what this tool is built for.↵

## What is it?↵

The new addition to the  Repovive Chorme Extension, an AI Agent, that embeds a context-aware AI chat directly into Codeforces (and AtCoder/LeetCode) problem pages.↵

It isn't just a wrapper around ChatGPT, nor is it a proprietary "Black Box" model trained from scratch.↵

*   **Powered by Gemini**: It leverages the Google Gemini API (`gemini-pro`/`flash`) for reasoning.↵

*   **Your Own Keys**: You use your own free API key from Google AI Studio. This means no subscription fees and total control over your usage.↵

*   **Context Aware**: It specifically understands competitive programming contexts:↵
    *   It reads the problem statement, constraints, and test cases automatically.↵
    *   It fetches **Accepted solutions from top rankers** (Red Coders) to understand the *optimal* approach.↵
    *   It simulates a "Socratic Coach": it refuses to give you the code initially. Instead, it asks you guiding questions to help you derive the solution yourself.↵

![First Message Logic](/predownloaded/ef/91/ef9120c0b478fa9ba0fbeca16ee80ec8dc471ba1.png)↵

## Platform Deep Dive: Under the Hood↵

Each platform requires a unique engineering approach. Here is how we handle the "Big Three":↵

### 1. Codeforces ↵
![Codeforces Support](/predownloaded/34/7b/347be10652332e56e9be06e1c6ac2fe48f06d09d.png)↵

*   **How it works**:↵
    *   **Parsing**: We use the official `codeforces.com/api` to fetch problem metadata.↵
    *   **Solution Mining**: We identify the contest "Winners" via the API, find their submission IDs, and then get their source code.↵
    *   **Anti-Cheat**: We detect the specific `.countdown` timer element used in active rounds.↵
*   **Tradeoffs & Limitations**:↵
    *   **API Rate Limits**: Codeforces has a strict 5 req/sec limit. If the site is under load (e.g., right after a contest), the "Solution Mining" might fail or be slow.↵
    *   **Old Contests**: Some very old problems ($< 2015$) might have missing metadata or different DOM structures that break parsing.↵

### 2. AtCoder ↵
![AtCoder Supoort](/predownloaded/3e/9b/3e9b6620976b8acf18bd8505aad11a85ce324973.png) ↵

*   **How it works**:↵
    *   **Parsing**: Since AtCoder has no official API, we built a robust HTML parser that reads the DOM directly to extract inputs/outputs.↵
    *   **Solution Mining**: The agent navigates to the submissions page, filters for "Accepted" + "C++" + "Fastest", and gets the code from the top result.↵
*   **Tradeoffs & Limitations**:↵
    *   **Login Wall**: For some contests, you *must* be logged in to view submissions. The agent might show a "Cookie Error" if it can't access the submission page (it tries to inherit your session, but browser security can block this).↵
    *   **Fragility**: If AtCoder changes their website UI (class names), the geter will break until we update the extension.↵

### 3. LeetCode ↵
![LeetCode Support](/predownloaded/75/07/7507b77f0dca9d1dd20fd76df893588df67f5387.png)↵

*   **How it works**:↵
    *   **Parsing**: We reverse-engineered LeetCode's GraphQL API to fetch clean problem questions without parsing messy HTML.↵
    *   **Knowledge Source**:↵
        *   **Old Problems (ID < 3200)**: Since these are in the LLM's training data, we rely on the model's internal knowledge for faster responses.↵
        *   **New Problems**: We fetch the top-voted "Community Solution" via GraphQL to give the model context on brand new questions.↵
    *   **Anti-Cheat**: We strictly disable the agent on any URL containing `/contest/`.↵
*   **Tradeoffs & Limitations**:↵
    *   **SPA Navigation**: LeetCode is a Single Page Application (React). Sometimes the button might disappear when navigating between problems; a page refresh fixes this.↵
    *   **Community Quality**: For new problems, (ID > 3200), it is unlikely to get a solution, because the only way is to use leetcode GraphQL API, there is no official documentation, so we are still working on the best way to get a solution to feed the AI.↵

#### Customizing Your Experience↵

![Settings Dialog](/predownloaded/59/b1/59b1437b772c2e946d2dd1a64a23125f8b9c076a.png)↵

The extension also includes deep theming support to match your system style!↵

## Legal & Ethical Notices (Anti-Cheat)↵

**Crucial Point**: We take fair play seriously.↵

*   **Strict Anti-Cheat**: The agent is programmed to **automatically disable itself** during live contests.↵
    *   **Codeforces**: It detects the server-side countdown timer for active rounds.↵
    *   **AtCoder**: It checks the contest timer element.↵
    *   **LeetCode**: It hard-blocks any URL containing `/contest/`.↵
*   **Purpose**: This tool is strictly for **upsolving** and **practice**. Using AI assistance during a rated contest is cheating and will get you banned. Don't do it.↵

### Privacy & Security↵
*   **No Data Collection**: Repovive **DOES NOT** collect, store, or transmit your data to its servers. We do not access your cookies or personal information.↵
*   **Local Storage Only**: Your API keys, settings, and chat history are stored exclusively in your browser's local storage. Nothing leaves your machine except the API request to Gemini.↵

## How to Get Started↵

1.  **Install Repovive**: [Repovive Competitive Programming](https://chromewebstore.google.com/detail/Repovive%20Competitive%20Programming/dgpbaoocbmidlfchoplgcjeelbihjeoi)↵
2.  **Get a Gemini API Key**:↵
    *   Go to **[Google AI Studio](https://aistudio.google.com/app/apikey)** and sign in with your Google account.↵
    *   Click on the blue **"Get API key"** button in the top-left sidebar.↵
    *   Click **"Create API key"**. You might need to select "Create API key in new project" if you don't have one.↵
    ↵
    ![Google AI Studio Dashboard](/predownloaded/b4/6e/b46e33b17a1af0f391655779dacdda5c212c062b.png)↵
    ↵
    *   Copy the key that starts with `AIza...`.↵
    ↵
    ![Copying the API Key](/predownloaded/3b/58/3b5833b145a6e04f085975c18d71e7b2c284e2ab.png)↵
3.  **Open a Problem**: Navigate to any Codeforces problem.↵
4.  **Click the Sparkle**: You'll see the floating AI button. Click it, paste your API key once, and start upsolving!↵

## Known Issues & Roadmap↵

Since this is an early beta, you might encounter:↵

*   **Rate Limits**: If too many people use it at once, Codeforces API might slow down context fetching.↵

*   **Parsing Errors**: Extremely old contests (10+ years ago) might have broken HTML structures.↵

*   **LeetCode Spa**: On LeetCode, if the button disappears after navigating, just refresh the page.↵

*   **Gemini Free Limits**: The Google Gemini Free Tier has usage limits (RPM/TPM). ↵

    *   If you see `ResourceExhausted` or `429` errors, it means you've hit the limit.↵

    *   **Auto-Downgrade Feature**: To keep you coding, the agent will **automatically downgrade** from `Gemini Pro` to `Gemini Flash`, then downgrade to `Gemini Flash-Light` if it detects quota issues. It automatically tries to upgrade back after 6 hours.↵

**What's Next?** ↵

*   Better support for LeetCode new problems (ID > 3200).↵
*   More robust cookie handling for AtCoder login walls.↵
*   Integrating a "Hint Mode" that blurs the code mining output initially.↵

## Feedback & Support↵

We need your help to make this better!↵

*   **Found a bug?** Please report it to me on Codeforces: [user:Hmzaawy,2025-12-19].↵

*   **Have a suggestion?** Message me directly on Codeforces:  [user:Hmzaawy,2025-12-19].↵

*   **Wanna contribute?** Message me directly on Codeforces:  [user:Hmzaawy,2025-12-19]. with your idea you want to contribute!↵

___↵

We built this to make upsolving less frustrating and more educational. We'd love to hear your feedback!

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en21 English Hmzaawy 2025-12-26 15:22:05 94 Tiny change: '! \n```\n\n```\nC' -> '! \n```\n___\n\n```\nC'
en20 English Hmzaawy 2025-12-26 15:20:41 0
en19 English Hmzaawy 2025-12-26 15:20:41 23
en18 English Hmzaawy 2025-12-26 15:20:03 750
en17 English Hmzaawy 2025-12-23 20:09:36 2 Tiny change: '\nHello Code' -> 'Hello Code' (published)
en16 English Hmzaawy 2025-12-23 19:35:26 77
en15 English Hmzaawy 2025-12-23 19:35:11 11
en14 English Hmzaawy 2025-12-19 20:14:03 6
en13 English Hmzaawy 2025-12-19 19:20:29 2 Tiny change: '76a.png)\nThe exte' -> '76a.png)\n\nThe exte'
en12 English Hmzaawy 2025-12-19 19:19:28 20
en11 English Hmzaawy 2025-12-19 19:16:44 2 Tiny change: '387.png)\n* **Ho' -> '387.png)\n\n* **Ho'
en10 English Hmzaawy 2025-12-19 19:15:57 6
en9 English Hmzaawy 2025-12-19 19:13:04 2 Tiny change: 'ith the Grate [user:Sha' -> 'ith the Great [user:Sha'
en8 English Hmzaawy 2025-12-19 18:55:29 164
en7 English Hmzaawy 2025-12-19 18:54:23 1583
en6 English Hmzaawy 2025-12-19 18:21:45 180
en5 English Hmzaawy 2025-12-19 18:12:28 566
en4 English Hmzaawy 2025-12-19 18:11:33 560
en3 English Hmzaawy 2025-12-19 18:06:50 1850
en2 English Hmzaawy 2025-12-19 17:32:08 4998
en1 English Hmzaawy 2025-12-19 17:23:15 97 Initial revision (saved to drafts)