| """ |
| Policy subsystem for the interactive service. |
| |
| Three layers, in order of authority: |
| |
| 1. Chassis guardrails (``guardrails.py``) |
| Always-on safety rules enforced by the chassis itself — cannot |
| be disabled via a profile YAML. E.g. mature content requires |
| explicit consent, blocked-region list applies globally. |
| |
| 2. Policy profiles (``profiles.py``) |
| Declarative per-mode rules loaded from ``profiles/*.yaml``. |
| Controls which intents are allowed/blocked for an experience |
| mode, soft-refuse copy, default language. |
| |
| 3. Decision engine (``decision.py``) |
| Three explicit checkpoints the router calls: |
| - check_catalog_visibility (which actions even show up?) |
| - check_action_execution (can this action fire now?) |
| - check_free_input (is this free-text input OK?) |
| Each returns a ``Decision`` with decision + reason_code. |
| |
| ``classifier.py`` is the NLP layer that maps free text to an |
| ``intent_code`` — the key shared between the policy and the |
| intent-map runtime. |
| """ |
| from .decision import Decision, check_action_execution, check_catalog_visibility, check_free_input |
| from .guardrails import ChassisResult, apply_chassis_guardrails |
| from .profiles import PolicyProfile, load_profile, list_profiles |
| from .classifier import classify_intent |
|
|
| __all__ = [ |
| "Decision", |
| "check_action_execution", |
| "check_catalog_visibility", |
| "check_free_input", |
| "ChassisResult", |
| "apply_chassis_guardrails", |
| "PolicyProfile", |
| "load_profile", |
| "list_profiles", |
| "classify_intent", |
| ] |
|
|