1mod clean;
23mod config;
24mod default;
25mod describe;
26mod gui;
27mod improve;
28mod init;
29mod list;
30mod monitor;
31mod pr_review;
32mod projects;
33mod resume;
34mod run;
35mod status;
36
37pub use clean::{
38 clean_command, clean_data_direct, clean_orphaned_direct, clean_worktrees_direct,
39 format_bytes_display, remove_project_direct, CleanOptions, CleanupSummary, DataCleanupSummary,
40 DirectCleanOptions, RemovalSummary, SkippedSession, SkippedWorktree,
41};
42pub use config::{
43 config_display_command, config_reset_command, config_set_command, ConfigScope, ConfigSubcommand,
44};
45pub use default::default_command;
46pub use describe::describe_command;
47pub use gui::gui_command;
48pub use improve::{
49 build_improve_prompt, gather_git_context, improve_command, load_follow_up_context,
50 FollowUpContext, GitContext,
51};
52pub use init::init_command;
53pub use list::list_command;
54pub use monitor::monitor_command;
55pub use pr_review::pr_review_command;
56pub use projects::projects_command;
57pub use resume::resume_command;
58pub use run::{run_command, run_with_file};
59pub use status::{all_sessions_status_command, global_status_command, status_command};
60
61use std::path::Path;
62
63#[derive(Debug, Clone, Copy, PartialEq)]
65pub enum InputType {
66 Json,
68 Markdown,
70}
71
72pub fn detect_input_type(path: &Path) -> InputType {
74 match path.extension().and_then(|e| e.to_str()) {
75 Some("json") => InputType::Json,
76 _ => InputType::Markdown,
77 }
78}
79
80pub fn ensure_project_dir() -> crate::error::Result<()> {
88 crate::config::ensure_project_config_dir()?;
89 Ok(())
90}