magi-code 0.77.1

Repository-aware CLI coding agent for terminal work
Documentation
pub(crate) mod apply;
pub(crate) mod block;
pub(crate) mod format;
pub(crate) mod input;
pub(crate) mod model;
pub(crate) mod normalize;
pub(crate) mod parser;
pub(crate) mod recovery;
pub(crate) mod snapshots;
pub(crate) mod tokenizer;
pub(crate) mod tool;

pub(crate) use snapshots::HashlineSnapshotStore;

#[derive(Debug, Clone, PartialEq, Eq)]
pub(crate) enum HashEditOperationSummary {
    Update { path: String },
    Move { path: String, destination: String },
    Delete { path: String },
}

pub(crate) fn operation_summaries(input: &str) -> Vec<HashEditOperationSummary> {
    input::parse_input(input, input::SplitOptions::default())
        .unwrap_or_default()
        .into_iter()
        .map(|section| match section.file_op {
            Some(model::FileOp::Move { dest }) => HashEditOperationSummary::Move {
                path: section.path,
                destination: dest,
            },
            Some(model::FileOp::Remove) => HashEditOperationSummary::Delete { path: section.path },
            None => HashEditOperationSummary::Update { path: section.path },
        })
        .collect()
}