Repository navigation
Conversation
abti-ai
force-pushed
the
fix/antigravity-native-usage
branch
7 times, most recently
from
September 15, 2026 07:06
febb377 to
3ac7723
Compare
`anti-slop/no-reflect-apply` rejects `Reflect.apply(fn, thisArg, argsArray)`.
It defeats the call-signature checks TypeScript applies to an ordinary call:
the args array is checked as an array, not positionally against the callee's
parameters, so arity and type errors pass silently. Dynamic dispatch belongs
behind a named interface, not behind a reflective call.
Flipped the rule from "off" to "error" and cleared all 17 baseline violations
across `src config tests mobile` (16 sites; one file had two).
Fix pattern: `Reflect.apply(fn, recv, args)` becomes `fn.call(recv, ...args)`,
or a direct method call when the implicit receiver is already the right object.
The receiver is preserved at every site.
Where the callee is a captured built-in whose overloads split on an argument's
shape (`String.prototype.split`, `JSON.stringify`), a call-signature capture no
longer compiles once the args are passed positionally. Those three sites capture
the function through a method-shaped type
(`{ split(separator: unknown, limit?: number): string[] }['split']`), which keeps
the forwarding call checked rather than asserted.
Behaviour notes:
- `diff-section-layout.test.ts` drops a `limit === undefined ? [sep] : [sep, limit]`
conditional. Equivalent: `String.prototype.split` maps an undefined limit to
2^32-1, and the `Symbol.split` path forwards undefined either way.
- `workspace-space-compaction.test.ts` forwards `reduce`'s two arguments unchanged,
so the `arguments.length >= 2` initial-value branch is unaffected.
- `agent-session-history-byte-accounting.test.ts` is the one site where the receiver
is not literally preserved (`JSON` -> undefined). `JSON.stringify` never reads
`this` per spec, and restoring `.call(JSON, ...)` would reintroduce the overload
failure under strictBindCallApply.
No suppression comments added — the rule has zero `oxlint-disable` sites.
`Reflect.apply` still appears at electron.vite.config.ts:159, inside a template
literal of generated bootstrap source. That is string content, not lintable code.
…stablyai#20798) * fix(repos): preserve unknown Git availability * fix(git): distinguish binary absence from missing cwd on spawn ENOENT Node reports ENOENT for both a missing git binary and a missing working directory during spawn. The fix checks specifically for spawn syscall, then verifies the cwd exists to disambiguate. This prevents reporting "no Git" when the error is actually a missing working directory. Centralizes probe logic in a reusable function; other failures cause rejection so callers preserve the unknown status instead of collapsing to false.
abti-ai
force-pushed
the
fix/antigravity-native-usage
branch
from
September 15, 2026 07:35
3ac7723 to
03bce76
Compare
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.
Summary
Adds native Antigravity quota reporting through
agy --print /usage --output-format json, preserving independent Gemini and Claude/GPT quota groups and canonical Used/Remaining presentation.UI behavior
usedPercent, with first-in-order/session-first ties.% usedor% leftfollowed by the selected reset countdown, with both groups retained.5h/wk; provider flyouts use translatedSession/Weeklylabels. Unknown windows retain their source label or a duration fallback.Implementation and safety
Antigravity is fetched independently from Gemini using the trusted CLI resolver and
execFileCaptureToTermination, which routes through the sharedrunProcess/resolveSpawnWindows-safe process runner. It uses fixed argv, direct execution, bounded output/deadline, AbortSignal propagation, and process-tree termination. No credentials are read directly, no shell interpolation is used, and noshell: truepath is involved.The existing 10-second AGY deadline is unchanged.
Validation
Focused renderer, tooltip, parser/fetcher, service, visibility, and shared process-runner tests pass, including tightest-window, per-group independence, tie, localization, copy, ordering, and Used/Remaining cases. Full typecheck, lint pipeline, changed-code checks, formatter, and Electron/Vite build were run.