Wino.Mail.AI.Abstractions
0.1.0-alpha.38
dotnet add package Wino.Mail.AI.Abstractions --version 0.1.0-alpha.38
NuGet\Install-Package Wino.Mail.AI.Abstractions -Version 0.1.0-alpha.38
<PackageReference Include="Wino.Mail.AI.Abstractions" Version="0.1.0-alpha.38" />
<PackageVersion Include="Wino.Mail.AI.Abstractions" Version="0.1.0-alpha.38" />
<PackageReference Include="Wino.Mail.AI.Abstractions" />
paket add Wino.Mail.AI.Abstractions --version 0.1.0-alpha.38
#r "nuget: Wino.Mail.AI.Abstractions, 0.1.0-alpha.38"
#:package Wino.Mail.AI.Abstractions@0.1.0-alpha.38
#addin nuget:?package=Wino.Mail.AI.Abstractions&version=0.1.0-alpha.38&prerelease
#tool nuget:?package=Wino.Mail.AI.Abstractions&version=0.1.0-alpha.38&prerelease
Wino Mail AI
Mail-intelligence infrastructure shared by Wino Mail and Wino Mail API.
The solution separates four concerns:
- provider-neutral mail, artifact and metering contracts;
- deterministic HTML sanitization, visible-text extraction and content hashing;
- OpenAI structured generation, the current implementation of the summarization stage;
- the TypeSafe Jev adapter, the current implementation of the classification stage.
Processing is classification first, summarization second. Classification answers a fixed set of typed questions for every selected message — one Noul per smart label, one Noul for briefing inclusion, one Score for urgency and one Choice for the single action the recipient would take. Summarization writes a headline and a one-line summary, and only for the messages classification included in the briefing.
Urgency is a Score rather than a Choice because its levels are ordered: the answer is a
position that can land between two levels, so the cut points stay tunable in code. Every raw
probability behind a classification is kept in MailClassificationSignals, which is what lets
a threshold be retuned by re-reading stored results instead of reclassifying a mailbox.
The two stages are named for what they do, not for the models behind them. TypeSafe's Jev
implements classification today and OpenAI implements summarization; either can be replaced
without changing MailClassificationArtifact or MailSummaryArtifact.
Jev returns typed, calibrated answers and never generates free-form text. It also reads
dates as text rather than ordered quantities and cannot count or do arithmetic, so no caller
may ask it for dates, totals or multi-hop conclusions. Keep that work in application code:
JevMailClassifier projects a message's age as words such as "4 days ago" precisely because
the ordering is done here rather than asked for.
Its accuracy degrades when unrelated context is present, so JevMailClassifier projects a
deliberately tight state.
Question wording and thresholds are supplied by the caller and belong in server configuration. Calibrating a threshold must never require a contract change.
The packages are published publicly on nuget.org. The workflow requires the repository
NUGET_API_KEY secret and verifies every package after publication.
docs/architecture.md describes the pipeline these packages compose, including the identity
and freshness rules and the configuration boundary.
Build
dotnet restore Wino.Mail.AI.slnx
dotnet build Wino.Mail.AI.slnx --no-restore
dotnet test Wino.Mail.AI.slnx --no-build
Tests that call a paid provider are skipped unless WINO_AI_LIVE_TESTS=1 and
WINO_AI_OPENAI_TEST_KEY are both set, so a normal run costs nothing.
No NuGet credentials belong in source control. Configure NUGET_API_KEY as a GitHub Actions
repository secret before dispatching the public publication workflow.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Wino.Mail.AI.Abstractions:
| Package | Downloads |
|---|---|
|
Wino.Mail.Contracts
Wino Mail API Contracts package to support Wino Accounts in Wino Mail. |
|
|
Wino.Mail.AI.ContentProcessing
Deterministic HTML sanitization, visible-text extraction, Unicode normalization, bounded content processing, and SHA-256 hashing for Wino Mail AI. |
|
|
Wino.Mail.AI.OpenAI
OpenAI structured generation for Wino Mail intelligence, with retries, cancellation and explicit token metering. |
|
|
Wino.Mail.AI.PgVector
Legacy mailbox-isolated PostgreSQL insight storage for Wino Intelligence. |
|
|
Wino.Mail.AI.SqliteVec
Separate local sqlite-vec semantic index for Wino Mail with transactional versioned imports, mailbox coverage metadata, deletion, and vector search. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha.38 | 54 | 9/20/2026 |
| 0.1.0-alpha.37 | 53 | 9/20/2026 |
| 0.1.0-alpha.36 | 59 | 9/20/2026 |
| 0.1.0-alpha.35 | 66 | 9/19/2026 |
| 0.1.0-alpha.34 | 84 | 9/9/2026 |
| 0.1.0-alpha.33 | 546 | 9/3/2026 |
| 0.1.0-alpha.32 | 137 | 8/17/2026 |
| 0.1.0-alpha.29 | 108 | 8/15/2026 |
| 0.1.0-alpha.23 | 85 | 8/13/2026 |
| 0.1.0-alpha.22 | 82 | 8/13/2026 |
| 0.1.0-alpha.21 | 80 | 8/12/2026 |
| 0.1.0-alpha.20 | 99 | 8/12/2026 |
| 0.1.0-alpha.19 | 92 | 8/12/2026 |
| 0.1.0-alpha.18 | 96 | 8/12/2026 |
| 0.1.0-alpha.17 | 90 | 8/12/2026 |
| 0.1.0-alpha.15 | 85 | 8/12/2026 |
| 0.1.0-alpha.11 | 82 | 8/9/2026 |
| 0.1.0-alpha.10 | 80 | 8/9/2026 |
| 0.1.0-alpha.9 | 76 | 8/9/2026 |
| 0.1.0-alpha.8 | 93 | 8/6/2026 |