Skip to main content

Module shield

Module shield 

Source
Expand description

The shield of a public address. A contact address brings work, and also insults; its mail is read first, here, before you see any of it:

  • its tone: calm, rude (swearing, contempt), or hostile (insults aimed at you, harassment, threats). Hostile mail is set aside without its sender’s words being shown: not the subject, not a line of the text;
  • its topic: work (a job, a mission, a quote), a question about your software, the press, thanks, or other; work comes first.

The reading is made of word lists (words::ShieldWords: the languages in use, French and English built in, and your changes), matched on whole words with case and accents ignored; an insult near “you” weighs more, and shouting adds to it. When you allow it, an AI reads the message too (ai_prompt), more finely; its answer is kept and takes precedence.

Structs§

AiCache
What an AI made of shielded mail, one file per account ($XDG_STATE_HOME/sioul/shield/<account>.toml): asked once per message, kept under ai_key, read with reading.
Assessment
What the shield made of a message.

Enums§

Tone
How a message speaks.
Topic
What a message is about.

Functions§

ai_key
Where an AI’s answer about a message is kept: its Message-ID, which its sender writes, and a digest of who sent it and what it says (FNV-1a), so that a message borrowing the ID of a calm one is read again, never taken for it.
ai_prompt
What an AI is asked about a message, to answer in one line of JSON.
assess
Reads a message’s subject and text: its tone and its topic, with the words in use (words::current).
assess_with
assess with these words. Each word counts once, however many lists (languages) hold it.
near_you 🔒
Whether a word saying “you” (you) stands within a few words of at; an elided one (“t’”) anywhere it is written, the word after it joined.
positions 🔒
Where phrase appears as whole words in folded, every time.
read_ai_answer
An AI’s answer, read; None when it is not the JSON asked for.
reading
How a message to a shielded address reads: the AI’s answer about this very message when it read it (found under ai_key, where sioul_sync::shield_ai keeps it), else the word lists’. Every reader goes through here (the Porch, sioul shield, the MCP server), so that none looks an answer up another way, misses it, and passes on mail the AI found hostile.
shouts 🔒
Shouting: most letters in capitals, over a real length of text.