• keh4l's avatar
    feat(gateway): align body shape with real Claude Code CLI defaults · a25faeca
    keh4l authored
    Three field-level alignments in normalizeClaudeOAuthRequestBody to
    match real Claude Code CLI traffic byte-for-byte:
    
      1. temperature: previously deleted unconditionally; now passes
         through client value, defaults to 1 when absent (real CLI
         always sends temperature, default 1).
    
      2. max_tokens: defaults to 128000 when absent (real CLI default).
    
      3. context_management: when thinking.type is enabled/adaptive
         and the client did not provide context_management, inject
         {"edits":[{"type":"clear_thinking_20251015","keep":"all"}]}
         to mirror real CLI behavior.
    
    tool_choice removal is unchanged (Claude Code OAuth credentials
    do not allow client-supplied tool_choice).
    
    Tests updated:
      - gateway_body_order_test.go: temperature/max_tokens are now
        expected in output; tool_choice still removed.
      - gateway_prompt_test.go: system array is now 2 blocks
        (billing + cc prompt), assertions adjusted.
      - gateway_anthropic_apikey_passthrough_test.go: same 2-block
        assertion.
    a25faeca
gateway_anthropic_apikey_passthrough_test.go 44.1 KB