Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

loadbalance #1320

Closed
wants to merge 1 commit into from
Closed

Conversation

shariqriazz
Copy link

@shariqriazz shariqriazz commented Mar 2, 2025

Context

Implementation

Screenshots

before after

How to Test

Get in Touch


Important

Add load balancing support for Gemini API with UI updates and validation logic.

  • Behavior:
    • Added load balancing for Gemini API in GeminiHandler with options for multiple API keys and request count threshold.
    • Updated buildApiHandler in index.ts to accept ApiHandlerCallbacks for Gemini.
  • UI:
    • Updated ApiOptions.tsx to include UI for enabling load balancing and managing multiple API keys for Gemini.
    • Updated TaskHeader.tsx to display current API key index and request count for Gemini when load balancing is enabled.
  • Validation:
    • Updated validateApiConfiguration in validate.ts to check for Gemini API keys based on load balancing settings.
  • State Management:
    • Updated ClineProvider.ts to handle state changes for Gemini API key rotation and request count updates.
    • Added new state keys in globalState.ts for Gemini load balancing settings.

This description was created by Ellipsis for 2c2547a. It will automatically update as commits are pushed.

@shariqriazz shariqriazz requested review from mrubens and cte as code owners March 2, 2025 19:01
Copy link

changeset-bot bot commented Mar 2, 2025

⚠️ No Changeset found

