[package]
name = "meerkat-core"
description = "Core agent logic for Meerkat (no I/O deps)"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
links = "meerkat_core"
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
keywords.workspace = true
categories.workspace = true

[dependencies]
serde = { workspace = true }
serde_json = { workspace = true }
uuid = { workspace = true }
chrono = { workspace = true }
thiserror = { workspace = true }
futures = { workspace = true }
async-trait = { workspace = true }
tracing = { workspace = true }
toml = { workspace = true }
dirs = { workspace = true }
humantime-serde = { workspace = true }
jsonschema = { workspace = true, optional = true }
schemars = { workspace = true }
strum = { workspace = true }
indexmap = { version = "2", features = ["serde"] }
parking_lot = { workspace = true }
base64 = { workspace = true }
sha2 = { workspace = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { workspace = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
tokio_with_wasm = { workspace = true }
js-sys = "0.3"
web-time = { version = "1", features = ["serde"] }
getrandom = { version = "0.3", features = ["wasm_js"] }
uuid = { version = "1.11", features = ["v4", "v7", "serde", "js"] }

[features]
default = ["schema", "jsonschema"]
schema = []
jsonschema = ["dep:jsonschema"]
__meerkat-facade-agent-factory-build = []
__meerkat-generated-authority-bridge = []

[dev-dependencies]
# Path-only (no version): dev-deps that cycle back to meerkat-core are
# stripped from the published tarball, which is the canonical cargo answer
# to dev-dependency cycles (consumers never see dev-deps).
meerkat-machine-kernels = { path = "../meerkat-machine-kernels", features = ["test-oracle"] }
meerkat-machine-schema = { path = "../meerkat-machine-schema" }
tempfile = { workspace = true }
tokio = { workspace = true, features = ["test-util", "macros"] }

[package.metadata.cargo-machete]
ignored = ["getrandom", "js-sys"]  # cfg(target_arch = "wasm32")

[lints]
workspace = true
