[package] name = "anybot" version = "0.1.0" edition = "2021" # Older Rust stops with a clear message instead of odd errors deep in a dependency. rust-version = "1.95" [[bin]] name = "anybot" path = "src/main.rs" [dependencies] zhconv = "0.4" eframe = "0.37" ureq = { version = "3", features = ["json"] } # 長連線 to the account server (WebSocket over the same TLS ureq uses), and compressing what goes over it. rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] } # Which certificates the account server may show: the public ones (built in), plus the ones this # computer trusts itself, so a server on the local network that signs its own (https://10.0.0.25) # works once this computer trusts it, the same as for the browser. webpki-root-certs = "1" rustls-native-certs = "0.8" flate2 = "1" # `anybot setup`: the guided setup in a terminal (servers and Linux computers without a window). crossterm = "0.29" unicode-width = "0.2" serde = { version = "1", features = ["derive"] } serde_json = "1" dirs = "7" image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp", "bmp", "tiff", "ico"] } base64 = "0.22" # VNC sign-in (the 16-byte challenge) for people watching the bots' computer. des = "0.8" chrono = "0.4" chrono-tz = "0.10" iana-time-zone = "0.1" ring = "0.17" tungstenite = { version = "0.30", default-features = false, features = ["handshake"] } calamine = "0.38.0" resvg = "0.49.0" hayro = "0.9" zip = { version = "9", default-features = false, features = ["deflate"] } rodio = { version = "0.23", default-features = false, features = ["playback", "flac", "mp3", "mp4", "vorbis", "wav", "symphonia-aiff", "symphonia-alac", "symphonia-caf"] } pdf-extract = "0.12" unicode-normalization = "0.1" cpal = "0.18" mermaid-rs-renderer = { version = "0.3", default-features = false } pulldown-cmark = { version = "0.13", default-features = false } # Seeing and using other apps through the OS accessibility APIs (AX on macOS, AT-SPI on Linux, # UI Automation on Windows): numbered UI elements a bot can act on without screenshots. # vercel-labs/agent-desktop, Apache-2.0, pinned to a release. agent-desktop-core = { git = "https://github.com/vercel-labs/agent-desktop", tag = "v1.1.0" } [profile.release] opt-level = 2 [target.'cfg(not(target_os = "macos"))'.dependencies] [target.'cfg(target_os = "linux")'.dependencies] agent-desktop-linux = { git = "https://github.com/vercel-labs/agent-desktop", tag = "v1.1.0" } x11rb = { version = "0.13", features = ["xtest", "screensaver", "record"] } # Wayland: wlroots desktops (sway, Hyprland…) through their own protocols; GNOME and KDE through # the desktop portals (one "allow" dialog, remembered). wayland-client = "0.31" # (wl.rs: SO_RCVTIMEO on the compositor socket, so a frozen compositor can't freeze the app) libc = "0.2" wayland-protocols = { version = "0.32", features = ["client", "staging", "unstable"] } wayland-protocols-wlr = { version = "0.3", features = ["client"] } wayland-protocols-misc = { version = "0.3", features = ["client"] } memmap2 = "0.9" ashpd = { version = "0.13", default-features = false, features = ["async-io", "remote_desktop", "screencast", "screenshot"] } zbus = { version = "5", default-features = false, features = ["async-io", "blocking-api"] } futures-lite = "2" async-io = "2" [target.'cfg(target_os = "macos")'.dependencies] agent-desktop-macos = { git = "https://github.com/vercel-labs/agent-desktop", tag = "v1.1.0" } # Typing by pasting (any input method, any language); already in the build through egui. arboard = { version = "3.7", default-features = false } [target.'cfg(target_os = "windows")'.dependencies] agent-desktop-windows = { git = "https://github.com/vercel-labs/agent-desktop", tag = "v1.1.0" }