okc 0.1.0

A local-first tool for AI agents to browse, parse, search, and reason over Open Knowledge Format (OKF) repositories
Documentation
[package]
name = "okc"
version = "0.1.0"
edition = "2021"
rust-version = "1.95"
description = "A local-first tool for AI agents to browse, parse, search, and reason over Open Knowledge Format (OKF) repositories"
repository = "https://github.com/guifelix/Open-Knowledge-Catalog"
homepage = "https://github.com/guifelix/Open-Knowledge-Catalog"
license = "MIT"
keywords = ["knowledge-management", "okf", "ai-agents", "markdown", "knowledge-base"]
categories = ["command-line-utilities", "development-tools::cargo-plugins"]

[[bin]]
name = "okc"
path = "src/main.rs"

[dependencies]
# Filesystem traversal
ignore = "0.4"

# Filesystem watching
notify = { version = "6", features = ["macos_fsevent"] }

# Front-matter boundary detection
memchr = "2"

# Serialization / YAML / TOML
serde = { version = "1", features = ["derive"] }
serde_json = "1"
saphyr = "0.0.11"
toml = "1"

# Markdown parsing
pulldown-cmark = { version = "0.13", default-features = false }

# URL percent-encoding/decoding
percent-encoding = "2.3"

# Storage
rusqlite = { version = "0.40", features = ["bundled"] }
r2d2 = "0.8"
r2d2_sqlite = "0.35"

# Content hashing
blake3 = "1"

# MCP / Async
rmcp = { version = "=3.1.1", features = ["server", "client", "transport-child-process", "transport-io", "macros", "transport-streamable-http-server", "transport-streamable-http-server-session", "transport-streamable-http-client", "transport-streamable-http-client-reqwest", "transport-worker"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread", "signal", "process", "net"] }
tokio-util = "0.7"

# CLI
clap = { version = "4", features = ["derive"] }

# HTTP Server
axum = "0.8"

# Error handling
thiserror = "2"
anyhow = "1"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }

# Schema generation for MCP
schemars = { version = "1", features = ["preserve_order"] }

# Path handling
camino = "1"
dirs = "6"

[[bench]]
name = "benchmarks"
harness = false

[dev-dependencies]
tempfile = "3"
proptest = "1"
libfuzzer-sys = "0.4"
criterion = { version = "0.5", features = ["html_reports"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
tokio-util = "0.7"

# Fuzz targets moved to `cargo fuzz` workflow (run with `cargo fuzz run`)
# fuzz/frontmatter_extraction.rs, fuzz/yaml_parsing.rs, fuzz/path_normalization.rs

[lints.rust]
# Allow specific lints that are noisy or not applicable
dead_code = "allow"
unused_imports = "allow"
missing_docs = "allow"

# Warn on these lints (stricter than default)
unused_variables = "warn"
unused_mut = "warn"
unused_assignments = "warn"

# Deny these lints (errors)
# (none for now)

[lints.clippy]
# Allow specific lints that are noisy or not applicable
type_complexity = "allow"
large_enum_variant = "allow"
module_name_repetitions = "allow"

# Warn on these lints (stricter than default)
unwrap_used = "warn"
expect_used = "warn"
panic = "warn"
todo = "warn"
unused_async = "warn"
redundant_closure = "warn"
needless_borrow = "warn"
needless_pass_by_value = "warn"
manual_map = "warn"
manual_flatten = "warn"
filter_map_next = "warn"
map_unwrap_or = "warn"

# Deny these lints (errors)
# (none for now - we use warn to avoid breaking existing code)