Skip to content

Feat(vertex): add prefix field#1302

Merged
luispater merged 4 commits intorouter-for-me:devfrom
dinhkarate:feat(vertex)/add-prefix-field
Apr 3, 2026
Merged

Feat(vertex): add prefix field#1302
luispater merged 4 commits intorouter-for-me:devfrom
dinhkarate:feat(vertex)/add-prefix-field

Conversation

@dinhkarate
Copy link
Copy Markdown
Contributor

@dinhkarate dinhkarate commented Jan 29, 2026

Summary

  • Add --vertex-import-prefix CLI flag to specify a prefix when importing Vertex service account credentials
  • Prefix is saved to the credential JSON file for model namespacing (e.g., imagen-fast/gemini-2.0-flash)
PR-CLI

Changes

  • cmd/server/main.go: Add --vertex-import-prefix flag and pass to DoVertexImport()
  • internal/cmd/vertex_import.go: Accept prefix parameter and set Prefix field in storage
    Usage

Import with prefix

./cli-proxy-api -vertex-import=service-account.json -vertex-import-prefix=imagen-fast

Models will appear as:

test/imagen-4.0-ultra-generate-001
imagen/imagen-4.0-generate-001
image

Testing

  • Build passes
  • Import with prefix works
  • Prefix saved correctly in credential file
  • Models display with prefix in /v1/models
  • Image generation works with prefixed model name

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @dinhkarate, 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 enhances the Vertex AI integration by adding the capability to namespace models during the service account import process. Users can now define a custom prefix via a new CLI flag, which is then stored with the credentials and applied to Vertex model names, improving model management and clarity within the system.

Highlights

  • New CLI Flag for Vertex Import: Introduced a new CLI flag, --vertex-import-prefix, allowing users to specify a custom prefix when importing Vertex service account credentials.
  • Model Namespacing: The provided prefix is now saved within the Vertex credential JSON file, enabling model namespacing (e.g., imagen-fast/gemini-2.0-flash) for better organization and identification.
  • Credential Storage Update: The VertexCredentialStorage struct has been updated to include a Prefix field, ensuring the specified prefix is persisted alongside other credential details.

🧠 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.

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
Contributor

@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

This pull request adds a --vertex-import-prefix flag to allow namespacing for Vertex models, which is a useful feature. The implementation is straightforward. I've left a few comments with suggestions for improvement, mainly around consistency with the existing codebase, clarifying comments, and ensuring all relevant data structures are populated with the new prefix. I also noted a minor issue in the .gitignore file.

Comment thread .gitignore Outdated
.beads/
.opencode/
.cli-proxy-api/
.venv/ No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

It's a good practice for text files to end with a newline character. Some tools might not process the last line correctly if it's not terminated by a newline.

.venv/

// Type is the provider identifier stored alongside credentials. Always "vertex".
Type string `json:"type"`

// Prefix optionally namespaces models for this credential (e.g., "teamA/gemini-2.0-flash").
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The example in this comment is a bit confusing as it appears to show a full namespaced model name instead of just a prefix. To improve clarity, consider rephrasing it to show an example prefix and the resulting model name.

Suggested change
// Prefix optionally namespaces models for this credential (e.g., "teamA/gemini-2.0-flash").
// Prefix optionally namespaces models for this credential (e.g., "teamA"). This will result in model names like "teamA/gemini-2.0-flash".

@dinhkarate dinhkarate changed the title Feat(vertex)/add prefix field Feat(vertex): add prefix field Jan 29, 2026
@KooshaPari

This comment was marked as spam.

@KooshaPari

This comment was marked as spam.

@KooshaPari

This comment was marked as spam.

@KooshaPari

This comment was marked as spam.

1 similar comment
@KooshaPari

This comment was marked as spam.

Copy link
Copy Markdown
Collaborator

@luispater luispater left a comment

Choose a reason for hiding this comment

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

Summary:
This adds a useful --vertex-import-prefix flag, but I don't think the implementation is safe to merge yet. I found two correctness issues in the persistence/validation path.

Key findings:

  • Blocking: DoVertexImport() still names the auth file from project_id only, so importing the same Vertex project twice with different prefixes will overwrite the previous credential instead of creating a separate namespaced auth file.
  • Blocking: the new CLI flag accepts raw prefixes, but the auth synthesizer only accepts single-segment prefixes. Values containing an internal / will import successfully and then be silently ignored at runtime.
  • Non-blocking: I couldn't find targeted automated coverage for the new flag, overwrite behavior, or invalid-prefix handling.

Test plan:

  • Not run locally; reviewed the diff and the surrounding persistence/loading code paths.

dinhkarate and others added 2 commits March 17, 2026 11:48
Address two blocking issues from PR review:
- Auth file now named vertex-{prefix}-{project}.json so importing the
  same project with different prefixes no longer overwrites credentials
- Prefix containing "/" is rejected at import time instead of being
  silently ignored at runtime
- Add prefix to in-memory metadata map for consistency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dinhkarate
Copy link
Copy Markdown
Contributor Author

Addressed review feedback

Thanks for the thorough review @luispater! Pushed a fix (36efcc6e) addressing both blocking issues:

1. Auth file overwrite (fixed)

Auth filename now includes prefix when provided:

  • vertex-{p-{project_id}.json (with prefix)vertex-{project_id}.json (withoefix, unchanged behavior)

Importing the same Vertex project with different prefixes now creates separate credential files.

2. Prefix validation at import time (fixed)

DoVertexImport() now validates prefix before saving:

  • Trims whitespace and leading/trailing /
  • Rejects prefixes containing internal / with a clear error message
  • Msame validation logic used by the runtime synthesizer (file.go:106-113)

Additional fixes

  • Added prefix to in-memory metadata map for consistency
  • Fixed Prefix field comment to clarify usage (per gemini-code-assist suggestion)
  • Added trailing newline to .gitignore

@luispater luispater merged commit 0e4f189 into router-for-me:dev Apr 3, 2026
2 checks passed
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.

3 participants