rtb-chat 0.7.1

Unified multi-provider AI chat client for Claude, OpenAI, Gemini, and OpenAI-compatible endpoints. Part of the phpboyscout Rust toolkit.
Documentation
# cargo-deny configuration.
# https://embarkstudios.github.io/cargo-deny/
#
# Waiver discipline (inherited from the monorepo): every ignore entry
# carries the advisory ID, the chain that reaches this graph, and a
# dated sunset condition. Prune entries the same day a dep bump removes
# the matching crate from the graph.

[advisories]
db-urls = ["https://github.com/rustsec/advisory-db"]
yanked = "deny"
ignore = [
    # ── via genai → rtb-chat ─────────────────────────────────────────
    # `paste` (1.0.15) unmaintained. genai declares `paste = "1.0"`
    # directly (added in genai 0.6; 0.5 avoided it) and keeps it on
    # `main` (0.7.0-beta) with no upstream issue to drop it. Benign
    # ecosystem-wide flag — a compile-time proc-macro helper, no runtime
    # surface, no known vulnerability; Azure SDK, ratatui, tauri, iceberg
    # all waive it. The `pastey` fork isn't usable here (genai is the
    # direct dependent). Sunset: re-audit quarterly (last: 2026-07-23);
    # drop when genai moves off paste.
    "RUSTSEC-2024-0436",
]

[licenses]
allow = [
    "MIT",
    "MIT-0",
    "Apache-2.0",
    "Apache-2.0 WITH LLVM-exception",
    "BSD-2-Clause",
    "BSD-3-Clause",
    "ISC",
    "Unicode-DFS-2016",
    "Unicode-3.0",
    "Zlib",
    "CC0-1.0",
    "MPL-2.0",
    "0BSD",
    # Community Data License — used by webpki-root-certs (via
    # rustls-platform-verifier ← reqwest) for the root-cert store.
    # Same allowance the monorepo carries for webpki-roots.
    "CDLA-Permissive-2.0",
]
confidence-threshold = 0.8

[bans]
multiple-versions = "warn"
wildcards = "deny"
# The enforceable "framework-free" statement (extraction playbook §2.2):
# this crate must never depend back on the tool, and never regress onto
# the workspace-banned crates.
deny = [
    { crate = "rust-tool-base" },
    { crate = "rtb-cli-bin" },
    # anyhow is banned from library code (thiserror + miette are the
    # error surface). No wrappers needed: this crate has no cucumber
    # dev-dep and genai does not pull anyhow — nothing in the resolved
    # graph carries it today.
    { crate = "anyhow" },
    { crate = "openssl-sys" },
    { crate = "native-tls" },
]

[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]