#![forbid(unsafe_code)]
pub const SPEC_VERSION: &str = "1.0";
#[derive(Debug, Clone)]
pub struct Extension {
pub meta: Meta,
pub activation: Option<Activation>,
pub capabilities: Vec<Capability>,
pub content: String,
}
#[derive(Debug, Clone)]
pub struct Meta {
pub name: String,
pub description: String,
pub axe_version: String,
pub version: Option<String>,
}
#[derive(Debug, Clone)]
pub struct Activation {
pub mode: ActivationMode,
pub patterns: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ActivationMode {
Always,
Glob,
ModelDecision,
Manual,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Capability {
ToolUse,
FileRead,
FileEdit,
ShellExec,
WebSearch,
Hook(HookEvent),
VariableSub,
Subagent,
McpServer,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum HookEvent {
SessionStart,
SessionEnd,
PreTool,
PostTool,
UserPrompt,
PreCompact,
SubagentStart,
SubagentStop,
Custom(String),
}
#[derive(Debug, Clone)]
pub struct Diagnostic {
pub level: DiagnosticLevel,
pub target: String,
pub capability: String,
pub message: String,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DiagnosticLevel {
Info,
Warning,
Error,
}