Qavren.Edge — foundation (sub-project 1)
Hosting core, MAUI lifecycle bridge, and a SQLite provider with sqlite-vec compiled into the native library.
Packages
| Package | TFMs | Purpose |
|---|---|---|
Qavren.Edge.Core |
net10.0 | AddQavrenEdge(), host, lifecycle hub, paths, diagnostics, exceptions |
Qavren.Edge.Maui |
android, ios, maccatalyst, windows | UseQavrenEdge(), platform lifecycle bridge, FileSystem-backed paths |
Qavren.Edge.Sqlite |
net10.0 | AddSqlite(), IEdgeDatabase, migrations, vec/FTS helpers |
Qavren.Edge.Sqlite.Provider |
net10.0, ios | Generated SQLite3Provider_qedge : ISQLite3Provider |
Qavren.Edge.Sqlite.Native |
net10.0 + platform TFMs | Native libraries per RID, UseSqliteNative() |
Qavren.Edge.Sqlite.Native.Cipher |
same | SQLCipher + libtomcrypt libraries, UseSqliteNativeCipher() |
Qavren.Edge |
meta | One-line install for the common case |
Dependency direction is strictly downward: Native to Sqlite to Core, and Native to Provider. Core never references MAUI or SQLite. Referencing both Native packages in one app is a configuration error caught at startup.
MAUI hosted-service limitation
UseQavrenEdge() calls Services.RemoveAll<IHostedService>() — the generic-host
EdgeHostedService would block MAUI's launch path, so the platform lifecycle bridge
calls IEdgeHost.Start() instead. A MAUI app that registers its own IHostedService
implementations must skip UseQavrenEdge(), call Services.AddQavrenEdge(...)
directly, and wire the lifecycle bridge itself.
Building the native library locally (Windows x64 only)
pwsh C:\Users\steve\projects\qavren-edge\foundation\native\scripts\fetch-sources.ps1
pwsh C:\Users\steve\projects\qavren-edge\foundation\native\scripts\build-windows.ps1
Output lands in foundation/native/artifacts/win-x64/qedge_sqlite3.dll. Apple
and Android artifacts are produced only by .github/workflows/native.yml;
there is no NDK, clang, or macOS on the development box.
Running tests
dotnet run --project C:\Users\steve\projects\qavren-edge\foundation\tests\Qavren.Edge.Core.Tests\Qavren.Edge.Core.Tests.csproj -c Release
The Sqlite tests additionally need the native library from the step above; the
Qavren.Edge.Sqlite.Native project copies it into every referencing project's
output directory.