Commit Graph

26 Commits

  • fix(thinking): normalize effort mapping
    Route OpenAI reasoning effort through ThinkingEffortToBudget for Claude
    translators, preserve "minimal" when translating OpenAI Responses, and
    treat blank/unknown efforts as no-ops for Gemini thinking configs.
    
    Also map budget -1 to "auto" and expand cross-protocol thinking tests.
  • fix(thinking): centralize reasoning_effort mapping
    Move OpenAI `reasoning_effort` -> Gemini `thinkingConfig` budget logic into
    shared helpers used by Gemini, Gemini CLI, and antigravity translators.
    
    Normalize Claude thinking handling by preferring positive budgets, applying
    budget token normalization, and gating by model support.
    
    Always convert Gemini `thinkingBudget` back to OpenAI `reasoning_effort` to
    support allowCompat models, and update tests for normalization behavior.
  • fix(thinking): gate reasoning effort by model support
    Only map OpenAI reasoning effort to Claude thinking for models that support
    thinking and use budget tokens (not level-based thinking).
    
    Also add "xhigh" effort mapping and adjust minimal/low budgets, with new
    raw-payload conversion tests across protocols and models.
  • feat(translator): improve Claude request handling with enhanced content processing
    - Introduced helper functions (`appendTextContent`, `appendImageContent`, etc.) for structured content construction.
    - Refactored message generation logic for better clarity, supporting mixed content scenarios (text, images, and function calls).
    - Added `flushMessage` to ensure proper grouping of message contents.
  • feat(registry/runtime): add Gemini 2.5 model and increase buffer sizes
    - Added new "Gemini 2.5 Flash Image Preview" model definition, with enhanced image generation capabilities.
    - Increased scanner buffer size to 20,971,520 bytes across executors and translators to handle larger payloads.
  • feat(translator): add usage metadata aggregation for Claude and OpenAI responses
    - Integrated input, output, reasoning, and total token tracking in response processing for Claude and OpenAI.
    - Ensured support for usage details even when specific fields are missing in the response.
    - Enhanced completion outputs with aggregated usage details for accurate reporting.
  • feat(translator): add user metadata generation for Claude transformation requests
    - Introduced unique `user_id` metadata generation in OpenAI to Claude transformation functions.
    - Utilized `uuid` and `sha256` for deterministic `account`, `session`, and `user` values.
    - Embedded `user_id` into request payloads to enhance request tracking and identification.
  • feat(translators): add token counting support for Claude and Gemini responses
    - Implemented `TokenCount` transform method across translators to calculate token usage.
    - Integrated token counting logic into executor pipelines for Claude, Gemini, and CLI translators.
    - Added corresponding API endpoints and handlers (`/messages/count_tokens`) for token usage retrieval.
    - Enhanced translation registry to support `TokenCount` functionality alongside existing response types.
  • feat(usage): implement usage tracking infrastructure across executors
    - Added `LoggerPlugin` to log usage metrics for observability.
    - Introduced a new `Manager` to handle usage record queuing and plugin registration.
    - Integrated new usage reporter and detailed metrics parsing into executors, covering providers like OpenAI, Codex, Claude, and Gemini.
    - Improved token usage breakdown across streaming and non-streaming responses.
  • feat(translators): improve system instruction extraction and input handling for OpenAI and Claude responses
    - Enhanced support for extracting system instructions from input arrays.
    - Improved input message role and type determination logic for consistent message processing.
    - Refined instruction handling logic across translator types for better compatibility.
  • feat: introduce custom provider example and remove redundant debug logs
    - Added `examples/custom-provider/main.go` showcasing custom executor and translator integration using the SDK.
    - Removed redundant debug logs from translator modules to enhance code cleanliness.
    - Updated SDK documentation with new usage and advanced examples.
    - Expanded the management API with new endpoints, including request logging and GPT-5 Codex features.
  • refactor: standardize constant naming and improve file-based auth handling
    - Renamed constants from uppercase to CamelCase for consistency.
    - Replaced redundant file-based auth handling logic with the new `util.CountAuthFiles` helper.
    - Fixed various error-handling inconsistencies and enhanced robustness in file operations.
    - Streamlined auth client reload logic in server and watcher components.
    - Applied minor code readability improvements across multiple packages.
  • Update internal module imports to use v5 package path
    - Updated all `github.com/luispater/CLIProxyAPI/internal/...` imports to point to `github.com/luispater/CLIProxyAPI/v5/internal/...`.
    - Adjusted `go.mod` to specify `module github.com/luispater/CLIProxyAPI/v5`.
  • Add reasoning/thinking configuration handling for Claude and OpenAI translators
    - Implemented `thinkingConfig` handling to allow reasoning effort configuration in request generation.
    - Added support for reasoning content deltas (`thinking_delta`) in response processing.
    - Enhanced reasoning-related token budget mappings for various reasoning levels.
    - Improved response handling logic to ensure proper reasoning content inclusion.
  • Refactor translator packages for OpenAI Chat Completions
    - Renamed `openai` packages to `chat_completions` across translator modules.
    - Introduced `openai_responses_handlers` with handlers for `/v1/models` and OpenAI-compatible chat completions endpoints.
    - Updated constants and registry identifiers for OpenAI response type.
    - Simplified request/response conversions and added detailed retry/error handling.
    - Added `golang.org/x/crypto` for additional cryptographic functions.
  • Refactor translator packages for OpenAI Chat Completions
    - Renamed `openai` packages to `chat_completions` across translator modules.
    - Introduced `openai_responses_handlers` with handlers for `/v1/models` and OpenAI-compatible chat completions endpoints.
    - Updated constants and registry identifiers for OpenAI response type.
    - Simplified request/response conversions and added detailed retry/error handling.
    - Added `golang.org/x/crypto` for additional cryptographic functions.
  • Refactor translator packages for OpenAI Chat Completions
    - Renamed `openai` packages to `chat_completions` across translator modules.
    - Introduced `openai_responses_handlers` with handlers for `/v1/models` and OpenAI-compatible chat completions endpoints.
    - Updated constants and registry identifiers for OpenAI response type.
    - Simplified request/response conversions and added detailed retry/error handling.
    - Added `golang.org/x/crypto` for additional cryptographic functions.
  • Suppress debug logs for model routing and ignore empty tools arrays
    - Comment out verbose routing logs in the API server to reduce noise.
    - Remove the `tools` field from Qwen client requests when it is an empty array.
    - Add guards in Claude, Codex, Gemini‑CLI, and Gemini translators to skip tool conversion when the `tools` array is empty, preventing unnecessary payload modifications.