47 lines
949 B
Python
47 lines
949 B
Python
"""Data models for shell-speak."""
|
|
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
|
|
|
|
@dataclass
|
|
class CommandPattern:
|
|
"""A pattern for matching natural language to shell commands."""
|
|
name: str
|
|
tool: str
|
|
description: str
|
|
patterns: list[str]
|
|
template: str
|
|
explanation: str = ""
|
|
examples: list[str] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class CommandMatch:
|
|
"""A match between natural language and a shell command."""
|
|
pattern: CommandPattern
|
|
confidence: float
|
|
matched_query: str
|
|
command: str
|
|
explanation: str
|
|
|
|
|
|
@dataclass
|
|
class HistoryEntry:
|
|
"""An entry in the command history."""
|
|
query: str
|
|
command: str
|
|
tool: str
|
|
timestamp: datetime
|
|
explanation: str = ""
|
|
|
|
|
|
@dataclass
|
|
class Correction:
|
|
"""A user correction for a query."""
|
|
original_query: str
|
|
corrected_command: str
|
|
tool: str
|
|
timestamp: datetime
|
|
explanation: str = ""
|