|
""" |
|
Cursor Rules Generator - LLM Adapter Interface |
|
|
|
This module defines the abstract base class for LLM adapters. |
|
""" |
|
|
|
from abc import ABC, abstractmethod |
|
from typing import Dict, List, Optional, Any |
|
|
|
class LLMAdapter(ABC): |
|
"""Base adapter interface for LLM providers.""" |
|
|
|
@abstractmethod |
|
def initialize(self, api_key: str, **kwargs) -> None: |
|
"""Initialize the adapter with API key and optional parameters. |
|
|
|
Args: |
|
api_key: The API key for the LLM provider |
|
**kwargs: Additional provider-specific parameters |
|
""" |
|
pass |
|
|
|
@abstractmethod |
|
def validate_api_key(self, api_key: str) -> bool: |
|
"""Validate the API key. |
|
|
|
Args: |
|
api_key: The API key to validate |
|
|
|
Returns: |
|
bool: True if the API key is valid, False otherwise |
|
""" |
|
pass |
|
|
|
@abstractmethod |
|
def get_available_models(self) -> List[Dict[str, str]]: |
|
"""Get a list of available models from the provider. |
|
|
|
Returns: |
|
List[Dict[str, str]]: A list of model information dictionaries |
|
Each dictionary contains at least 'id' and 'name' keys |
|
""" |
|
pass |
|
|
|
@abstractmethod |
|
def generate_rule( |
|
self, |
|
model: str, |
|
rule_type: str, |
|
description: str, |
|
content: str, |
|
parameters: Optional[Dict[str, Any]] = None |
|
) -> str: |
|
"""Generate a Cursor Rule using the LLM provider. |
|
|
|
Args: |
|
model: The model ID to use for generation |
|
rule_type: The type of rule to generate (Always, Auto Attached, Agent Requested, Manual) |
|
description: A short description of the rule's purpose |
|
content: The main content of the rule |
|
parameters: Additional parameters for rule generation |
|
May include: globs, referenced_files, prompt, temperature, etc. |
|
|
|
Returns: |
|
str: The generated rule in MDC format |
|
""" |
|
pass |
|
|