Repository navigation
Conversation
JS-banana
force-pushed
the
fix/antigravity-const-schema
branch
from
November 2, 2026 04:15
7e18c1f to
ea4e3e4
Compare
JS-banana
force-pushed
the
fix/antigravity-const-schema
branch
from
November 3, 2026 09:23
ea4e3e4 to
a158713
Compare
JS-banana
force-pushed
the
fix/antigravity-const-schema
branch
from
November 11, 2026 09:03
31a58dc to
9b8c3c0
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#905 delivered the const-keyword fix. This PR contains the remaining provider hardening and its unit tests. The Web admission-recovery fixture change already landed in #719.
Problem
Beyond the const-keyword 400 fixed by #905, the CCA schema boundary passes unknown keywords to the server and recursively treats instance data as schemas. That can reject an entire request or silently alter literal values and parameter names. Compacting a literal union must also preserve its constraints: conjunctions, exclusive choices and branch restrictions cannot all be replaced by the same enum union.
Value
Keep tool declarations usable and faithful at OpenPI's existing provider seam, without adopting another provider stack or a general schema-normalization framework.
Approach
anyOfliteral alternatives whose value set is unchanged. PreserveallOf,oneOf, mixed types, branch annotations, and additional branch or parent constraints.Object.fromEntriesso names such as__proto__survive.items/properties/requiredfields.buildTools; the generic Google pre-pass previously destroyed literal fields before the CCA projection could preserve them. Both existing model routes still useparameters.Reference reviewed: oh-my-pi@
256b3211schema child classification and type-specific normalization. The projection adopts those boundary principles, rather than claiming exact parity with omp's multi-stage pipeline. Combination semantics follow the JSON Schema contract.Validation
Replayed the provider hardening commit onto upstream main
ffc9c624. The patch is identical toa1587138according togit range-diff, andgit diff --checkpassed.node --test --experimental-strip-types tests/extensions/ai-providers/antigravity.test.ts: 69 passed.bun run check: passed, including the Web build, formatting, lint, and TypeScript.bun run testwith isolated Pi configuration: 2,481 Node tests passed, 8 skipped, 0 failed. All 1,647 UI tests passed.google-antigravity/gemini-3.8-flash-highrepliedOKin an ephemeral session. This checks request acceptance with the loaded tool declarations. No model tool call was requested.Impact
nullableand removesnullfrom multi-type arrays.$ref/$defsexpansion, whole-tool fallback and switching endpoint dialects are out of scope. Non-string enum values and residualoneOf/allOfare structurally preserved but their full server acceptance was not live-tested. Pi still validates the original tool schema.