Skip to content

fix: resolve executor compile regressions#264

Closed
KooshaPari wants to merge 421 commits intorouter-for-me:mainfrom
KooshaPari:ci-compile-fix-clean
Closed

fix: resolve executor compile regressions#264
KooshaPari wants to merge 421 commits intorouter-for-me:mainfrom
KooshaPari:ci-compile-fix-clean

Conversation

@KooshaPari
Copy link
Copy Markdown

Fix recent compile regressions from generated executor/transpiler edits: mapModelToKiro syntax error recovery, duplicate GitHub Copilot method removal, Codex websocket logger signature fix, and claude token path variable shadowing.

KooshaPari and others added 30 commits February 22, 2026 16:36
# Conflicts:
#	docs/planning/reports/issue-wave-gh-next21-lane-6.md
#	pkg/llmproxy/api/modules/amp/routes_test.go
These fields are not supported by Codex Responses API and cause upstream errors.

Fixes: router-for-me#1667
- Replace manual prefix/suffix checks with strings.TrimPrefix/TrimSuffix
- Remove unused functions and variables in kiro_executor.go and request_logger.go
- Move default case to the end of switch statement in kiro_executor.go
- Fix function signatures and call sites in kiro_executor.go where arguments were immediately overwritten

Co-authored-by: Cursor <cursoragent@cursor.com>
- Added unit tests for internal/auth packages (codex, copilot, gemini, kiro).
- Added unit tests for internal/runtime/executor, specifically for Kiro executor.
- Added unit tests for various internal translators.
- Improved internal/api and sdk test coverage.
- Fixed a race condition in Kiro social authentication callback server.
- Updated .gitignore to exclude build artifacts and coverage files.
- Cleaned up go.mod and go.sum with go mod tidy.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…rs and fix kiro_websearch functions

This commit:
- Updates cmd/codegen/main.go to support multiple templates and directories.
- Embeds GeneratedConfig in internal/config/Config.
- Restores SSE and message ID functions in internal/translator/kiro/claude/kiro_websearch.go.
- Adds pkg/llmproxy/ directory structure for shared components.
- Fixes missing strings import in generated config files.

Co-authored-by: Cursor <cursoragent@cursor.com>
Renamed references to CLIProxyAPIPlus to cliproxyapi++ (display) and cliproxyapi-plusplus (technical). Updated GitHub remote and internal URLs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
KooshaPari and others added 26 commits February 22, 2026 21:43
…260223-v2

docs: replace marketing language with concise technical wording
…-20260223

merge: absorb heliosharness parity branch functional delta
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @KooshaPari, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request represents a significant step in enhancing the project's architecture, developer experience, and operational robustness. It transitions core components to a library-first design, introduces a comprehensive documentation framework, and establishes robust CI/CD pipelines and quality gates. These changes aim to improve reusability, maintainability, and the overall reliability of the proxy, while also streamlining development and release processes.

