Entropic 2.11.1
Local-first agentic inference engine
Loading...
Searching...
No Matches
identity_manager.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
30#pragma once
31
34
35#include <atomic>
36#include <shared_mutex>
37#include <string>
38#include <unordered_map>
39#include <vector>
40
41namespace entropic {
42
48 size_t max_identities = 64;
49 bool allow_dynamic = true;
50};
51
62 bool (*has_grammar)(const std::string& key,
63 void* user_data) = nullptr;
64 void* user_data = nullptr;
65};
66
77 void (*register_identity)(const std::string& name,
78 void* user_data) = nullptr;
80 void (*grant)(const std::string& name, const std::string& pattern,
81 int level, void* user_data) = nullptr;
83 bool (*is_enforced)(const std::string& name,
84 void* user_data) = nullptr;
86 void (*unregister_identity)(const std::string& name,
87 void* user_data) = nullptr;
88 void* user_data = nullptr;
89};
90
109public:
115 explicit IdentityManager(const IdentityManagerConfig& config);
116
123
129 void set_mcp_interface(const MCPKeyInterface& iface);
130
141 size_t load_static(const std::vector<IdentityConfig>& identities);
142
154
166 entropic_error_t update(const std::string& name,
167 const IdentityConfig& config);
168
180 entropic_error_t destroy(const std::string& name);
181
191 const IdentityConfig* get(const std::string& name) const;
192
199 bool has(const std::string& name) const;
200
206 std::vector<std::string> list() const;
207
216 std::vector<const IdentityConfig*> list_routable() const;
217
223 size_t count() const;
224
230 size_t count_dynamic() const;
231
238 bool is_router_dirty() const;
239
244 void clear_router_dirty();
245
252 void set_in_use_checker(bool (*checker)(const std::string& name,
253 void* user_data),
254 void* user_data);
255
268 void set_cache_invalidator(void (*cb)(void* user_data),
269 void* user_data);
270
271private:
277 void fire_cache_invalidator();
278
279 void (*cache_invalidator_)(void*) = nullptr;
280 void* cache_invalidator_data_ = nullptr;
281
282 // ── pre-existing private section continues ─────────────
283
284
293 std::string validate(const IdentityConfig& config,
294 bool is_update) const;
295
303 static std::string validate_name(const std::string& name);
304
311 void register_mcp_keys(const IdentityConfig& config);
312
319 void unregister_mcp_keys(const std::string& name);
320
321 IdentityManagerConfig config_;
322 GrammarValidationInterface grammar_iface_;
323 MCPKeyInterface mcp_iface_;
324
325 std::unordered_map<std::string, IdentityConfig> identities_;
326 mutable std::shared_mutex identities_mutex_;
327
328 std::atomic<bool> router_dirty_{false};
329
330 bool (*in_use_checker_)(const std::string&, void*) = nullptr;
331 void* in_use_user_data_ = nullptr;
332};
333
334} // namespace entropic
Manages the lifecycle of all identities in the engine.
size_t count() const
Get the total number of identities.
void set_mcp_interface(const MCPKeyInterface &iface)
Set MCP key management interface.
size_t count_dynamic() const
Get the number of dynamic identities.
void set_cache_invalidator(void(*cb)(void *user_data), void *user_data)
Set a callback invoked whenever an identity changes.
const IdentityConfig * get(const std::string &name) const
Get identity config by name.
bool is_router_dirty() const
Check if the router classification prompt needs rebuilding.
entropic_error_t destroy(const std::string &name)
Destroy a dynamic identity.
void clear_router_dirty()
Clear the dirty flag (called after router prompt rebuild).
entropic_error_t update(const std::string &name, const IdentityConfig &config)
Update an existing dynamic identity.
size_t load_static(const std::vector< IdentityConfig > &identities)
Load static identities from config loader.
bool has(const std::string &name) const
Check if an identity exists.
void set_in_use_checker(bool(*checker)(const std::string &name, void *user_data), void *user_data)
Set the in-use checker callback.
std::vector< const IdentityConfig * > list_routable() const
List only routable identities (for classification prompt).
void set_grammar_interface(const GrammarValidationInterface &iface)
Set grammar validation interface.
entropic_error_t create(const IdentityConfig &config)
Create a new dynamic identity.
std::vector< std::string > list() const
List all identity names.
Error types for cross-.so error reporting.
entropic_error_t
Error codes returned by all C API functions.
Definition error.h:37
Identity configuration – shared by static and dynamic identities.
Activate model on GPU (WARM → ACTIVE).
Grammar validation callbacks injected by the facade.
void * user_data
Opaque pointer (GrammarRegistry*)
bool(* has_grammar)(const std::string &key, void *user_data)
Check if a grammar key exists in the registry.
Full identity configuration.
Definition identity.h:48
Configuration for the identity manager.
size_t max_identities
Maximum total identities (static + dynamic)
bool allow_dynamic
Master toggle for dynamic identity creation.
MCP key management callbacks injected by the facade.
void(* unregister_identity)(const std::string &name, void *user_data)
Remove an identity's key set.
bool(* is_enforced)(const std::string &name, void *user_data)
Check if an identity has a key set registered.
void(* register_identity)(const std::string &name, void *user_data)
Register an empty key set for an identity.
void * user_data
Opaque pointer (MCPAuthorizationManager*)
void(* grant)(const std::string &name, const std::string &pattern, int level, void *user_data)
Grant a key pattern to an identity.