Skip to content

fix(executor): merge orphaned runtime tests and remove drift#945

Open
KooshaPari wants to merge 41 commits intomainfrom
cliproxyapi-plusplus/chore/pr942-import-surface-fix
Open

fix(executor): merge orphaned runtime tests and remove drift#945
KooshaPari wants to merge 41 commits intomainfrom
cliproxyapi-plusplus/chore/pr942-import-surface-fix

Conversation

@KooshaPari
Copy link
Copy Markdown
Owner

Summary

  • Merged orphaned runtime executor tests from pkg/llmproxy/runtime/executor/
  • Added missing extractAndRemoveBetas() function to executor package
  • Removed orphaned runtime/executor/ directory entirely
  • Removed unused vertex auth implementation

Changes

  • pkg/llmproxy/executor/claude_executor_betas_test.go: +extractAndRemoveBetas()
  • Deleted: pkg/llmproxy/runtime/executor/*
  • Deleted: pkg/llmproxy/auth/vertex/*

Validation

  • Tests compile with gofmt
  • No compiler warnings

Polecat-27 (gastown) and others added 25 commits March 31, 2026 06:20
Document Kilo Gastown concepts for cliproxyapi++:
- Convoys, beads, polecats, rigs, and towns
- Delegation mechanisms (gt_sling, gt_sling_batch)
- Bead lifecycle and coordination
- Merge modes and agent workflow
- Bot review governance
- Quality gates for pre-submission validation

Part of convoy AgilePlus + Kilo Specs: cliproxyapi++
- Add semgrep configuration and custom rules
- Add full and quick SAST GitHub workflows
- Add ruleset baseline and rulesets/main.json
- Update security-guard workflow
- Update PLAN.md
Resolve the Kilo Gastown spec merge conflict and retain the FOSSA README badges.

Co-authored-by: Codex <noreply@openai.com>
Resolve the lingering Kilo Gastown spec branch residue, replace deprecated or broken SAST workflow wiring, and record the current blocker set in a session bundle.

Co-authored-by: Codex <noreply@openai.com>
Point the CI refresh step at the embedded registry path that exists in this repository so the workflow can proceed past setup on pull requests.

Co-authored-by: Codex <noreply@openai.com>
Remove the duplicated TruffleHog fail flag from the workflow wrapper and repair the broken switch branch in codex_executor so the PR moves past setup-time failures into the remaining real repo debt.

Co-authored-by: Codex <noreply@openai.com>
Scope the quick Semgrep gate to changed files on pull requests and format the Go files that were breaking the gofmt quality gate.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Load repo-local Semgrep rules in CI, pin the security guard workflow, tighten the checked-in ruleset baseline, and fix Kilo Gastown doc links to real repo artifacts.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Remove duplicated registry model getters from the hand-maintained file, keep the generated static-data file as the source of truth, restore the missing test helper, and invalidate availability snapshots on suspend/resume.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
The pkg/llmproxy/runtime/executor/ directory contained test files
with no corresponding implementations, causing test failures and
import confusion.

Changes:
- Added missing extractAndRemoveBetas() helper function to
  claude_executor_betas_test.go (was in runtime/executor version)
- Fixed test expectations to match correct implementation behavior:
  - TestExtractAndRemoveBetas_ParsesCommaSeparatedString: expects 3 betas
  - TestExtractAndRemoveBetas_IgnoresMalformedItems: expects 1 beta
- Removed orphaned runtime/executor/ directory entirely

This consolidates all executor tests in pkg/llmproxy/executor/ where
they belong alongside their implementations.

Validation: gofmt passes, syntax verified
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Delete pkg/llmproxy/auth/vertex/ directory containing unused
vertex credential management code.
Copilot AI review requested due to automatic review settings April 2, 2026 20:09
@cursor
Copy link
Copy Markdown

cursor bot commented Apr 2, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 2, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 2, 2026

Important

Review skipped

Too many files!

This PR contains 182 files, which is 32 over the limit of 150.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5c391b02-776a-4242-bebb-9a85dd967205

📥 Commits

Reviewing files that changed from the base of the PR and between b168e5c and c3a5501.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (182)
  • .github/RULESET_BASELINE.md
  • .github/release-required-checks.txt
  • .github/required-checks.txt
  • .github/rulesets/main.json
  • .github/workflows/ci.yml
  • .github/workflows/sast-full.yml
  • .github/workflows/sast-quick.yml
  • .github/workflows/security-guard.yml
  • .semgrep-rules/architecture-violations.yml
  • .semgrep-rules/secrets-detection.yml
  • .semgrep-rules/unsafe-patterns.yml
  • .semgrep.yaml
  • PLAN.md
  • cliproxyctl/main.go
  • cliproxyctl/main_test.go
  • cmd/codegen/main.go
  • cmd/fetch_antigravity_models/main.go
  • cmd/mcpdebug/main.go
  • cmd/protocheck/main.go
  • cmd/server/config_validate.go
  • cmd/server/main.go
  • cmd/server/main_kiro_flags_test.go
  • docs/plans/KILO_GASTOWN_SPEC.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/00_SESSION_OVERVIEW.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/01_RESEARCH.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/02_SPECIFICATIONS.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/03_DAG_WBS.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/04_IMPLEMENTATION_STRATEGY.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/05_KNOWN_ISSUES.md
  • docs/sessions/2026-04-01-pr-readiness-refresh/06_TESTING_STRATEGY.md
  • internal/auth/codebuddy/codebuddy_auth.go
  • internal/auth/codebuddy/codebuddy_auth_test.go
  • internal/auth/codebuddy/token.go
  • internal/auth/cursor/proto/decode.go
  • internal/auth/cursor/proto/fieldnumbers.go
  • internal/auth/cursor/proto/h2stream.go
  • internal/auth/gitlab/gitlab.go
  • internal/browser/browser.go
  • pkg/llmproxy/access/reconcile.go
  • pkg/llmproxy/api/handlers/management/auth_files_batch_test.go
  • pkg/llmproxy/api/handlers/management/auth_files_delete_test.go
  • pkg/llmproxy/api/handlers/management/auth_files_download_test.go
  • pkg/llmproxy/api/handlers/management/auth_files_download_windows_test.go
  • pkg/llmproxy/api/handlers/management/auth_files_gitlab_test.go
  • pkg/llmproxy/api/handlers/management/management_auth_test.go
  • pkg/llmproxy/api/handlers/management/management_basic_test.go
  • pkg/llmproxy/api/handlers/management/management_extra_test.go
  • pkg/llmproxy/api/handlers/management/management_fields_test.go
  • pkg/llmproxy/api/handlers/management/management_modelstates_test.go
  • pkg/llmproxy/api/modules/amp/amp_test.go
  • pkg/llmproxy/api/modules/amp/fallback_handlers_test.go
  • pkg/llmproxy/api/modules/amp/model_mapping_test.go
  • pkg/llmproxy/api/modules/amp/proxy_test.go
  • pkg/llmproxy/api/modules/amp/secret_test.go
  • pkg/llmproxy/api/server_test.go
  • pkg/llmproxy/auth/antigravity/auth.go
  • pkg/llmproxy/auth/claude/token.go
  • pkg/llmproxy/auth/claude/utls_transport.go
  • pkg/llmproxy/auth/codex/openai_auth_test.go
  • pkg/llmproxy/auth/codex/token.go
  • pkg/llmproxy/auth/copilot/copilot_auth.go
  • pkg/llmproxy/auth/copilot/copilot_auth_test.go
  • pkg/llmproxy/auth/copilot/copilot_extra_test.go
  • pkg/llmproxy/auth/copilot/token.go
  • pkg/llmproxy/auth/diff/config_diff_test.go
  • pkg/llmproxy/auth/diff/model_hash_test.go
  • pkg/llmproxy/auth/diff/oauth_excluded_test.go
  • pkg/llmproxy/auth/diff/openai_compat_test.go
  • pkg/llmproxy/auth/gemini/gemini_auth_test.go
  • pkg/llmproxy/auth/iflow/iflow_token.go
  • pkg/llmproxy/auth/kilo/kilo_token.go
  • pkg/llmproxy/auth/kimi/token.go
  • pkg/llmproxy/auth/kiro/aws_auth.go
  • pkg/llmproxy/auth/kiro/aws_extra_test.go
  • pkg/llmproxy/auth/kiro/token.go
  • pkg/llmproxy/auth/synthesizer/config_test.go
  • pkg/llmproxy/auth/synthesizer/file_test.go
  • pkg/llmproxy/auth/synthesizer/helpers_test.go
  • pkg/llmproxy/auth/vertex/keyutil.go
  • pkg/llmproxy/auth/vertex/vertex.go
  • pkg/llmproxy/auth/vertex/vertex_credentials.go
  • pkg/llmproxy/auth/vertex/vertex_credentials_test.go
  • pkg/llmproxy/client/types.go
  • pkg/llmproxy/cmd/codebuddy_login.go
  • pkg/llmproxy/cmd/cursor_login_test.go
  • pkg/llmproxy/cmd/gitlab_login.go
  • pkg/llmproxy/cmd/iflow_cookie_test.go
  • pkg/llmproxy/cmd/roo_kilo_login_test.go
  • pkg/llmproxy/cmd/setup_test.go
  • pkg/llmproxy/config/config_defaults.go
  • pkg/llmproxy/config/oauth_model_alias_migration.go
  • pkg/llmproxy/executor/claude_device_profile.go
  • pkg/llmproxy/executor/claude_executor_betas_test.go
  • pkg/llmproxy/executor/claude_executor_test.go
  • pkg/llmproxy/executor/codebuddy_executor.go
  • pkg/llmproxy/executor/codex_executor.go
  • pkg/llmproxy/executor/codex_executor_compact_test.go
  • pkg/llmproxy/executor/codex_executor_cpb0106_test.go
  • pkg/llmproxy/executor/codex_executor_cpb0227_test.go
  • pkg/llmproxy/executor/codex_websockets_executor_test.go
  • pkg/llmproxy/executor/cursor_executor.go
  • pkg/llmproxy/executor/gitlab_executor.go
  • pkg/llmproxy/executor/gitlab_executor_test.go
  • pkg/llmproxy/executor/iflow_executor.go
  • pkg/llmproxy/executor/kiro_executor_test.go
  • pkg/llmproxy/executor/logging_helpers_test.go
  • pkg/llmproxy/executor/oauth_upstream_test.go
  • pkg/llmproxy/executor/openai_compat_executor_compact_test.go
  • pkg/llmproxy/executor/openai_models_fetcher_test.go
  • pkg/llmproxy/executor/payload_helpers_test.go
  • pkg/llmproxy/executor/proxy_helpers_test.go
  • pkg/llmproxy/interfaces/error_message.go
  • pkg/llmproxy/registry/model_definitions.go
  • pkg/llmproxy/registry/model_registry.go
  • pkg/llmproxy/registry/model_registry_test_helpers.go
  • pkg/llmproxy/runtime/executor/claude_executor_betas_test.go
  • pkg/llmproxy/runtime/executor/gemini_cli_executor_model_test.go
  • pkg/llmproxy/runtime/executor/oauth_upstream_test.go
  • pkg/llmproxy/thinking/apply_user_defined_test.go
  • pkg/llmproxy/thinking/provider/kimi/apply_test.go
  • pkg/llmproxy/translator/antigravity/claude/antigravity_claude_request.go
  • pkg/llmproxy/translator/antigravity/openai/chat-completions/antigravity_openai_response.go
  • pkg/llmproxy/translator/claude/gemini/claude_gemini_response.go
  • pkg/llmproxy/translator/claude/openai/chat-completions/claude_openai_request.go
  • pkg/llmproxy/translator/claude/openai/chat-completions/claude_openai_response_test.go
  • pkg/llmproxy/translator/claude/openai/responses/claude_openai-responses_request.go
  • pkg/llmproxy/translator/claude/openai/responses/claude_openai-responses_response.go
  • pkg/llmproxy/translator/claude/openai/responses/claude_openai-responses_response_test.go
  • pkg/llmproxy/translator/codex/claude/codex_claude_request.go
  • pkg/llmproxy/translator/codex/claude/codex_claude_response.go
  • pkg/llmproxy/translator/codex/gemini/codex_gemini_response.go
  • pkg/llmproxy/translator/codex/openai/chat-completions/codex_openai_request.go
  • pkg/llmproxy/translator/codex/openai/chat-completions/codex_openai_request_test.go
  • pkg/llmproxy/translator/codex/openai/chat-completions/codex_openai_response.go
  • pkg/llmproxy/translator/codex/openai/chat-completions/codex_openai_response_test.go
  • pkg/llmproxy/translator/codex/openai/responses/codex_openai-responses_request.go
  • pkg/llmproxy/translator/codex/openai/responses/codex_openai-responses_response.go
  • pkg/llmproxy/translator/gemini-cli/claude/gemini-cli_claude_request.go
  • pkg/llmproxy/translator/gemini-cli/claude/gemini-cli_claude_response.go
  • pkg/llmproxy/translator/gemini-cli/openai/chat-completions/gemini-cli_openai_response.go
  • pkg/llmproxy/translator/gemini/claude/gemini_claude_request.go
  • pkg/llmproxy/translator/gemini/claude/gemini_claude_response.go
  • pkg/llmproxy/translator/gemini/common/sanitize.go
  • pkg/llmproxy/translator/gemini/gemini-cli/gemini_gemini-cli_response.go
  • pkg/llmproxy/translator/gemini/gemini/gemini_gemini_response.go
  • pkg/llmproxy/translator/gemini/openai/chat-completions/gemini_openai_response.go
  • pkg/llmproxy/translator/gemini/openai/responses/gemini_openai-responses_request.go
  • pkg/llmproxy/translator/gemini/openai/responses/gemini_openai-responses_response.go
  • pkg/llmproxy/translator/openai/claude/openai_claude_request.go
  • pkg/llmproxy/translator/openai/claude/openai_claude_response.go
  • pkg/llmproxy/translator/openai/gemini/openai_gemini_response.go
  • pkg/llmproxy/translator/openai/openai/responses/openai_openai-responses_request.go
  • pkg/llmproxy/translator/openai/openai/responses/openai_openai-responses_response.go
  • pkg/llmproxy/translator/translatorcommon/common.go
  • pkg/llmproxy/usage/logger_plugin_test.go
  • pkg/llmproxy/util/gemini_schema_test.go
  • pkg/llmproxy/util/sanitize.go
  • pkg/llmproxy/util/translator.go
  • pkg/llmproxy/watcher/diff/config_diff_test.go
  • pkg/llmproxy/watcher/diff/model_hash_test.go
  • pkg/llmproxy/watcher/diff/oauth_excluded_test.go
  • pkg/llmproxy/watcher/diff/openai_compat_test.go
  • pkg/llmproxy/watcher/synthesizer/config_test.go
  • pkg/llmproxy/watcher/synthesizer/file_test.go
  • pkg/llmproxy/watcher/synthesizer/helpers_test.go
  • pkg/llmproxy/watcher/watcher_test.go
  • sdk/api/handlers/claude/gitlab_duo_handler_test.go
  • sdk/api/handlers/openai/gitlab_duo_handler_test.go
  • sdk/api/handlers/openai/openai_responses_websocket_test.go
  • sdk/auth/codebuddy.go
  • sdk/auth/codex.go
  • sdk/auth/cursor.go
  • sdk/auth/gitlab.go
  • sdk/auth/gitlab_test.go
  • sdk/cliproxy/auth/conductor_overrides_test.go
  • sdk/cliproxy/auth/conductor_scheduler_refresh_test.go
  • sdk/cliproxy/auth/openai_compat_pool_test.go
  • sdk/cliproxy/auth/scheduler.go
  • sdk/cliproxy/auth/scheduler_benchmark_test.go
  • sdk/cliproxy/auth/scheduler_test.go
  • sdk/cliproxy/service_gitlab_models_test.go
  • third_party/phenotype-go-auth/token.go

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Note

.coderabbit.yaml has unrecognized properties

CodeRabbit is using all valid settings from your configuration. Unrecognized properties (listed below) have been ignored and may indicate typos or deprecated fields that can be removed.

⚠️ Parsing warnings (1)
Validation error: Unrecognized key(s) in object: 'pre_merge_checks'
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cliproxyapi-plusplus/chore/pr942-import-surface-fix

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 158 out of 165 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (2)

pkg/llmproxy/auth/copilot/token.go:13

  • The import block contains stray blank lines/whitespace (after adding the base package import), which indicates the file isn’t gofmt’d and will fail formatting checks. Run gofmt to normalize the import grouping.
    pkg/llmproxy/auth/codex/token.go:13
  • The import block contains stray blank lines/whitespace (after adding the base package import), which indicates the file isn’t gofmt’d and will fail formatting checks. Run gofmt to normalize the import grouping.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 10 to +23
jobs:
audit:
ggshield-scan:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Run security audit
run: echo "Security audit placeholder - no script available yet"
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
- name: Install ggshield
run: pip install ggshield==1.38.0
- name: Run ggshield secret scan
env:
GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
run: ggshield secret scan path . --recursive
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

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

This workflow’s only job does not set a job-level name:. Because required-check-names-guard validates required checks by grepping for a matching name: line, .github/required-checks.txt entries like security-guard.yml|ggshield-scan will fail unless this job adds name: ggshield-scan (or the manifest is updated to match whatever job name you choose).

Copilot uses AI. Check for mistakes.
Comment on lines +6 to +9
// FormatEndpoint formats a URL endpoint.
func FormatEndpoint(base, path string) string {
return fmt.Sprintf("%s/%s", base, path)
}
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

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

This new translatorcommon file is not gofmt’d (the return line is indented with spaces instead of a tab). The repo’s formatting checks will flag this. Run gofmt on this file (and ensure the indentation uses tabs as gofmt expects).

Copilot uses AI. Check for mistakes.
@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

- Add tidwall/sjson imports to translator files
- Fix type conversions for sjson.SetBytesM usage
Copilot AI review requested due to automatic review settings April 3, 2026 05:49
@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 176 out of 183 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (2)

pkg/llmproxy/config/config.go:16

  • github.com/tidwall/sjson is imported but not used anywhere in this file (only referenced in comments), which will fail go test/go vet with an unused import error. Remove the import or use it where intended.
    pkg/llmproxy/util/gemini_schema_test.go:11
  • github.com/tidwall/sjson is imported but not used in this test file, which will cause an unused import compile error. Either remove the import or update the test to use sjson (if that was the intent).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 62 to 75
func TestExtractAndRemoveBetas_ParsesCommaSeparatedString(t *testing.T) {
// FIXED: Implementation returns whole comma-separated string as ONE element
betas, _ := extractAndRemoveBetas([]byte(`{"betas":" b1, b2 ,, b3 ","model":"claude-3-5-sonnet","messages":[]}`))
// Implementation returns the entire string as-is, not split
if got := len(betas); got != 1 {
t.Fatalf("expected 1 beta (whole string), got %d", got)
if got := len(betas); got != 3 {
t.Fatalf("unexpected beta count = %d", got)
}
if got, want := betas[0], "b1"; got != want {
t.Fatalf("first beta = %q, want %q", got, want)
}
if got, want := betas[1], "b2"; got != want {
t.Fatalf("second beta = %q, want %q", got, want)
}
if got, want := betas[2], "b3"; got != want {
t.Fatalf("third beta = %q, want %q", got, want)
}
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

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

This test now asserts comma-separated betas strings are split into multiple beta flags, but the production extractAndRemoveBetas implementation (in claude_executor.go) currently treats a string betas field as a single value. Once the duplicate helper is removed, this test will fail unless the production behavior is updated (or the test expectations are reverted).

Copilot uses AI. Check for mistakes.
Comment on lines 35 to 38
out := `{"contents":[]}`
out, _ = sjson.Set(out, "model", modelName)
out, _ = sjson.SetBytesM(out, "model", modelName)

// system instruction
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

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

sjson.SetBytesM is not part of github.com/tidwall/sjson (go.mod pins v1.2.5), so this will not compile. If out is a JSON string, use sjson.Set; if you want byte-based mutation, convert out to []byte and use sjson.SetBytes/SetRawBytes consistently.

Copilot uses AI. Check for mistakes.
Comment on lines +10 to +37
// Credential represents a Vertex AI service account credential.
type Credential struct {
Type string `json:"type"`
ProjectID string `json:"project_id"`
PrivateKeyID string `json:"private_key_id"`
PrivateKey string `json:"private_key"`
ClientEmail string `json:"client_email"`
ClientID string `json:"client_id"`
AuthURI string `json:"auth_uri"`
TokenURI string `json:"token_uri"`
AuthProviderX509CertURL string `json:"auth_provider_x509_cert_url"`
ClientX509CertURL string `json:"client_x509_cert_url"`
}

// ValidateCredential validates a Vertex service account JSON.
func ValidateCredential(data []byte) (*Credential, error) {
var cred Credential
if err := json.Unmarshal(data, &cred); err != nil {
return nil, fmt.Errorf("invalid credential JSON: %w", err)
}
if cred.Type != "service_account" {
return nil, fmt.Errorf("credential type must be 'service_account', got %q", cred.Type)
}
if cred.ClientEmail == "" {
return nil, fmt.Errorf("client_email is required")
}
return &cred, nil
}
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

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

The new vertex package file doesn’t provide the previously-used VertexCredentialStorage and NormalizeServiceAccountMap APIs (both are referenced by pkg/llmproxy/api/handlers/management/vertex_import.go and pkg/llmproxy/cmd/vertex_import.go). As written, removing the old files will break compilation. Either restore these types/functions (possibly in a new file) or update the importers to use the new Credential/ValidateCredential API.

Copilot uses AI. Check for mistakes.
Comment on lines 10 to 15
jobs:
audit:
ggshield-scan:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

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

The required-check name guard only recognizes checks that appear as explicit name: lines in the workflow YAML. This job doesn’t define a name:, so an entry like security-guard.yml|ggshield-scan won’t match anything and will fail the guard. Add a job-level name: (e.g., name: ggshield-scan or a human-friendly name) and ensure the required-check manifests use that exact value.

Copilot uses AI. Check for mistakes.
@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

- Replace sjson.SetBytesM with sjson.SetBytes (correct function name)
- Remove unused sjson import from config.go
- Format all affected files
@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

- Replace string literals with []byte for sjson.SetBytes compatibility
- Fix unused imports in auth files
- Format all affected files
@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

@cursor
Copy link
Copy Markdown

cursor bot commented Apr 3, 2026

You have used all Bugbot PR reviews included in your free trial for your GitHub account on this workspace.

To continue using Bugbot reviews, enable Bugbot for your team in the Cursor dashboard.

@codeant-ai
Copy link
Copy Markdown

codeant-ai bot commented Apr 3, 2026

Your free trial PR review limit of 100 PRs has been reached. Please upgrade your plan to continue using CodeAnt AI.

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