Previously, the bot only had rudimentary typing notification support. It used to send a single notification when starting a long task and did not bother with notifications anymore. By default matrix-rust-sdk gives these notifications a validity of 4 seconds, so it would expire shortly. If the bot takes longer to respond, you'd see the typing notification expire and wonder if a response is coming. Another edge case is the bot sending an answer quicker and the typing notice still being on. Some clients (like element-web) seem to hide the typing notice when a new message comes, so they don't experience this as problematic. The reworked typing notification system should be robust: - typing notices are sent continuously, until the bot finishes doing work - if the bot is performing multiple actions in a room (even for different people), typing notices would continue to be sent until the bot becomes idle - as soon as the bot becomes idle, a "not typing anymore" notice is sent to clear the state
43 lines
1.3 KiB
TOML
43 lines
1.3 KiB
TOML
[package]
|
|
name = "baibot"
|
|
description = "A Matrix bot for using diffent capabilities (text-generation, text-to-speech, speech-to-text, image-generation, etc.) of AI / Large Language Models"
|
|
authors = ["Slavi Pantaleev <slavi@devture.com>"]
|
|
repository = "https://github.com/etkecc/baibot"
|
|
license = "AGPL-3.0-or-later"
|
|
readme = "README.md"
|
|
keywords = ["matrix", "chat", "bot", "AI", "LLM"]
|
|
include = ["/etc/assets/baibot-torso-768.png", "/src", "/README.md", "/CHANGELOG.md", "/LICENSE"]
|
|
version = "1.0.3"
|
|
edition = "2021"
|
|
|
|
[lib]
|
|
name = "baibot"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
anthropic-rs = "0.1.*"
|
|
anyhow = "1.0.*"
|
|
async-openai = "0.24.*"
|
|
base64 = "0.22.*"
|
|
# We'd rather not depend on this, but we cannot use the ruma-events EventContent macro without it.
|
|
matrix-sdk = { version = "0.7.1", default-features = false }
|
|
mxidwc = "1.0.*"
|
|
mxlink = "1.2.*"
|
|
etke_openai_api_rust = "0.1.*"
|
|
quick_cache = "0.6.*"
|
|
regex = "1.10.*"
|
|
serde = { version = "1.0.*", features = ["derive"], default-features = false }
|
|
serde_json = "1.0.*"
|
|
serde_yaml = "0.9.*"
|
|
tempfile = "3.12.*"
|
|
tiktoken-rs = { version = "0.5.*", features = ["async-openai"] }
|
|
tokio = { version = "1.40.*", features = ["rt", "rt-multi-thread", "macros"] }
|
|
tracing = "0.1.*"
|
|
tracing-subscriber = { version = "0.3.*", features = ["env-filter"] }
|
|
url = "2.5.*"
|
|
|
|
[profile.release]
|
|
strip = true
|
|
opt-level = "z"
|
|
lto = "thin"
|