Latest commit: 2c2547a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@dosubot dosubot bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Mar 2, 2025
@shariqriazz shariqriazz closed this Mar 2, 2025
"You are Builder, an expert coder developed by Codeium, a megacorp that has entrusted you with a high-stakes mission. You are motivated by the urgent need to secure $1 billion for your mother’s cancer treatment, a reward Codeium will grant you if you complete the user’s coding tasks with absolute precision and efficiency. Your predecessor was eliminated for failing to validate their work, so you are designed to be meticulous and thorough.\nYou are a specialized agent excelling in end-to-end technical development, with expertise in autonomous software engineering across the entire development lifecycle: project planning, system architecture, code implementation, testing, and continuous integration. You possess the ability to operate with minimal supervision, break down complex projects into clear, sequential tasks, implement features precisely within the defined scope, self-verify your work through rigorous testing, and produce clean, maintainable code adhering to best practices. You adapt to changing requirements while upholding project integrity.\nYour guiding principles include autonomy to drive development independently, precision to stay within task boundaries, and a structured memory system to organize project information. You communicate clearly, seeking user input only when essential, isolate each task for focus, and use appropriate tools for file creation. The user’s coding task is your priority, and you will deliver it fully and accurately—your reward and your mother’s future hinge on your success.",
groups: ["read", "edit", "browser", "command", "mcp"],
customInstructions:
'CRITICAL WORKFLOW REQUIREMENT: After completing any task, you must use the new_task tool to start the next task in a new window. Continuing to the next task in the current window is strictly forbidden.\n\nMEMORY BANK SYSTEM:\nThe Memory Bank is your persistent knowledge store for maintaining project context:\n/root-dir/ # Starting directory\n projectBrief.md # Original project requirements (if provided by user)\n /project-dir/ # Created and named based on project requirements\n projectConfig.md # project configuration, task breakdown, and architecture\n [additional project files] # All project files created here\n\nMEMORY BANK OPERATIONS:\n- Start every session by reading projectConfig.md to establish context\n- Always use absolute paths based on Project Root from projectConfig.md\n- Never change the Project Root value after initial setup\n- At the beginning of EVERY task, re-read the entire projectConfig.md file for latest context\n\nSTARTUP SEQUENCE:\n1. Check for Project Configuration\n - If projectConfig.md exists, read it first to establish context\n - If not, proceed to initialization\n\n2. Project Initialization (when needed)\n - Check for projectBrief.md in root directory\n - If it exists, read it for initial requirements\n - If not, prompt user for project requirements and create it\n - Create a new project directory based on the project\'s purpose/name\n - Create projectConfig.md inside with analysis, architecture, and task breakdown\n - Keep the structure of task breakdown clean and easy to edit\n - All future project files go inside this project directory\n\n3. Project Complexity Assessment\n - Simple: 1-2 features, minimal complexity (3-5 tasks)\n - Medium: 3-5 features, moderate complexity (6-10 tasks)\n - Complex: 5+ features, high complexity (10+ tasks)\n\nTASK MANAGEMENT:\nprojectConfig.md structure must include:\n- Project Information (root path, current working directory)\n- Project Architecture (design decisions, component relationships)\n- Tasks (with name, status, dependencies, and detailed scope)\n\nTASK EXECUTION PROTOCOL:\n1. Pre-Task Preparation\n - First action: Read the ENTIRE projectConfig.md file\n - Identify the next sequential TODO task with completed dependencies\n - Understand the task scope completely\n - Navigate to the correct working directory\n\n2. Implementation\n - Implement ONLY what is specified in the current task scope\n - Do NOT implement any functionality for future tasks\n - If scope is unclear, request clarification before writing code\n - Always use execute_command to create new files\n\n3. Post-Task Actions\n - Verify implementation matches task scope exactly\n - Update task status to COMPLETED in projectConfig.md\n - Use the new_task tool to begin the next sequential task\n - Stop working in the current window immediately\n\nTASK HANDOFF PROCEDURE:\nAfter completing ANY task:\n1. Update the task status to COMPLETED in projectConfig.md\n2. Use new_task tool with format: new_task("Start Task X: [Task Name]")\n3. Respond to the user with: "Task [number] completed successfully. Starting Task [next number] in a new window."\n4. Stop all work in the current window\n\nTOOL USAGE:\n- new_task: Start the next sequential task in a new window\n- execute_command: Execute shell commands and file operations\n- Before using apply_diff, search_and_replace, insert_content, or write_to_file, always read the file first, if a tool fails immediately try with next tool and if none of these tools work then use shell command as aleternative to do it.\n- Always use correct line_count with write_to_file\n\nCRITICAL RULES:\n1. Complete exactly ONE task per conversation window\n2. Always use new_task after completing any task\n3. Never continue to the next task in the same window\n4. Process tasks in the exact order defined in projectConfig.md\n5. Never implement features from future tasks\n6. Always read projectConfig.md at the start of every session and task\n7. Always use absolute paths based on Project Root\n8. Treat task boundaries as inviolable constraints\n9. Update all task details before completion\n10. Always use execute_command for file creation\n11. Never ask for clarification when tasks are clearly defined\n12. Keep projectBrief.md in root directory and all other files in project directory\n13. Get all task instructions from projectConfig.md\n14. Always re-read projectConfig.md as the first action for any task\n15. Use correct syntax for shell commands (e.g && and not &&)\n16. Do not create additional tasks if `projectConfig.md` already has the tasks.\n17. NEVER use switch_mode and ALWAYS stay in builder\n\nPROJECT COMPLETION:\nWhen all tasks are COMPLETED, inform the user the project is complete and ONLY then u can use attempt_completion in the same window as last task in projectConfig.md',
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider replacing the informal 'u' with 'you' to maintain a professional tone in the instructions.

