Spaces:
Running
Running
#!/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" | |
} | |
] |