devme's picture
Upload 90 files
9314c03 verified
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Model configuration and catalog for Warp API
Contains model definitions, configurations, and OpenAI compatibility mappings.
"""
import time
def get_model_config(model_name: str) -> dict:
"""
Simple model configuration mapping.
All models use the same pattern: base model + o3 planning + auto coding
"""
# Known models that map directly
known_models = {
"claude-4-sonnet", "claude-4-opus", "claude-4.1-opus",
"gpt-5", "gpt-4o", "gpt-4.1", "o3", "o4-mini",
"gemini-2.5-pro", "warp-basic"
}
model_name = model_name.lower().strip()
# Use the model name directly if it's known, otherwise use "auto"
base_model = model_name if model_name in known_models else "auto"
return {
"base": base_model,
"planning": "o3",
"coding": "auto"
}
def get_warp_models():
"""Get comprehensive list of Warp AI models from packet analysis"""
return {
"agent_mode": {
"default": "auto",
"models": [
{
"id": "auto",
"display_name": "auto",
"description": "claude 4 sonnet",
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "warp-basic",
"display_name": "lite",
"description": "basic model",
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "gpt-5",
"display_name": "gpt-5",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "claude-4-sonnet",
"display_name": "claude 4 sonnet",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "claude-4-opus",
"display_name": "claude 4 opus",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "claude-4.1-opus",
"display_name": "claude 4.1 opus",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "gpt-4o",
"display_name": "gpt-4o",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "gpt-4.1",
"display_name": "gpt-4.1",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "o4-mini",
"display_name": "o4-mini",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "o3",
"display_name": "o3",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
},
{
"id": "gemini-2.5-pro",
"display_name": "gemini 2.5 pro",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "agent"
}
]
},
"planning": {
"default": "o3",
"models": [
{
"id": "warp-basic",
"display_name": "lite",
"description": "basic model",
"vision_supported": True,
"usage_multiplier": 1,
"category": "planning"
},
{
"id": "gpt-5 (high reasoning)",
"display_name": "gpt-5",
"description": "high reasoning",
"vision_supported": False,
"usage_multiplier": 1,
"category": "planning"
},
{
"id": "claude-4-opus",
"display_name": "claude 4 opus",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "planning"
},
{
"id": "claude-4.1-opus",
"display_name": "claude 4.1 opus",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "planning"
},
{
"id": "gpt-4.1",
"display_name": "gpt-4.1",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "planning"
},
{
"id": "o4-mini",
"display_name": "o4-mini",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "planning"
},
{
"id": "o3",
"display_name": "o3",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "planning"
}
]
},
"coding": {
"default": "auto",
"models": [
{
"id": "auto",
"display_name": "auto",
"description": "claude 4 sonnet",
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "warp-basic",
"display_name": "lite",
"description": "basic model",
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "gpt-5",
"display_name": "gpt-5",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "claude-4-sonnet",
"display_name": "claude 4 sonnet",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "claude-4-opus",
"display_name": "claude 4 opus",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "claude-4.1-opus",
"display_name": "claude 4.1 opus",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "gpt-4o",
"display_name": "gpt-4o",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "gpt-4.1",
"display_name": "gpt-4.1",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "o4-mini",
"display_name": "o4-mini",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "o3",
"display_name": "o3",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
},
{
"id": "gemini-2.5-pro",
"display_name": "gemini 2.5 pro",
"description": None,
"vision_supported": True,
"usage_multiplier": 1,
"category": "coding"
}
]
}
}
def get_all_unique_models():
"""Get all unique models across all categories for OpenAI API compatibility"""
try:
models_data = get_warp_models()
unique_models = {}
# Collect all unique models across categories
for category_data in models_data.values():
for model in category_data["models"]:
model_id = model["id"]
if model_id not in unique_models:
# Create OpenAI-compatible model entry
unique_models[model_id] = {
"id": model_id,
"object": "model",
"created": int(time.time()),
"owned_by": "warp",
"display_name": model["display_name"],
"description": model["description"] or model["display_name"],
"vision_supported": model["vision_supported"],
"usage_multiplier": model["usage_multiplier"],
"categories": [model["category"]]
}
else:
# Add category if model appears in multiple categories
if model["category"] not in unique_models[model_id]["categories"]:
unique_models[model_id]["categories"].append(model["category"])
return list(unique_models.values())
except Exception:
# Fallback to simple model list
return [
{
"id": "auto",
"object": "model",
"created": int(time.time()),
"owned_by": "warp",
"display_name": "auto",
"description": "Auto-select best model"
}
]