Wino.Mail.AI.Abstractions
0.1.0-alpha.38
See the version list below for details.
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 (8)
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
Obsolete direct OpenAI Responses backend for Wino Mail structured inference. Superseded by Wino.Mail.AI.Gateway. |
|
|
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 |
|---|---|---|
| 3.0.0-alpha.5 | 385 | 9/28/2026 |
| 3.0.0-alpha.4 | 83 | 9/24/2026 |
| 3.0.0-alpha.3 | 633 | 9/24/2026 |
| 3.0.0-alpha.1 | 310 | 9/24/2026 |
| 0.1.0-alpha.38 | 119 | 9/20/2026 |
| 0.1.0-alpha.37 | 79 | 9/20/2026 |
| 0.1.0-alpha.36 | 83 | 9/20/2026 |
| 0.1.0-alpha.35 | 102 | 9/19/2026 |
| 0.1.0-alpha.34 | 94 | 9/9/2026 |
| 0.1.0-alpha.33 | 580 | 9/3/2026 |
| 0.1.0-alpha.32 | 147 | 8/17/2026 |
| 0.1.0-alpha.29 | 117 | 8/15/2026 |
| 0.1.0-alpha.23 | 91 | 8/13/2026 |
| 0.1.0-alpha.22 | 92 | 8/13/2026 |
| 0.1.0-alpha.21 | 87 | 8/12/2026 |
| 0.1.0-alpha.20 | 109 | 8/12/2026 |
| 0.1.0-alpha.19 | 103 | 8/12/2026 |
| 0.1.0-alpha.18 | 104 | 8/12/2026 |
| 0.1.0-alpha.17 | 101 | 8/12/2026 |
| 0.1.0-alpha.15 | 97 | 8/12/2026 |