| 46 | } |
| 47 | |
| 48 | export interface AttemptRow { |
| 49 | ts: string; |
| 50 | identity_canon: string; // sha256 salted — never the raw identity |
| 51 | endpoint: string; |
| 52 | reason: 'no_token' | 'invalid_token' | 'expired_token' | 'identity_not_allowed' | |
| 53 | 'capability_insufficient' | 'rate_limited' | 'allowlist_violation' | |
| 54 | 'tailnet_socket_missing' | 'whois_unparseable'; |
| 55 | } |
| 56 | |
| 57 | export interface WhoIsResult { |
| 58 | identity: string; // canonicalized: "user@example.com" or "tag:<name>" or "node:<key>" |
nothing calls this directly
no outgoing calls
no test coverage detected