Skip to content

chore: stabilize build pass and unify service/runtime artifacts#272

Closed
KooshaPari wants to merge 1 commit intorouter-for-me:mainfrom
KooshaPari:ci-compile-fix-clean-single
Closed

chore: stabilize build pass and unify service/runtime artifacts#272
KooshaPari wants to merge 1 commit intorouter-for-me:mainfrom
KooshaPari:ci-compile-fix-clean-single

Conversation

@KooshaPari
Copy link

temp

@gemini-code-assist
Copy link

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 rebrands and significantly enhances the CLIProxyAPI project into cliproxyapi++, focusing on a library-first architecture. It introduces a new CLI management tool, streamlines the build and release pipelines, and expands support for various LLM providers with robust authentication and operational controls. The changes aim to improve stability, reusability, and maintainability, while also providing comprehensive documentation for users and developers.

Highlights

  • Architectural Refactoring: The core proxy logic has been migrated from internal packages to a public, reusable pkg/llmproxy library, enabling embedding into other Go applications.
  • Build and Release Process Enhancements: New GitHub Actions, Taskfile commands, and Go tools (boardsync, cliproxyctl, codegen, releasebatch) have been introduced to stabilize builds, manage releases, and unify service/runtime artifacts.
  • Expanded Provider Support and Configuration: The config.example.yaml and related code now include configurations for a wider range of LLM providers, including new OAuth/session-based integrations, and improved model aliasing.
  • Docker Deployment Improvements: The Dockerfile and docker-compose.yml have been updated for multi-arch builds, a new entrypoint script (docker-init.sh), and environment variable overrides for runtime configuration.
  • Comprehensive Documentation Overhaul: Extensive new documentation has been added, including feature guides, API references, audience-specific docsets, and planning boards, all reflecting the cliproxyapi++ fork.
  • Enhanced Quality and Security Gates: New GitHub policy files, pre-commit hooks, and scripts (check-approved-external-endpoints.sh, check-distributed-critical-paths.sh, check-docs-secret-samples.sh, check-workflow-token-permissions.sh) enforce stricter quality, security, and governance standards.

🧠 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
  • CHANGELOG.md
    • Supported multiple aliases for a single upstream model in OAuth model alias configuration, preserving compatibility while allowing same upstream model name with distinct aliases.
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
Activity
  • No specific human activity to summarize in the pull request description.
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

@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 introduces a library-first architecture with pkg/llmproxy, which significantly improves reusability. It also adds several management and planning tools. I have identified a potential deadlock in the I/O capturing logic of the management CLI and a regex bug in the release linting script that should be addressed to ensure the stability of the build and runtime artifacts.

Comment on lines +623 to +656
func captureStdIO(runFn func() error) (string, string, error) {
origStdout := os.Stdout
origStderr := os.Stderr

stdoutRead, stdoutWrite, err := os.Pipe()
if err != nil {
return "", "", err
}
stderrRead, stderrWrite, err := os.Pipe()
if err != nil {
_ = stdoutRead.Close()
_ = stdoutWrite.Close()
return "", "", err
}

os.Stdout = stdoutWrite
os.Stderr = stderrWrite

runErr := runFn()

_ = stdoutWrite.Close()
_ = stderrWrite.Close()
os.Stdout = origStdout
os.Stderr = origStderr

var outBuf bytes.Buffer
_, _ = io.Copy(&outBuf, stdoutRead)
_ = stdoutRead.Close()
var errBuf bytes.Buffer
_, _ = io.Copy(&errBuf, stderrRead)
_ = stderrRead.Close()

return outBuf.String(), errBuf.String(), runErr
}

Choose a reason for hiding this comment

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

high

The captureStdIO function has a potential deadlock risk. If runFn writes more data than the OS pipe buffer (typically 64KB), it will block indefinitely because the reading from the pipe only starts after runFn returns. To fix this, reading from the pipes should happen in separate goroutines. Additionally, os.Stdout and os.Stderr should be restored using a defer block to ensure they are reset even if runFn panics.

@KooshaPari KooshaPari force-pushed the ci-compile-fix-clean-single branch from 3a8baa3 to 4466625 Compare February 23, 2026 09:28
@KooshaPari
Copy link
Author

Moved to fork for completion and continued work there. Fork PRs:
#208 (source ci-compile-fix-clean-single)
#209 (from pr-271-migrate)
#210 (from pr-269-migrate)
#211 (from pr-11-migrate)

@KooshaPari KooshaPari closed this Feb 23, 2026
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.

1 participant