Wiki

Web interface and agent API for the Notes vault (k.renner/notes), running in the homelab cluster. Design: kubernetes/PROPOSAL-wiki-web-api.md in the homelab repository.

Layout

src/Wiki.Core          domain types, ports, vault parsing — references nothing
src/Wiki.Application   use cases (sync, rank, status, …) — depends on Core only
src/Wiki.Adapters.*    one project per external thing, each references Core only
src/Wiki.Host          ASP.NET Core API + MudBlazor UI, composition root
test/Wiki.Contracts    one abstract suite per port; every adapter passes its suite

Adapters are selected in appsettings.json under Wiki:; secrets come from environment variables (Wiki__NoteStore__Gitea__Token, Wiki__Webhook__Secret, Auth__ApiKeys__<name>, Wiki__Judges__Models__<name>__ApiKey, Wiki__AnswerModels__Models__<name>__ApiKey). Each answer-model entry also provides the fact drafter of the same name (/facts).

Humans sign in with OpenID Connect (public client, PKCE): Auth__Oidc__Authority and Auth__Oidc__ClientId are required; the redirect URI is https://<request host>/signin-oidc. Machines send X-Api-Key, or BasicAuth checked against the htpasswd lines in Auth__Basic__UsersPath, a file or a mounted Secret directory (bcrypt, apr1 or SHA1; read API only). Only /health, /ready and the HMAC-signed /webhook answer without either.

Run

dotnet test Wiki.slnx
dotnet run --project src/Wiki.Host

Endpoints: /health (liveness), /ready (readiness), /api/v1/status, POST /rank, POST /webhook, POST /api/v1/ask (rank + judge), POST /api/v1/questions (ask + answer model, save: true writes output/), POST /api/v1/facts (raw source, API key), GET /api/v1/{notes,tags,raw,reports}, POST /api/v1/lab/eval (rank evaluation over labelled output/ questions, API key).

S
Description
No description provided
Readme
443 KiB
Languages
C# 86.6%
HTML 10.6%
CSS 1.7%
JavaScript 0.8%
Dockerfile 0.3%