patchloom 0.2.0

Structured file editing library and CLI for AI agents: parser-backed JSON/YAML/TOML edits, multi-file batching, markdown operations, and MCP server
Documentation
[package]
name = "patchloom"
version = "0.2.0"
edition = "2024"
rust-version = "1.95"
description = "Structured file editing library and CLI for AI agents: parser-backed JSON/YAML/TOML edits, multi-file batching, markdown operations, and MCP server"
license = "MIT OR Apache-2.0"
repository = "https://github.com/patchloom/patchloom"
homepage = "https://patchloom.github.io/patchloom/"
readme = "README.md"
keywords = ["mcp", "ai-agents", "yaml", "toml", "json"]
categories = ["command-line-utilities", "development-tools", "config", "text-processing", "parser-implementations"]
authors = ["Sebastien Tardif"]
exclude = [
  "benches/",
  "tests/agent/",
  "demo/",
  "assets/",
  "docs/",
  ".github/",
  "REPO-SETUP.md",
  "MAINTAINERS.md",
  "AGENTS.md",
  "CLAUDE.md",
  "GEMINI.md",
  "Makefile",
  "dist-workspace.toml",
]

[features]
default = ["mcp"]
# Core library: all editing operations, no MCP server, no tree-sitter grammars.
# Use this when embedding patchloom as a library dependency.
core = []
# MCP server support: adds tokio async runtime, rmcp protocol, and JSON Schema.
mcp = ["rmcp", "tokio", "schemars"]
# Full: everything. Equivalent to default today.
full = ["mcp"]

[dependencies]
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
serde_yaml_ng = "0.10"
yaml-edit = "0.2"
toml_edit = { version = "0.25", features = ["serde"] }
ignore = "0.4"
globset = "0.4"
memchr = "2"
regex = "1"
similar = { version = "3", features = ["text"] }
strsim = "0.11"
tempfile = "3"
anyhow = "1"
anstream = "1"
ec4rs = "1"
clap_complete = "4"
rmcp = { version = "1", features = ["server", "transport-io", "macros"], optional = true }
tokio = { version = "1", features = ["rt-multi-thread", "io-util", "io-std", "macros"], optional = true }
schemars = { version = "1", optional = true }

[target.'cfg(unix)'.dependencies]
libc = "0.2"

[dev-dependencies]
assert_cmd = "2"
predicates = "3"
proptest = "1"
rmcp = { version = "1", features = ["client", "transport-io", "transport-child-process"] }
tokio = { version = "1", features = ["full"] }

[lints.rust]
unsafe_code = "deny"

[lints.clippy]
manual_string_new = "warn"
implicit_clone = "warn"
cloned_instead_of_copied = "warn"
redundant_else = "warn"
semicolon_if_nothing_returned = "warn"

# The profile that 'dist' will build with
[package.metadata.docs.rs]
targets = []

[profile.release]
strip = true
lto = "thin"
codegen-units = 1
panic = "abort"

[profile.dist]
inherits = "release"