opys-engine 0.12.0

Core library for opys — a file-based inventory of typed markdown documents with a verify gate and SQL query layer
Documentation
[workspace]
members = [
    "opys-backend-markdown-local",
    "opys-tui",
    "opys",
]
resolver = "2"

# All four crates share one version and release together.
[workspace.package]
version = "0.12.0"

[package]
name = "opys-engine"
version.workspace = true
edition = "2021"
# 1.88 is the real floor: while gluesql's core only needs edition 2024 (≥ 1.85),
# other deps in the tree (time, darling) require 1.88. Verify with `msrv`.
rust-version = "1.88"
description = "Core library for opys — a file-based inventory of typed markdown documents with a verify gate and SQL query layer"
license = "Apache-2.0"
repository = "https://github.com/BohdanTkachenko/opys"
readme = "README.md"
keywords = ["feature-inventory", "traceability", "markdown", "sql", "ci"]
categories = ["development-tools"]
# skills/ is shipped: src/templates.rs embeds skills/opys/agent-rule.md.
exclude = [
    ".github/",
    ".claude-plugin/",
    ".codex-plugin/",
    "pi-extension/",
    "package.json",
    "gemini-extension.json",
    "opencode.json",
]

[features]
default = []
# In-process git history for `opys history <id>`, via gix. Off by default so the
# standard build (and the MSRV check) never depends on gix or any git library.
history = ["dep:gix"]
# Gate the `tui` subcommand (the enum variant + dispatch); the actual UI lives in
# the opys-tui crate, wired in by the binary's matching `tui` feature.
tui = []

[lib]
name = "opys_engine"
path = "src/lib.rs"

[dependencies]
clap = { version = "4", features = ["derive", "env"] }
serde = { version = "1", features = ["derive"] }
serde_norway = "0.9"
serde_json = "1"
toml = "0.8"
regex = "1"
walkdir = "2"
anyhow = "1"
thiserror = "1"
time = { version = "0.3", features = ["formatting", "parsing", "local-offset", "macros"] }
comrak = "0.52"
gluesql = { version = "0.19.0", default-features = false, features = [
    "gluesql_memory_storage",
] }
futures = "0.3"
termimad = "0.34"
gix = { version = "0.84", default-features = false, features = [
    "sha1",
], optional = true }

[dev-dependencies]
tempfile = "3"