"""CLI for Kilo plugin bridge."""
import json
import sys

from cyberbrain26.model_layer import (
    ModelFreeStatus,
    ModelRecord,
    ModelRegistry,
    ModelStatus,
    ModelTrust,
    ModelType,
    ProviderRegistry,
)
from cyberbrain26.model_layer.provider_registry import (
    ProviderRecord,
    ProviderStatus,
    ProviderTrust,
)


def list_models():
    registry = ModelRegistry()
    provider_registry = ProviderRegistry()

    # Register default free providers for PoC
    free_provider = ProviderRecord(
        provider="kilo-auto",
        status=ProviderStatus.ACTIVE,
        free_tier=True,
        api_available=True,
        available_models=["free", "efficient"],
        trust=ProviderTrust.OFFICIAL,
    )
    provider_registry.register(free_provider)

    # Register models
    free_model = ModelRecord(
        model_id="free",
        provider="kilo-auto",
        model_type=ModelType.CHAT,
        context_window=128000,
        api_available=True,
        free_status=ModelFreeStatus.FREE,
        status=ModelStatus.ACTIVE,
        trust=ModelTrust.OFFICIAL,
    )
    efficient_model = ModelRecord(
        model_id="efficient",
        provider="kilo-auto",
        model_type=ModelType.CHAT,
        context_window=128000,
        api_available=True,
        free_status=ModelFreeStatus.FREE,
        status=ModelStatus.ACTIVE,
        trust=ModelTrust.OFFICIAL,
    )
    registry.register(free_model)
    registry.register(efficient_model)

    models = registry.list_active()
    # Convert to JSON-serializable dicts
    result = []
    for m in models:
        result.append({
            "model_id": m.model_id,
            "provider": m.provider,
            "context_window": m.context_window,
            "capabilities": m.capabilities.__dict__ if hasattr(m.capabilities, '__dict__') else {},
            "free_status": m.free_status.value if hasattr(m.free_status, 'value') else str(m.free_status),
            "local_available": m.local_available,
            "api_available": m.api_available,
        })
    print(json.dumps(result))

if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == "list-models":
        list_models()
    else:
        print("Usage: python -m cyberbrain26.model_layer.cli list-models")
        sys.exit(1)