Commit Graph

2 Commits

  • Enhance provider override to support baseUrl-only mode
    Builds on #406 to support simpler proxy use case:
    - Override just baseUrl to route built-in provider through proxy
    - All built-in models preserved, no need to redefine them
    - Full replacement still works when models array is provided
  • Allow models.json to override built-in providers (#406)
    * Allow models.json to override built-in providers
    
    When a provider is defined in models.json with the same name as a
    built-in provider (e.g., 'anthropic', 'google'), the built-in models
    for that provider are completely replaced by the custom definition.
    
    This enables users to:
    - Use custom base URLs (proxies, self-hosted endpoints)
    - Define a subset of models they want available
    - Customize model configurations for built-in providers
    
    Example usage in ~/.pi/agent/models.json:
    {
      "providers": {
        "anthropic": {
          "baseUrl": "https://my-proxy.example.com/v1",
          "apiKey": "ANTHROPIC_API_KEY",
          "api": "anthropic-messages",
          "models": [...]
        }
      }
    }
    
    * Refactor model-registry for readability
    
    - Extract CustomModelsResult type and emptyCustomModelsResult helper
    - Extract loadBuiltInModels method with clear skip logic
    - Simplify loadModels with destructuring and ternary
    - Reduce repetition in error handling paths
    
    * Refactor model-registry tests for readability
    
    - Extract providerConfig() helper to hide irrelevant model fields
    - Extract writeModelsJson() helper for file writing
    - Extract getModelsForProvider() helper for filtering
    - Move modelsJsonPath to beforeEach
    
    Reduces test file from 262 to 130 lines while maintaining same coverage.