Files
OmniRoute/src
Diego Rodrigues de Sa e Souza d78740bcb0 feat: add live gRPC-web quota fetcher for grok-cli (#6844) (#7714)
* feat(sse): add live gRPC-web quota fetcher for grok-cli (#6844)

* fix(sse): send gRPC-web request frame + decode real GetGrokCreditsConfig schema

Live validation against grok.com (real bearer token, tier-4 account) proved
the #6844 grok-cli quota fetcher was a silent no-op:

- The POST to GetGrokCreditsConfig had no body. gRPC-web requires a request
  frame even for a no-argument RPC; without one the upstream returns
  `grpc-status: 13 "Missing request message."` with a 0-byte response.
  Fixed by sending the empty gRPC-web frame (flag 0x00 + 4-byte length 0).

- The decoder's field mapping (top-level field 1 = double percent, field 2 =
  string resetAt) was reverse-engineered from a third-party doc and never
  matched the real response. The real shape is: top-level field 1 is a
  NESTED message whose subfield 1 is a fixed32 float usage ratio (0..1) and
  subfield 5 is a Timestamp{seconds,nanos} reset time. grokCliQuotaFrame.ts
  now decodes that nested shape; grokCliQuotaFetcher.ts's buildQuota()
  rescales the decoder's 0-100 percentUsed back to the 0-1 fraction the rest
  of the quota pipeline expects (quotaPreflight.ts::remainingPercentFrom).

- The response's 2nd gRPC-web frame (trailer, flag 0x80) is now explicitly
  walked-and-skipped instead of relying on incidental length-bounding.

Test fixtures in both files now encode the real captured wire structure
(nested message, fixed32 ratio, Timestamp reset, trailer frame) instead of
the old synthetic fixed64-double buffers, and the stale "Cloudflare
non-blocking is an assumption" comment is corrected to reflect that it is
now live-validated.
2026-07-20 15:57:29 -03:00
..
2026-07-13 09:12:40 -03:00
2026-06-25 13:17:40 -03:00
2026-06-27 09:07:12 -03:00
2026-06-29 08:40:06 -03:00
2026-06-29 16:51:03 -03:00