fix(openclaw): classify Gemini 3 managed route - #8487
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds Gemini 3 managed-inference configuration and an OpenClaw compatibility plugin. Functional tests verify route matching and exclusions. A Docker-based runtime test verifies plugin loading and Google Generative AI classification. ChangesGemini 3 managed inference
Estimated code review effort: 4 (Complex) | ~45 minutes Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant ConfigGenerator
participant OpenClaw
participant GeminiCompatPlugin
participant RoutingProbe
ConfigGenerator->>OpenClaw: Generate Gemini 3 managed-route configuration
OpenClaw->>GeminiCompatPlugin: Load compatibility plugin
GeminiCompatPlugin-->>OpenClaw: Classify inference.local as google-generative-ai
RoutingProbe->>OpenClaw: Inspect plugin and provider routing
OpenClaw-->>RoutingProbe: Return loaded plugin and routing classification
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
nemoclaw-blueprint/openclaw-plugins/gemini-inference-compat/index.js (1)
4-10: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy liftRecord an accepted integration decision before release.
PR 8487 documents the security boundary and targeted validation, but it has no assignee, review, or approval. Define the owner, lifecycle, and maintainer acceptance of the security boundary.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@nemoclaw-blueprint/openclaw-plugins/gemini-inference-compat/index.js` around lines 4 - 10, Update the plugin metadata around the module.exports definition to record the accepted integration decision before release, including a named owner, lifecycle or maintenance responsibility, and maintainer review/approval of the security boundary described by the plugin. Keep the existing compatibility behavior and registration unchanged.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@nemoclaw-blueprint/openclaw-plugins/gemini-inference-compat/index.js`:
- Around line 4-10: Update the plugin metadata around the module.exports
definition to record the accepted integration decision before release, including
a named owner, lifecycle or maintenance responsibility, and maintainer
review/approval of the security boundary described by the plugin. Keep the
existing compatibility behavior and registration unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 7ef720b2-c2e3-41e2-a687-14e9c3c99b21
📒 Files selected for processing (4)
nemoclaw-blueprint/model-specific-setup/openclaw/gemini-3-managed-inference.jsonnemoclaw-blueprint/openclaw-plugins/gemini-inference-compat/index.jsnemoclaw-blueprint/openclaw-plugins/gemini-inference-compat/openclaw.plugin.jsontest/generate-openclaw-config-gemini-compat.test.ts
|
Maintainer follow-up for revision Review feedback disposition I verified the CodeRabbit maintainability nitpick and am not changing the runtime plugin metadata. Security review: PASS
Files reviewed: the Gemini setup manifest, plugin entry point, plugin manifest, and focused integration test. Documentation review: PASS — no documentation change needed This is automatic internal compatibility metadata for an existing managed route. It adds no command, configuration step, or user workflow. The existing model-specific setup registry documentation remains accurate. Validation
GitHub-hosted workflows are still queued during the current Actions service disruption. I have not rerun queued jobs; merge remains blocked until the required checks finish and the required approval is present. |
|
Maintainer security review for the current branch revision: PASS — no findings. Nine-category review:
Validation: 131 generator tests passed, 10 focused schema tests passed, CLI type checking passed, and the source-shape guard passed. The broader configuration validator could not be rerun locally because the sandbox denied the TypeScript runner IPC socket; its protected hosted result remains required before merge. Review disposition: the CodeRabbit owner/lifecycle request is a governance decision, not runtime plugin metadata. The existing plugin contract does not encode repository ownership or approval fields, so adding ad hoc fields to |
PR Review Advisor — No blocking findings reportedAdvisor assessment: No blocking advisor findings reported Model lanes
Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests. 3 semantic terminology decisionsTerminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.
E2E guidanceAdvisory only. A maintainer can dispatch the default E2E suite against this exact revision. Recommended E2E: This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
|
Addressed PRA-1 on the current branch revision (
The separate CodeRabbit metadata suggestion remains intentionally declined: ownership, lifecycle responsibility, and maintainer approval belong in repository governance and reviewer routing, not executable runtime metadata. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@test/openclaw-gemini-inference-compat-runtime.test.ts`:
- Around line 86-87: Update the `suite` selection to skip when
`dockerProbe.status` is not 0, removing the `process.platform === "linux"`
override. Keep the suite enabled only when `docker info` succeeds so `beforeAll`
does not run Docker-dependent setup without a usable daemon.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: d2e4fba3-9ccc-4634-920b-a29951902a54
📒 Files selected for processing (1)
test/openclaw-gemini-inference-compat-runtime.test.ts
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
|
CI follow-up: the growth guard rejected two conditional cleanup branches in the Gemini runtime test. I replaced them with registered cleanup callbacks, preserving Docker-image and temporary-directory teardown without adding conditional branches. The focused runtime regression, conditional scanner, commit hooks, CLI build/typecheck, DCO, signature verification, and documentation-writer review all pass. Fresh CI and automated review are running. This PR still needs repository-routed human approval before it can merge. |
cv
left a comment
There was a problem hiding this comment.
Please add a behavior test for the defect before approval. The current runtime test proves plugin loading and endpoint classification, but it does not drive a Gemini 3 tool-call result round through OpenClaw's thought-signature path. A regression could preserve the routing summary while still sending an invalid follow-up request. The branch is also behind the current main commit; refresh it and rerun the required checks after adding the test.
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
|
Addressed the requested behavior coverage and branch refresh on the current revision.
Fresh repository checks are now running on the updated branch. |
The runtime regression now exercises the Gemini 3 tool-call and tool-result thought-signature path. The requested change is addressed.
|
CI disposition: the earlier shard 5 failure was a 15-second timeout in |
There was a problem hiding this comment.
Approved commit e6b0ae3 against base 272cc64. Product scope is established by #8474; the managed-route activation boundary, security posture, focused tool-call regression, configuration validation, contributor compliance, and documentation review all pass. All five required GitHub checks are green, and no actionable automated-review finding remains.
Summary
NemoClaw now loads an OpenClaw compatibility plugin for Gemini 3.x models on the managed
inference.localChat Completions route. The plugin marks that route as Google Generative AI so OpenClaw applies its Gemini tool-call thought-signature handling.Related Issue
Fixes #8474
Changes
inference.localroutes.providerEndpoints[].endpointClassasgoogle-generative-aiforhttps://inference.local/v1.Type of Change
Quality Gates
Documentation Writer Review
no-docs-neededinference.localChat Completions route, and agent-specific compatibility setup. This change restores the documented Gemini 3 tool-call path. It adds no command, credential, configuration input, or user workflow; no documentation files changed.DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailablenpm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Signed-off-by: Vinay Bhagavath bhagavathvinay@gmail.com
Summary by CodeRabbit
New Features
Tests