[package]
name = "cel-brief"
version = "0.2.0"
edition = "2021"
rust-version = "1.76"
license = "Apache-2.0"
authors = ["Dimitrios Pagkratis <dimitris@timberhub.com>"]
homepage = "https://github.com/dimpagk92/cel-brief"
documentation = "https://docs.rs/cel-brief"
repository = "https://github.com/dimpagk92/cel-brief"
description = "Composable prompt briefing for AI agents: gather sources, enforce token budgets, apply governance, and emit receipts."
keywords = ["ai", "llm", "agent", "context", "prompt"]
categories = ["asynchronous"]
readme = "README.md"

[dependencies]
async-trait = "0.1"
cel-memory = { version = "0.2.0", optional = true }
futures-util = "0.3"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "1"
tiktoken-rs = { version = "0.7", optional = true }
tokio = { version = "1", default-features = false, features = ["macros", "time"] }
tracing = { version = "0.1", optional = true }

[features]
default = []
memory = ["dep:cel-memory"]
perception = []
# Enable the optional `TiktokenCl100k` tokenizer (downloads BPE assets at build
# time via `tiktoken-rs`). Off by default to keep the dependency surface tiny;
# turn on when you need ground-truth OpenAI/cl100k-base counts.
tiktoken = ["dep:tiktoken-rs"]
# Internal `tracing` instrumentation on the builder hot path. Optional so
# downstream consumers that do not use tracing pay no cost.
tracing = ["dep:tracing"]

[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread", "sync", "time"] }

# `with_memory.rs` exercises the `memory` feature integration — it needs
# `cel-memory` in scope, which is only linked when that feature is on.
[[example]]
name = "with_memory"
required-features = ["memory"]

# Benchmarks run as standalone binaries — `harness = false` skips the default
# `#[bench]` harness (which requires nightly) and lets us hand-roll timing
# loops with `std::time::Instant`. Keeps the dev-dep footprint to zero.
[[bench]]
name = "build"
harness = false
required-features = ["memory"]
