[package]
license = "Apache-2.0"
name = "kigi-shared"
edition.workspace = true

[dependencies]
agent-client-protocol = { workspace = true }
anyhow = { workspace = true }
base64 = { workspace = true }
dirs = "6"
dunce = { workspace = true }
image = { workspace = true, features = ["png", "jpeg", "gif", "webp"] }
parking_lot = { workspace = true }
regex = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true, features = ["preserve_order"] }
tempfile = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
urlencoding = { workspace = true }
kigi-config-types = { workspace = true }
kigi-models = { workspace = true }
kigi-tools = { workspace = true }
kigi-tty-utils = { workspace = true }

[dev-dependencies]
uuid = { workspace = true, features = ["v4"] }

[target.'cfg(unix)'.dependencies]
libc = { workspace = true }

# objc2 runtime messaging (links libobjc only, NOT AppKit) for the fast
# NSPasteboard probes and the paste-time native image read in clipboard.rs.
# AppKit itself is dlopen'd lazily at first probe so headless processes never
# load it — preserving the no-AppKit-link rule in clipboard.rs. Version
# matches the workspace lock.
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.6.3"

# arboard for clipboard on non-macOS platforms. On macOS we use pbcopy/pbpaste
# subprocesses to avoid linking AppKit, which causes ~2 GB IOAccelerator GPU
# memory overhead in headless processes (see clipboard.rs).
# `wayland-data-control` makes arboard set the Wayland selection through the
# compositor-side data-control protocol (no surface, no focus) instead of the
# focus-mediated XWayland bridge; no-op off Linux (target-gated inside arboard).
[target.'cfg(not(target_os = "macos"))'.dependencies]
arboard = { workspace = true, features = ["wayland-data-control"] }

# Already in-graph via arboard's wayland-data-control; direct dep for the
# data-control probe in clipboard.rs (`is_primary_selection_supported`).
[target.'cfg(target_os = "linux")'.dependencies]
wl-clipboard-rs = { workspace = true }

[lints]
workspace = true