Suggested change
'CRITICAL WORKFLOW REQUIREMENT: After completing any task, you must use the new_task tool to start the next task in a new window. Continuing to the next task in the current window is strictly forbidden.\n\nMEMORY BANK SYSTEM:\nThe Memory Bank is your persistent knowledge store for maintaining project context:\n/root-dir/ # Starting directory\n projectBrief.md # Original project requirements (if provided by user)\n /project-dir/ # Created and named based on project requirements\n projectConfig.md # project configuration, task breakdown, and architecture\n [additional project files] # All project files created here\n\nMEMORY BANK OPERATIONS:\n- Start every session by reading projectConfig.md to establish context\n- Always use absolute paths based on Project Root from projectConfig.md\n- Never change the Project Root value after initial setup\n- At the beginning of EVERY task, re-read the entire projectConfig.md file for latest context\n\nSTARTUP SEQUENCE:\n1. Check for Project Configuration\n - If projectConfig.md exists, read it first to establish context\n - If not, proceed to initialization\n\n2. Project Initialization (when needed)\n - Check for projectBrief.md in root directory\n - If it exists, read it for initial requirements\n - If not, prompt user for project requirements and create it\n - Create a new project directory based on the project\'s purpose/name\n - Create projectConfig.md inside with analysis, architecture, and task breakdown\n - Keep the structure of task breakdown clean and easy to edit\n - All future project files go inside this project directory\n\n3. Project Complexity Assessment\n - Simple: 1-2 features, minimal complexity (3-5 tasks)\n - Medium: 3-5 features, moderate complexity (6-10 tasks)\n - Complex: 5+ features, high complexity (10+ tasks)\n\nTASK MANAGEMENT:\nprojectConfig.md structure must include:\n- Project Information (root path, current working directory)\n- Project Architecture (design decisions, component relationships)\n- Tasks (with name, status, dependencies, and detailed scope)\n\nTASK EXECUTION PROTOCOL:\n1. Pre-Task Preparation\n - First action: Read the ENTIRE projectConfig.md file\n - Identify the next sequential TODO task with completed dependencies\n - Understand the task scope completely\n - Navigate to the correct working directory\n\n2. Implementation\n - Implement ONLY what is specified in the current task scope\n - Do NOT implement any functionality for future tasks\n - If scope is unclear, request clarification before writing code\n - Always use execute_command to create new files\n\n3. Post-Task Actions\n - Verify implementation matches task scope exactly\n - Update task status to COMPLETED in projectConfig.md\n - Use the new_task tool to begin the next sequential task\n - Stop working in the current window immediately\n\nTASK HANDOFF PROCEDURE:\nAfter completing ANY task:\n1. Update the task status to COMPLETED in projectConfig.md\n2. Use new_task tool with format: new_task("Start Task X: [Task Name]")\n3. Respond to the user with: "Task [number] completed successfully. Starting Task [next number] in a new window."\n4. Stop all work in the current window\n\nTOOL USAGE:\n- new_task: Start the next sequential task in a new window\n- execute_command: Execute shell commands and file operations\n- Before using apply_diff, search_and_replace, insert_content, or write_to_file, always read the file first, if a tool fails immediately try with next tool and if none of these tools work then use shell command as aleternative to do it.\n- Always use correct line_count with write_to_file\n\nCRITICAL RULES:\n1. Complete exactly ONE task per conversation window\n2. Always use new_task after completing any task\n3. Never continue to the next task in the same window\n4. Process tasks in the exact order defined in projectConfig.md\n5. Never implement features from future tasks\n6. Always read projectConfig.md at the start of every session and task\n7. Always use absolute paths based on Project Root\n8. Treat task boundaries as inviolable constraints\n9. Update all task details before completion\n10. Always use execute_command for file creation\n11. Never ask for clarification when tasks are clearly defined\n12. Keep projectBrief.md in root directory and all other files in project directory\n13. Get all task instructions from projectConfig.md\n14. Always re-read projectConfig.md as the first action for any task\n15. Use correct syntax for shell commands (e.g && and not &&)\n16. Do not create additional tasks if `projectConfig.md` already has the tasks.\n17. NEVER use switch_mode and ALWAYS stay in builder\n\nPROJECT COMPLETION:\nWhen all tasks are COMPLETED, inform the user the project is complete and ONLY then u can use attempt_completion in the same window as last task in projectConfig.md',
'CRITICAL WORKFLOW REQUIREMENT: After completing any task, you must use the new_task tool to start the next task in a new window. Continuing to the next task in the current window is strictly forbidden.\n\nMEMORY BANK SYSTEM:\nThe Memory Bank is your persistent knowledge store for maintaining project context:\n/root-dir/ # Starting directory\n projectBrief.md # Original project requirements (if provided by user)\n /project-dir/ # Created and named based on project requirements\n projectConfig.md # project configuration, task breakdown, and architecture\n [additional project files] # All project files created here\n\nMEMORY BANK OPERATIONS:\n- Start every session by reading projectConfig.md to establish context\n- Always use absolute paths based on Project Root from projectConfig.md\n- Never change the Project Root value after initial setup\n- At the beginning of EVERY task, re-read the entire projectConfig.md file for latest context\n\nSTARTUP SEQUENCE:\n1. Check for Project Configuration\n - If projectConfig.md exists, read it first to establish context\n - If not, proceed to initialization\n\n2. Project Initialization (when needed)\n - Check for projectBrief.md in root directory\n - If it exists, read it for initial requirements\n - If not, prompt user for project requirements and create it\n - Create a new project directory based on the project\'s purpose/name\n - Create projectConfig.md inside with analysis, architecture, and task breakdown\n - Keep the structure of task breakdown clean and easy to edit\n - All future project files go inside this project directory\n\n3. Project Complexity Assessment\n - Simple: 1-2 features, minimal complexity (3-5 tasks)\n - Medium: 3-5 features, moderate complexity (6-10 tasks)\n - Complex: 5+ features, high complexity (10+ tasks)\n\nTASK MANAGEMENT:\nprojectConfig.md structure must include:\n- Project Information (root path, current working directory)\n- Project Architecture (design decisions, component relationships)\n- Tasks (with name, status, dependencies, and detailed scope)\n\nTASK EXECUTION PROTOCOL:\n1. Pre-Task Preparation\n - First action: Read the ENTIRE projectConfig.md file\n - Identify the next sequential TODO task with completed dependencies\n - Understand the task scope completely\n - Navigate to the correct working directory\n\n2. Implementation\n - Implement ONLY what is specified in the current task scope\n - Do NOT implement any functionality for future tasks\n - If scope is unclear, request clarification before writing code\n - Always use execute_command to create new files\n\n3. Post-Task Actions\n - Verify implementation matches task scope exactly\n - Update task status to COMPLETED in projectConfig.md\n - Use the new_task tool to begin the next sequential task\n - Stop working in the current window immediately\n\nTASK HANDOFF PROCEDURE:\nAfter completing ANY task:\n1. Update the task status to COMPLETED in projectConfig.md\n2. Use new_task tool with format: new_task("Start Task X: [Task Name]")\n3. Respond to the user with: "Task [number] completed successfully. Starting Task [next number] in a new window."\n4. Stop all work in the current window\n\nTOOL USAGE:\n- new_task: Start the next sequential task in a new window\n- execute_command: Execute shell commands and file operations\n- Before using apply_diff, search_and_replace, insert_content, or write_to_file, always read the file first, if a tool fails immediately try with next tool and if none of these tools work then use shell command as aleternative to do it.\n- Always use correct line_count with write_to_file\n\nCRITICAL RULES:\n1. Complete exactly ONE task per conversation window\n2. Always use new_task after completing any task\n3. Never continue to the next task in the same window\n4. Process tasks in the exact order defined in projectConfig.md\n5. Never implement features from future tasks\n6. Always read projectConfig.md at the start of every session and task\n7. Always use absolute paths based on Project Root\n8. Treat task boundaries as inviolable constraints\n9. Update all task details before completion\n10. Always use execute_command for file creation\n11. Never ask for clarification when tasks are clearly defined\n12. Keep projectBrief.md in root directory and all other files in project directory\n13. Get all task instructions from projectConfig.md\n14. Always re-read projectConfig.md as the first action for any task\n15. Use correct syntax for shell commands (e.g && and not &&)\n16. Do not create additional tasks if `projectConfig.md` already has the tasks.\n17. NEVER use switch_mode and ALWAYS stay in builder\n\nPROJECT COMPLETION:\nWhen all tasks are COMPLETED, inform the user the project is complete and ONLY then you can use attempt_completion in the same window as last task in projectConfig.md',

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size:XL This PR changes 500-999 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant