Skip to main content

roder_edit_core/
lib.rs

1pub mod fuzzy;
2pub mod hunks;
3pub mod patch;
4pub mod post_edit;
5pub mod read;
6pub mod replace;
7pub mod write;
8
9use serde::{Deserialize, Serialize};
10
11pub use hunks::{EditHunk, HunkDiffLine, HunkDiffLineKind};
12pub use patch::{
13    CodexPatchChange, CodexPatchOp, apply_codex_patch_to_workspace, parse_codex_patch,
14};
15pub use post_edit::{
16    PostEditDiagnostic, PostEditHooks, PostEditOutcome, PostEditValidator, ValidatorPolicy,
17    normalize_inserted_indentation, run_post_edit_hooks,
18};
19pub use read::{ReadFormatOptions, format_line_numbered_read};
20pub use replace::{EditApplyError, EditMatchMode, EditOptions, apply_edit, apply_multi_edit};
21pub use write::{WriteFileOutcome, write_file};
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
24pub struct ReadRequest {
25    pub path: String,
26    pub start_line: Option<usize>,
27    pub limit: Option<usize>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
31pub struct WriteRequest {
32    pub path: String,
33    pub content: String,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
37pub struct EditRequest {
38    pub path: String,
39    pub old_string: String,
40    pub new_string: String,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
44pub struct MultiEditRequest {
45    pub path: String,
46    pub edits: Vec<TextEdit>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
50pub struct ApplyPatchRequest {
51    pub patch: String,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
55pub struct TextEdit {
56    pub old_string: String,
57    pub new_string: String,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
61pub struct EditToolResult {
62    pub path: String,
63    pub replacements: usize,
64    pub hunks: Vec<EditHunk>,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
68pub struct EditToolError {
69    pub kind: String,
70    pub message: String,
71    pub edit: Option<usize>,
72    pub candidates: Vec<fuzzy::FuzzyCandidate>,
73}