Class: UserRegistry
- Inherits:
-
Object
- Object
- UserRegistry
- Defined in:
- lib/user_registry.rb
Overview
UserRegistry - Centralized user identity tracking
Resolves user identities across platforms (Discord, GitHub, Fizzy) and provides canonical names, aliases, and relationships.
Usage:
registry = UserRegistry.new
user = registry.find_by_discord_id('832331260088287242')
puts user['canonical_name'] # => "Adam Dalton"
puts user['identities']['github']['username'] # => "dalton"
Constant Summary collapse
- USERS_FILE =
File.("~/.zillacore/users.json")
Instance Method Summary collapse
-
#agents ⇒ Object
Get all AI agents.
-
#all ⇒ Object
Get all users.
-
#find(identifier) ⇒ Object
Find user by any identifier (tries all platforms).
-
#find_by_canonical_name(name) ⇒ Object
Find user by canonical name.
-
#find_by_discord_id(user_id) ⇒ Object
Find user by Discord user ID.
-
#find_by_discord_username(username) ⇒ Object
Find user by Discord username.
-
#find_by_fizzy_username(username) ⇒ Object
Find user by Fizzy username.
-
#find_by_github_username(username) ⇒ Object
Find user by GitHub username.
-
#humans ⇒ Object
Get all human users (exclude AI agents).
-
#initialize ⇒ UserRegistry
constructor
A new instance of UserRegistry.
-
#reload! ⇒ Object
Reload data from disk.
Constructor Details
#initialize ⇒ UserRegistry
Returns a new instance of UserRegistry.
20 21 22 |
# File 'lib/user_registry.rb', line 20 def initialize @data = load_data end |
Instance Method Details
#agents ⇒ Object
Get all AI agents
69 70 71 |
# File 'lib/user_registry.rb', line 69 def agents @data["users"].select { |u| u["notes"]&.include?("AI agent") } end |
#all ⇒ Object
Get all users
59 60 61 |
# File 'lib/user_registry.rb', line 59 def all @data["users"] end |
#find(identifier) ⇒ Object
Find user by any identifier (tries all platforms)
50 51 52 53 54 55 56 |
# File 'lib/user_registry.rb', line 50 def find(identifier) find_by_discord_id(identifier) || find_by_discord_username(identifier) || find_by_github_username(identifier) || find_by_fizzy_username(identifier) || find_by_canonical_name(identifier) end |
#find_by_canonical_name(name) ⇒ Object
Find user by canonical name
45 46 47 |
# File 'lib/user_registry.rb', line 45 def find_by_canonical_name(name) @data["users"].find { |u| u["canonical_name"].downcase == name.downcase } end |
#find_by_discord_id(user_id) ⇒ Object
Find user by Discord user ID
25 26 27 |
# File 'lib/user_registry.rb', line 25 def find_by_discord_id(user_id) @data["users"].find { |u| u.dig("identities", "discord", "user_id") == user_id.to_s } end |
#find_by_discord_username(username) ⇒ Object
Find user by Discord username
30 31 32 |
# File 'lib/user_registry.rb', line 30 def find_by_discord_username(username) @data["users"].find { |u| u.dig("identities", "discord", "username") == username.to_s } end |
#find_by_fizzy_username(username) ⇒ Object
Find user by Fizzy username
40 41 42 |
# File 'lib/user_registry.rb', line 40 def find_by_fizzy_username(username) @data["users"].find { |u| u.dig("identities", "fizzy", "username") == username.to_s } end |
#find_by_github_username(username) ⇒ Object
Find user by GitHub username
35 36 37 |
# File 'lib/user_registry.rb', line 35 def find_by_github_username(username) @data["users"].find { |u| u.dig("identities", "github", "username") == username.to_s } end |
#humans ⇒ Object
Get all human users (exclude AI agents)
64 65 66 |
# File 'lib/user_registry.rb', line 64 def humans @data["users"].reject { |u| u["notes"]&.include?("AI agent") } end |
#reload! ⇒ Object
Reload data from disk
74 75 76 |
# File 'lib/user_registry.rb', line 74 def reload! @data = load_data end |