From 75f90d40e5604584833ae95aadd7fab854aac498 Mon Sep 17 00:00:00 2001 From: Juan Barbat Date: Fri, 23 Oct 2026 16:45:18 -0300 Subject: [PATCH] docs(odd): alinear S5 de grok-provider con Status::Warning real MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review del maintainer en #177 señaló que la spec pedía Status::Error pero la implementación degrada con Warning (como codex.rs). Se alinea la spec con el código. --- odd/tasks/grok-provider.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odd/tasks/grok-provider.md b/odd/tasks/grok-provider.md index cccc749..36988bf 100644 --- a/odd/tasks/grok-provider.md +++ b/odd/tasks/grok-provider.md @@ -8,7 +8,7 @@ Provider SuperGrok (Grok Build CLI) para Quorb — issue #173. - S2: "Credenciales: token Bearer del login local del Grok CLI oficial (`grok`), en `~/.grok/auth.json`. Detección y lectura con parseo defensivo; sin importar cookies de navegador en una primera etapa." Detalle del formato: claves de nivel superior son URLs de scope OIDC; se prefiere la entrada bajo `https://auth.x.ai::` (fallback: `https://accounts.x.ai/sign-in`); token en campo `key`; respeto `GROK_HOME` y `credentials_path`. - S3: "Endpoints: `GET https://cli-chat-proxy.grok.com/v1/billing?format=credits` → `creditUsagePercent` (porcentaje usado 0–100), ventana de la semana y reset. `GET https://cli-chat-proxy.grok.com/v1/settings` (opcional) → nombre del plan visible." Headers: `Authorization: Bearer `, `x-xai-token-auth: xai-grok-cli`, `Accept: application/json`. Reset: `config.currentPeriod.end`, luego `config.billingPeriodEnd`. Ventana: `currentPeriod.start/end`, fallback `billingPeriodStart/End`. Porcentaje fallback: `onDemandUsed.val / onDemandCap.val * 100`. - S4: "Medidores: anillo principal con porcentaje de créditos usados de la ventana semanal (`percent`, `resets_at`, `window_seconds` = 7 días). Identificación del plan activo en el detalle." -- S5: "Robustez: ante cambios del formato, degradar con mensaje claro (`Status::Error`) en lugar de romper; parseo tolerante como en `codex.rs`." Sin `creditUsagePercent` ni fallback on-demand pero con período activo → uso desconocido, no 0%. +- S5: "Robustez: ante cambios del formato, degradar con mensaje claro (`Status::Warning`) en lugar de romper; parseo tolerante como en `codex.rs`." Sin `creditUsagePercent` ni fallback on-demand pero con período activo → uso desconocido, no 0%. (Alineado con la implementación: el formato irreconocible y el uso desconocido usan `Warning`, como `codex.rs`; revisión post-merge por comentario del maintainer en #177.) - S6: "Interfaz y assets: logo en `ProviderLogo.tsx` con alias `grok`. Sección en `Settings.tsx` (pestaña `grok`, estado en `mainState` según presencia del auth file/token). Inclusión en `widget-refresh.ts`." - S7: "Tests: unitarios deterministas en Rust con fixtures JSON representativas (sin red), incluyendo caso de respuesta legacy sin `creditUsagePercent`."