pub mod hook;
pub mod mcp;
pub mod service;
use clap::ValueEnum;
use serde::{Deserialize, Serialize};
pub use hook::{
ClaudePreToolUseOutput, ClaudeStopHookOutput, GeminiStopDecision, GeminiStopHookOutput,
HookInput, HookSpecificOutput, InternalStopHookOutput, PermissionDecision, StopDecision,
};
pub use mcp::{McpError, ToolDefinition};
pub use service::{
ChatMessage, ContentBlock, GitHubAuthorRef, GitHubDiscussionComment, GitHubIssueRef,
GitHubLabelRef, GitHubPRRef, GitHubReviewComment, IssueState, ServiceRequest, ServiceResponse,
StopReason, Tool, Usage,
};
#[derive(
Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, ValueEnum, Default, strum::Display,
)]
#[serde(rename_all = "lowercase")]
#[strum(serialize_all = "lowercase")]
pub enum Runtime {
#[default]
Claude,
Gemini,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, ValueEnum, strum::Display)]
#[strum(serialize_all = "kebab-case")]
pub enum HookEventType {
PreToolUse,
PostToolUse,
Notification,
Stop,
SubagentStart,
SubagentStop,
PreCompact,
SessionStart,
SessionEnd,
PermissionRequest,
UserPromptSubmit,
AfterAgent,
}