Follow-up to #906 / #905 (per Copilot review).
CodeResponse in src/google/types.ts currently models all fields as required string. In practice, Google's OAuth code flow returns different shapes for success vs error:
- Success:
code is set; error* fields are absent
- Error:
error is set; code is absent
scope and state may also be absent depending on configuration
Suggest making the fields optional or using a discriminated success/error union to better reflect reality. Currently cosmetic — we don't read the error fields at runtime, but loose typing risks incorrect downstream assumptions.
Follow-up to #906 / #905 (per Copilot review).
CodeResponseinsrc/google/types.tscurrently models all fields as requiredstring. In practice, Google's OAuth code flow returns different shapes for success vs error:codeis set;error*fields are absenterroris set;codeis absentscopeandstatemay also be absent depending on configurationSuggest making the fields optional or using a discriminated success/error union to better reflect reality. Currently cosmetic — we don't read the error fields at runtime, but loose typing risks incorrect downstream assumptions.