Files
inbuxa-server/crates/features/src/lib.rs
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

26 lines
839 B
Rust

/*
* SPDX-FileCopyrightText: 2026 Coffey Labs
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
//! INBUXA's rebuilt features.
//!
//! Upstream ships these only in its Enterprise Edition. INBUXA rebuilds each
//! one clean-room from a written spec under `docs/spec/features/`, one module
//! per feature, and ships it to everybody (docs/spec/SPEC.md §2.3, §3).
//!
//! Upstream files change only by small hooks that call in here, each marked
//! with an `inbuxa:` comment naming the requirement it serves. That keeps
//! every upstream merge's conflicts few and predictable.
//!
//! This crate sits below `common`, so hooks anywhere in the server can call
//! it. It works on registry objects and the store directly, never on
//! `common::Server`.
pub mod ai;
pub mod branding;
pub mod masked_email;
pub mod tenancy;
pub mod undelete;