1. 24 Mar, 2026 19 commits
  2. 23 Mar, 2026 12 commits
    • qingyuzhang's avatar
      ce8520c9
    • qingyuzhang's avatar
      0b3928c3
    • Wang Lvyuan's avatar
      Add bulk OpenAI OAuth WS mode editing · adbedd48
      Wang Lvyuan authored
      adbedd48
    • Ethan0x0000's avatar
      Merge remote-tracking branch 'origin/feat/ops-error-observability-transfer'... · 13b72f6b
      Ethan0x0000 authored
      Merge remote-tracking branch 'origin/feat/ops-error-observability-transfer' into feat/anthropic-openai-endpoint-compat
      
      # Conflicts:
      #	frontend/src/api/admin/ops.ts
      #	frontend/src/views/admin/ops/components/OpsErrorDetailModal.vue
      #	frontend/src/views/admin/ops/components/OpsErrorLogTable.vue
      13b72f6b
    • Ethan0x0000's avatar
      feat(frontend): display error observability fields in ops admin panel · c5aa96a3
      Ethan0x0000 authored
      Show endpoint, model mapping, and request type in the ops error log
      table and detail modal:
      - Endpoint column with inbound/upstream tooltip
      - Model column showing requested→upstream mapping with arrow
      - Request type badge (sync/stream/ws) in status column
      - New detail cards for inbound endpoint, upstream endpoint, request type
      c5aa96a3
    • Ethan0x0000's avatar
      feat(routes): add platform-based routing split for /v1/responses and /v1/chat/completions · d927c0e4
      Ethan0x0000 authored
      Mirror the existing /v1/messages platform split pattern:
      - OpenAI groups → OpenAIGateway handlers (existing, unchanged)
      - Non-OpenAI groups → Gateway handlers (new Anthropic-upstream path)
      
      Updated both /v1 prefixed routes and non-prefixed alias routes
      (/responses, /chat/completions). WebSocket route (/v1/responses GET)
      remains OpenAI-only as Anthropic has no WebSocket equivalent.
      d927c0e4
    • Ethan0x0000's avatar
      feat(handler): add Responses/ChatCompletions handlers on GatewayHandler · 31660c4c
      Ethan0x0000 authored
      New HTTP handlers for Anthropic platform groups accepting OpenAI-format
      endpoints:
      
      - GatewayHandler.Responses: /v1/responses for non-OpenAI groups
      - GatewayHandler.ChatCompletions: /v1/chat/completions for non-OpenAI groups
      
      Both handlers include:
      - Claude Code only restriction (403 reject when claude_code_only enabled,
        since these endpoints are never Claude Code clients)
      - Full auth → billing → user/account concurrency → failover loop
      - Ops error/endpoint context propagation
      - Async usage recording via worker pool
      
      Error responses use each endpoint's native format (Responses API format
      for /v1/responses, CC format for /v1/chat/completions).
      31660c4c
    • Ethan0x0000's avatar
      feat(service): add ForwardAsResponses/ForwardAsChatCompletions on GatewayService · 4321adab
      Ethan0x0000 authored
      New forwarding methods on GatewayService for Anthropic platform groups:
      
      - ForwardAsResponses: accept Responses body → convert to Anthropic →
        forward to upstream → convert response back to Responses format.
        Supports both streaming (SSE event-by-event conversion) and buffered
        (accumulate then convert) response modes.
      - ForwardAsChatCompletions: chain CC→Responses→Anthropic for request,
        Anthropic→Responses→CC for response. Streaming uses dual state machine
        chain with [DONE] marker.
      
      Both methods reuse existing GatewayService infrastructure:
      buildUpstreamRequest, Claude Code mimicry, cache control enforcement,
      model mapping, and return UpstreamFailoverError for handler-level retry.
      4321adab
    • Ethan0x0000's avatar
      feat(apicompat): add ResponsesAnthropic bidirectional format conversion · 68f151f5
      Ethan0x0000 authored
      Add reverse-direction converters for Anthropic platform groups to accept
      OpenAI-format requests:
      
      - ResponsesToAnthropicRequest: Responses API input → Anthropic Messages
        request with system extraction, tool/toolChoice mapping, reasoning
        effort conversion, image data URIbase64, and consecutive role merging
      - AnthropicToResponsesResponse: Anthropic response → Responses response
        with content block→output item mapping, usage, stop_reason→status
      - AnthropicEventToResponsesEvents: stateful SSE stream converter
        (Anthropic streaming protocol → Responses streaming protocol)
      - FinalizeAnthropicResponsesStream: synthetic termination for
        incomplete streams
      68f151f5
    • Ethan0x0000's avatar
      ecad083f
    • liruiluo's avatar
      Ignore deploy runtime data in docker context · fee43e84
      liruiluo authored
      fee43e84
    • weak-fox's avatar
      feat(admin): add account privacy mode filter · 4838ab74
      weak-fox authored
      4838ab74
  3. 22 Mar, 2026 4 commits
  4. 21 Mar, 2026 5 commits