Skip to main content
Glama
ai_config.py4.5 kB
"""Schemas for AI-powered configuration generation.""" from typing import Any from pydantic import BaseModel, Field from enum import Enum class ScenarioType(str, Enum): """Type of security scenario.""" CUSTOM = "custom" RED_TEAM = "red_team" BLUE_TEAM = "blue_team" PURPLE_TEAM = "purple_team" PENTEST = "pentest" SOC = "soc" MALWARE_ANALYSIS = "malware_analysis" FORENSICS = "forensics" class ComplexityLevel(str, Enum): """Complexity level of the range.""" LOW = "low" MEDIUM = "medium" HIGH = "high" class ResourceProfile(str, Enum): """Resource allocation profile.""" MINIMAL = "minimal" RECOMMENDED = "recommended" MAXIMUM = "maximum" class SIEMType(str, Enum): """Supported SIEM types.""" WAZUH = "wazuh" SPLUNK = "splunk" ELASTIC = "elastic" SECURITY_ONION = "security-onion" NONE = "none" class ClarificationQuestion(BaseModel): """A clarification question to ask the user.""" question: str = Field(..., description="The question to ask") field: str = Field(..., description="The configuration field this clarifies") question_type: str = Field(default="text", description="Type of input: text, number, choice") options: list[str] | None = Field(default=None, description="Options for choice questions") default: Any | None = Field(default=None, description="Default value if not answered") class ParsedRequirements(BaseModel): """Structured requirements parsed from natural language.""" needs_domain_controller: bool = False domain_name: str = "corp.local" dc_hostname: str | None = None workstation_count: int = 0 server_types: list[str] = Field(default_factory=list) needs_attacker: bool = False include_monitoring: bool = True siem_type: SIEMType = SIEMType.WAZUH scenario_type: ScenarioType = ScenarioType.CUSTOM tags: list[str] = Field(default_factory=list) class ConfigMetadata(BaseModel): """Metadata about generated configuration.""" vm_count: int network_rules_count: int siem_type: str resource_profile: str complexity: str scenario_type: str | None = None estimated_resource_usage: dict[str, Any] | None = None class Suggestion(BaseModel): """A suggestion for improving or enhancing the configuration.""" suggestion_type: str = Field(..., description="Type: enhancement, scaling, security, learning") title: str = Field(..., description="Short title of the suggestion") description: str = Field(..., description="Detailed description") benefit: str = Field(..., description="What benefit this provides") implementation_complexity: str = Field(default="medium", description="low, medium, high") resource_impact: str | None = Field(default=None, description="Impact on resources") class ConfigGenerationResult(BaseModel): """Result of AI config generation.""" status: str = Field(..., description="success or needs_clarification") prompt: str = Field(..., description="Original user prompt") configuration: dict[str, Any] | None = Field(default=None, description="Generated Ludus config") metadata: ConfigMetadata | None = Field(default=None, description="Config metadata") parsed_requirements: ParsedRequirements | None = Field(default=None) clarifications: list[ClarificationQuestion] | None = Field(default=None) suggestions: list[Suggestion] | None = Field(default=None) educational_notes: list[str] | None = Field(default=None) next_steps: list[str] | None = Field(default=None) partial_understanding: dict[str, Any] | None = Field(default=None, description="Partial parse if clarification needed") message: str | None = Field(default=None, description="Message to user") class ConfigValidationResult(BaseModel): """Result of validating a generated configuration.""" is_valid: bool errors: list[str] = Field(default_factory=list) warnings: list[str] = Field(default_factory=list) suggestions: list[str] = Field(default_factory=list) schema_compliance: bool = True ludus_api_compatible: bool = True class EnhancementResult(BaseModel): """Result of suggesting enhancements to a configuration.""" status: str original_description: str enhancement_focus: str current_config_summary: dict[str, Any] suggested_additions: list[Suggestion] focus_specific_enhancements: list[str] implementation_notes: list[str] next_steps: list[str]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tjnull/Ludus-FastMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server