You are going to integrate AuthForge license validation into my project.
Do not write any code yet. Follow this protocol exactly.
STEP 1 - LOAD REFERENCES
Fetch https://docs.authforge.cc/llms-full.txt and read it end-to-end.
This file is authoritative. If anything below conflicts with it, follow
the docs, not your prior knowledge. Cached GitHub READMEs and older
SDK versions show a required heartbeatMode of "SERVER" or "LOCAL";
that is deprecated. Follow docs.authforge.cc and check the installed
SDK version. Do not pass heartbeatMode in new code.
STEP 2 - LEARN MY PROJECT
Look at the project I have open. Identify:
- Language and framework (e.g. .NET 8 WPF, Python CLI, Electron, Go service)
- Where startup happens (main, App.xaml.cs, __main__, etc.)
- How the app currently handles configuration and secrets
- Whether there is already a user-facing settings / login UI
STEP 3 - IMPLEMENT
For every file you touch:
- Match my project's existing style (indentation, naming, error handling
patterns - look at neighbouring files)
- Use the official AuthForge SDK for my language. If no official SDK
exists for my stack, say so and stop - do not roll your own client unless explicitly requested.
- Verify the Ed25519 signature on every response. The SDK does this
automatically; if you are writing raw HTTP for some reason, do not
skip it.
- Handle every error code listed in the docs' "Public auth error codes"
section, not just the happy path.
- Default: activate online once, then rely on the grace period (signed
session TTL; 24h default, up to 7 days). Do not enable online check-ins
unless I ask.
- Before enabling online check-ins (periodic /auth/heartbeat), explain
pros and cons (faster revocation and concurrent-use detection vs credit
cost and needing connectivity) and wait for my go-ahead.
- Do NOT use offline license files (loginFromFile / .authforge) unless I
explicitly say the target machines are air-gapped; if I do, follow the
docs' "Offline license files" page and keep the online path for everyone else.