Highlights

  • Architectural Refactoring: The core proxy logic has been refactored from the internal/ package to a public, reusable pkg/llmproxy module, enabling embedding into other Go applications and clearer module boundaries.
  • Enhanced CI/CD and Quality Gates: New GitHub Actions scripts and configuration files (.github/scripts, .golangci.yml, Taskfile.yml) have been introduced to enforce code quality, manage releases, check external endpoints, and validate documentation snippets.
  • Comprehensive Documentation Overhaul: A new VitePress-based documentation site has been set up, including detailed guides for getting started, installation, provider usage, API references, feature guides, and audience-specific docsets, significantly improving project clarity and maintainability.
  • Improved Configuration and Deployment: The Dockerfile and docker-compose.yml have been updated with new naming conventions, environment variable overrides, and a new docker-init.sh script for out-of-the-box Docker deployments. Configuration path resolution and strict validation have also been added.
  • New Developer Tools: Several new Go command-line tools (cmd/boardsync, cmd/codegen, cmd/releasebatch) have been added to automate tasks such as syncing GitHub issues to planning boards, generating code, and managing release tags and notes.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .env.example
    • Added Docker runtime configuration variables as commented examples.
  • .github/ISSUE_TEMPLATE/bug_report.md
    • Updated bug report template with new sections for cliproxyapi++ configuration and environment information.
    • Revised wording for clarity and to request more specific diagnostic details.
  • .gitignore
    • Added new binary names (cli-proxy-api-plus, cli-proxy-api-plus-integration-test, *.out, coverage_*.out) to ignore list.
    • Removed several generic generated content patterns (bin/*, logs/*, conv/*, temp/*, refs/*, tmp/*) and static assets (static/*).
    • Added specific paths for Git cache (.git-cache/), Cursor storage (pkg/llmproxy/cursorstorage/*), and documentation build outputs (docs/.vitepress/dist/, docs/node_modules/).
    • Added pkg/llmproxy/api/logs/ to the ignore list.
  • .goreleaser.yml
    • Renamed build ID from cli-proxy-api-plus to cliproxyapi-plusplus.
    • Updated binary name from cli-proxy-api-plus to cliproxyapi++.
    • Modified version string from {{.Version}}-plus to {{.Version}}-++.
  • Dockerfile
    • Updated build output binary name from CLIProxyAPIPlus to cliproxyapi++.
    • Added sed package to the Alpine base image for the entrypoint script.
    • Copied docker-init.sh to the Docker image.
    • Exposed additional default ports (8085, 1455, 54545, 51121, 11451).
    • Added new environment variables for config file paths, auth directory, and logs directory.
    • Introduced runtime configuration environment variables (CLIPROXY_HOST, CLIPROXY_PORT, etc.) as comments.
    • Changed the default command to use docker-init.sh as the entrypoint.
  • LICENSE
    • Added a new copyright entry for KooshaPari for the year 2026-present.
  • README.md
    • Renamed the project from 'CLIProxyAPI Plus' to 'cliproxyapi++'.
    • Added Go Report Card, License, Docker Pulls, and GitHub Release badges.
    • Rewrote the project overview to highlight focus on operational controls, auth lifecycle, and library-first architecture.
    • Introduced a detailed feature comparison matrix between Mainline, CLIProxyAPI+, and cliproxyapi++.
    • Added a new 'Technical Differences' section detailing architectural evolution, authentication & lifecycle management, security controls, and operations.
    • Updated the 'Quick Deployment with Docker' section with the new project name and Docker image.
    • Added a 'Provider-First Quickstart' section with minimal configuration patterns and validation steps.
    • Expanded 'Provider and Routing Capabilities' to list direct, aggregators, and OAuth/session providers.
    • Added a comprehensive 'Contributing' section with strict quality gates and daily QOL flows.
    • Introduced an extensive 'Documentation' section with links to various guides, API references, planning boards, and docsets.
    • Added a 'Docs Deploy' section for local VitePress and GitHub Pages deployment instructions.
  • README_CN.md
    • Updated project name to 'cliproxyapi++ 🚀' and added badges.
    • Rewrote the overview to emphasize performance, security hardening, and library-first design.
    • Introduced a detailed feature comparison matrix for Chinese users.
    • Added a 'Technical Differences and Security Hardening' section.
    • Updated Docker quickstart commands and configuration examples.
    • Expanded 'Advanced Usage' to detail extended provider support and API specifications.
    • Updated 'Contributing Guide' with quality gate details.
    • Updated 'Open Source License' section.
  • cmd/server/main.go
    • Updated all internal package imports to pkg/llmproxy.
    • Added a new command-line flag --setup for a guided provider setup wizard.
    • Introduced new command-line flags for various provider logins: --roo-login, --minimax-login, --deepseek-login, --groq-login, --mistral-login, --siliconflow-login, --openrouter-login, --together-login, --fireworks-login, --novita-login.
    • Added validation for mutually exclusive Kiro incognito flags (--incognito and --no-incognito).
    • Updated the configuration file path resolution to use resolveDefaultConfigPath for more robust discovery.
    • Integrated new login handlers for the newly added provider flags.
  • config.example.yaml
    • Updated default string values from single quotes to double quotes (e.g., host: '' to host: "").
    • Removed the passthrough-headers configuration option.
    • Added extensive new commented configuration blocks for various providers: Cursor, MiniMax, Roo Code, Kilo, DeepSeek, Groq, Mistral AI, SiliconFlow, OpenRouter, Together AI, Fireworks AI, Novita AI.
    • Added a new commented section for Global OAuth upstream URL overrides.
  • docker-compose.yml
    • Updated the Docker image name from eceasy/cli-proxy-api-plus:latest to KooshaPari/cliproxyapi-plusplus:latest.
    • Changed the container name from cli-proxy-api-plus to cliproxyapi++.
    • Added commented environment variables for Docker runtime configuration overrides (CLIPROXY_HOST, CLIPROXY_PORT, etc.).
Ignored Files
  • Ignored by pattern: .github/workflows/** (8)
    • .github/workflows/ci-rerun-flaky.yml
    • .github/workflows/codeql.yml
    • .github/workflows/pr-path-guard.yml
    • .github/workflows/pr-test-build.yml
    • .github/workflows/release-batch.yaml
    • .github/workflows/release.yaml
    • .github/workflows/required-check-names-guard.yml
    • .github/workflows/vitepress-pages.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The pull request successfully migrates core logic to a public pkg/llmproxy package, improving reusability and following a library-first architecture. However, it introduces several critical compilation errors in cmd/server/main.go due to undefined variables and functions in the newly added configuration path inspection block. Additionally, the linter configuration in .golangci.yml explicitly disables shadowing checks, which contradicts the PR's objective of resolving variable shadowing issues.

Comment on lines +9 to +44
func resolveDefaultConfigPath(wd string, isCloudDeploy bool) string {
fallback := filepath.Join(wd, "config.yaml")
candidates := make([]string, 0, 12)

addEnvCandidate := func(key string) {
value := strings.TrimSpace(os.Getenv(key))
if value != "" {
candidates = append(candidates, value)
}
}
addEnvCandidate("CONFIG")
addEnvCandidate("CONFIG_PATH")
addEnvCandidate("CLIPROXY_CONFIG")
addEnvCandidate("CLIPROXY_CONFIG_PATH")

candidates = append(candidates, fallback)
// If config.yaml is mounted as a directory (common Docker mis-mount),
// prefer the nested config/config.yaml path before failing on the directory.
candidates = append(candidates, filepath.Join(wd, "config", "config.yaml"))
if isCloudDeploy {
candidates = append(candidates,
"/CLIProxyAPI/config.yaml",
"/CLIProxyAPI/config/config.yaml",
"/config/config.yaml",
"/app/config.yaml",
"/app/config/config.yaml",
)
}

for _, candidate := range candidates {
if isReadableConfigFile(candidate) {
return candidate
}
}
return fallback
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

critical

The function resolveDefaultConfigPathWithCandidates is called in main.go but is not defined here. It appears the implementation of this helper was omitted from the PR, which will lead to a compilation error.

Comment on lines +291 to +303
if showConfigPaths {
selected, candidates := resolveDefaultConfigPathWithCandidates(wd, isCloudDeploy)
fmt.Println("Config path candidates:")
if strings.TrimSpace(configPath) != "" {
fmt.Printf("* %s [from --config]\n", configPath)
}
printConfigCandidates(selected, candidates)
fmt.Printf("Selected: %s\n", selected)
if _, err := fmt.Fprintf(os.Stdout, "Template: %s\n", filepath.Join(wd, "config.example.yaml")); err != nil {
log.Errorf("failed to print config template path: %v", err)
}
return
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

critical

This block introduces several undefined symbols that will cause compilation errors:

  1. showConfigPaths is used but not declared as a variable or flag.
  2. resolveDefaultConfigPathWithCandidates is called but not defined.
  3. printConfigCandidates is called but not defined.

It appears that the implementation of these helpers and the corresponding flag definition were omitted from this PR.

Comment on lines +47 to +50
govet:
# Report about shadowed variables
disable:
- shadow
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The shadow check is explicitly disabled within govet. Given that the pull request description mentions fixing variable shadowing issues (e.g., 'claude token path variable shadowing'), it is highly recommended to enable this check to prevent similar regressions in the future.

References
  1. Standard Go practice encourages using tools like govet with the shadow analyzer enabled to detect accidental variable shadowing. (link)
  2. Shadowing variables can lead to subtle bugs where a local variable unintentionally hides a variable in an outer scope, making the code harder to reason about and maintain.

@KooshaPari KooshaPari closed this Feb 23, 2026
@KooshaPari KooshaPari deleted the ci-compile-fix-clean branch February 23, 2026 05:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants