49#include <unordered_map>
94 const std::string& constitution_text);
105 HookInterface* hook_iface,
106 InferenceInterface* inference);
114 void detach(HookInterface* hook_iface);
137 const std::string& identity_name,
bool enabled);
146 const std::string& identity_name,
147 const std::vector<std::string>& rules);
180 std::function<std::pair<std::string, std::string>(
181 const std::string&)> resolver);
202 const std::string& content,
203 const std::string& tier,
204 const char* messages_json);
279 void (*cb)(
int attempt_n,
void* user_data),
void* user_data);
307 void (*start_cb)(
void* user_data),
308 void (*end_cb)(
void* user_data),
336 const char* context_json,
337 char** modified_json,
376 std::string build_critique_messages(
const std::string& content)
const;
384 std::string build_critique_params()
const;
396 const std::string& original,
398 const char* messages_json);
427 const std::string& content,
428 const std::string& tier,
429 const char* messages_json);
444 const char* messages_json);
455 std::string attempt_revision(
456 const std::string& content,
458 const char* messages_json);
467 std::string build_single_turn_json(
468 const std::string& prompt)
const;
479 std::string build_revision_messages(
480 const std::string& original,
482 const char* messages_json)
const;
491 std::string build_feedback_text(
503 std::string inject_feedback_into_messages(
504 const std::string& original,
505 const std::string& feedback,
506 const char* messages_json)
const;
517 int handle_hook(
const char* context_json,
char** modified_json);
526 static void write_modified_json(
527 const std::string& content,
char** modified_json);
537 static std::string extract_json_string(
538 const char* json,
const char* key);
547 static std::string extract_string_after_colon(
const char* pos);
557 static bool extract_compliant_field(
567 static void extract_violations(
578 static std::optional<Violation> extract_next_violation(
579 const std::string& json,
size_t& pos);
588 static void extract_revised_field(
592 std::string constitution_text_;
593 InferenceInterface* inference_ =
nullptr;
597 bool global_enabled_;
599 std::function<std::pair<std::string, std::string>(
const std::string&)>
601 mutable std::mutex marker_mutex_;
603 std::unordered_map<std::string, bool> identity_overrides_;
605 std::unordered_map<std::string, std::vector<std::string>> tier_rules_;
606 mutable std::mutex overrides_mutex_;
609 std::string current_tier_;
614 std::string current_tool_context_;
625 std::string current_tool_evidence_;
629 std::string current_system_prompt_;
633 mutable std::mutex result_mutex_;
639 std::atomic<bool> auto_retry_enabled_{
true};
646 struct PendingValidationState {
647 ValidationResult result;
648 CritiqueResult critique;
649 std::string messages_json;
654 std::optional<PendingValidationState> pending_state_;
655 mutable std::mutex pending_mutex_;
667 struct AttemptBoundaryCb {
668 void (*cb)(int,
void*) =
nullptr;
669 void* user_data =
nullptr;
671 AttemptBoundaryCb attempt_boundary_;
672 mutable std::mutex attempt_boundary_mutex_;
683 struct CritiqueCallbacks {
684 void (*start_cb)(
void*) =
nullptr;
685 void (*end_cb)(
void*) =
nullptr;
686 void* user_data =
nullptr;
688 CritiqueCallbacks critique_cbs_;
689 mutable std::mutex critique_cbs_mutex_;
Post-generation constitutional compliance validator.
bool auto_retry_enabled() const
Whether auto-revision is currently enabled.
void set_global_enabled(bool enabled)
Toggle the global validation gate at runtime.
entropic_error_t attach(HookInterface *hook_iface, InferenceInterface *inference)
Register this validator as a POST_GENERATE hook.
static int hook_callback(entropic_hook_point_t hook_point, const char *context_json, char **modified_json, void *user_data)
POST_GENERATE hook callback for constitutional validation.
void set_marker_resolver(std::function< std::pair< std::string, std::string >(const std::string &)> resolver)
Register a per-tier reasoning-delimiter resolver (gh#108).
void set_tier_rules(const std::string &identity_name, const std::vector< std::string > &rules)
Set per-identity validation rules from frontmatter.
entropic_error_t accept_last()
Finalize the cached attempt as the validation result.
entropic_error_t resume_retry()
Resume the revision pass after a paused validation.
const ConstitutionalValidationConfig & config() const
Get the config (read-only after construction).
bool should_validate(const std::string &identity_name) const
Check if validation is enabled for a given identity.
void set_critique_callbacks(void(*start_cb)(void *user_data), void(*end_cb)(void *user_data), void *user_data)
Register the critique start/end callback pair (gh#50).
static CritiqueResult parse_critique(const std::string &json_str)
Parse critique JSON into structured result (exposed for testing).
ValidationResult validate(const std::string &content, const std::string &tier, const char *messages_json)
Run the validation pipeline on generated content.
ValidationResult last_result() const
Get the last validation result.
void set_attempt_boundary_cb(void(*cb)(int attempt_n, void *user_data), void *user_data)
Register the attempt-boundary callback.
void set_auto_retry(bool enabled)
Enable or disable automatic revision after rejection.
std::string build_critique_prompt(const std::string &content) const
Build the critique prompt (exposed for testing).
void detach(HookInterface *hook_iface)
Deregister the POST_GENERATE hook.
void set_identity_validation(const std::string &identity_name, bool enabled)
Set per-identity validation override.
Configuration structs with defaults.
Error types for cross-.so error reporting.
entropic_error_t
Error codes returned by all C API functions.
Hook point enum and callback types for engine lifecycle hooks.
entropic_hook_point_t
Hook points in the engine lifecycle.
Hook dispatch interface injected into engine subsystems.
Function pointer types for core-to-inference communication.
Activate model on GPU (WARM → ACTIVE).
Constitutional validation pipeline configuration.
Structured result from a single critique generation pass.
Context passed through hook user_data.
class ConstitutionalValidator * validator
Validator instance.
InferenceInterface * inference
For critique generation.
Constitutional validation types — critique results and violations.