Files
inbuxa-server/crates/spam-filter/Cargo.toml
T
jcoffey-dev 9490fc4677 AI spam classification: the model's opinion as one bounded spam signal, and the llm_prompt Sieve function (AI-1 to AI-28)
The classifier sends only the subject and text, between unforgeable markers
after the operator's prompt, to an OpenAI-compatible endpoint the operator
configured; nothing is preset. Its answer maps to an LLM_ tag whose score is
clamped (+5.0, -1.0 by default) and can never discard or reject on its own;
X-Spam-LLM is sanitized, encoded and folded, and a planted one is removed.
Failures, timeouts past the ceiling, a full slot or a paused model leave
mail flowing untagged. llm_prompt answers trusted scripts, and accounts
holding interactAi within an hourly limit. Redirects aren't followed and no
content or secret is logged. The limits live in inbuxa:AiLimits.
Acceptance tests 1 and 3 to 21; test 2 as the re-enabled shared llm case,
whose setup no longer waits on a rules file from a developer's own path;
test 22 written as the ignored ai_compat.
2026-09-19 00:41:00 -07:00

42 lines
1.1 KiB
TOML

[package]
name = "spam-filter"
version = "0.16.22"
edition = "2024"
[dependencies]
utils = { path = "../utils" }
types = { path = "../types" }
nlp = { path = "../nlp" }
store = { path = "../store" }
trc = { path = "../trc" }
common = { path = "../common" }
registry = { path = "../registry" }
inbuxa-features = { path = "../features" }
smtp-proto = { version = "0.2", features = ["rkyv"] }
mail-parser = { version = "0.11", features = ["full_encoding"] }
mail-auth = { version = "0.13" }
tokio = { version = "1.53", features = ["net", "macros"] }
psl = "2"
hyper = { version = "1.11.1", features = ["server", "http1", "http2"] }
idna = "1.1"
decancer = "3.3.3"
unicode-security = "0.1.2"
infer = "0.22"
hashify = "0.2"
sha1 = "0.11"
compact_str = "0.10.0"
rkyv = { version = "0.8.18", features = ["little_endian"] }
serde = { version = "1.0", features = ["derive"]}
unicode-general-category = "1.1.0"
unicode-normalization = "0.1.25"
[features]
test_mode = []
enterprise = []
[dev-dependencies]
tokio = { version = "1.53", features = ["full"] }
[lints]
workspace = true