Entropic 2.3.8
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
140 size_t load_static(const std::vector<IdentityConfig>& identities);
141
152
163 entropic_error_t update(const std::string& name,
164 const IdentityConfig& config);
165
176 entropic_error_t destroy(const std::string& name);
177
187 const IdentityConfig* get(const std::string& name) const;
188
195 bool has(const std::string& name) const;
196
202 std::vector<std::string> list() const;
203
212 std::vector<const IdentityConfig*> list_routable() const;
213
219 size_t count() const;
220
226 size_t count_dynamic() const;
227
233 bool is_router_dirty() const;
234
239 void clear_router_dirty();
240
247 void set_in_use_checker(bool (*checker)(const std::string& name,
248 void* user_data),
249 void* user_data);
250
263 void set_cache_invalidator(void (*cb)(void* user_data),
264 void* user_data);
265
266private:
272 void fire_cache_invalidator();
273
274 void (*cache_invalidator_)(void*) = nullptr;
275 void* cache_invalidator_data_ = nullptr;
276
277 // ── pre-existing private section continues ─────────────
278
279
287 std::string validate(const IdentityConfig& config,
288 bool is_update) const;
289
296 static std::string validate_name(const std::string& name);
297
303 void register_mcp_keys(const IdentityConfig& config);
304
310 void unregister_mcp_keys(const std::string& name);
311
312 IdentityManagerConfig config_;
313 GrammarValidationInterface grammar_iface_;
314 MCPKeyInterface mcp_iface_;
315
316 std::unordered_map<std::string, IdentityConfig> identities_;
317 mutable std::shared_mutex identities_mutex_;
318
319 std::atomic<bool> router_dirty_{false};
320
321 bool (*in_use_checker_)(const std::string&, void*) = nullptr;
322 void* in_use_user_data_ = nullptr;
323};
324
325} // 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:35
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.