[package]
name         = "garudust-platforms"
version      = { workspace = true }
edition      = { workspace = true }
authors      = { workspace = true }
license      = { workspace = true }
repository   = { workspace = true }
homepage     = { workspace = true }
rust-version = { workspace = true }
description  = "Chat platform adapters for Garudust agents: Telegram, Discord, Slack, Matrix, LINE, Webhook"
keywords     = ["chatbot", "telegram", "discord", "slack", "bot"]
categories   = ["network-programming", "web-programming"]

[features]
default  = ["telegram", "webhook"]
telegram = ["dep:teloxide"]
discord  = ["dep:serenity"]
webhook  = ["dep:axum", "dep:hmac", "dep:sha2", "dep:hex", "dep:bytes"]
slack    = ["dep:tokio-tungstenite"]
matrix   = ["dep:matrix-sdk"]
line     = ["dep:hmac", "dep:sha2", "dep:base64", "dep:axum", "dep:dashmap", "dep:garudust-memory"]
whatsapp = ["dep:hmac", "dep:sha2", "dep:hex", "dep:axum"]
all      = ["telegram", "discord", "webhook", "slack", "matrix", "line", "whatsapp"]

[dependencies]
garudust-core   = { path = "../garudust-core",   version = "0.9.0" }
garudust-agent  = { path = "../garudust-agent",  version = "0.9.0" }
garudust-memory = { path = "../garudust-memory", version = "0.9.0", optional = true }
async-trait    = { workspace = true }
serde          = { workspace = true }
serde_json     = { workspace = true }
tokio          = { workspace = true }
tracing        = { workspace = true }
anyhow         = { workspace = true }
thiserror      = { workspace = true }
futures        = { workspace = true }
reqwest        = { workspace = true }
axum              = { workspace = true, optional = true }
teloxide          = { workspace = true, optional = true }
serenity          = { workspace = true, optional = true }
tokio-tungstenite = { workspace = true, optional = true }
matrix-sdk        = { workspace = true, optional = true }
dashmap           = { workspace = true, optional = true }
hmac              = { workspace = true, optional = true }
sha2              = { workspace = true, optional = true }
base64            = { workspace = true, optional = true }
hex               = { workspace = true, optional = true }
bytes             = { workspace = true, optional = true }
