Class: Olyx::Guardrails::Policy
- Inherits:
-
Object
- Object
- Olyx::Guardrails::Policy
- Defined in:
- lib/olyx/guardrails/policy.rb
Overview
Defines immutable limits, blocking behavior, and restricted-content rules.
Policy validates and compiles all configuration during construction. A successfully constructed instance is frozen and safe to reuse across requests and threads.
policy = Olyx::Guardrails::Policy.new(
name: "production",
block_secrets: true,
rules: [
{ name: :project, terms: ["Project Falcon"] }
]
)
See docs/POLICIES.md for matching and replacement semantics.
Class Method Summary collapse
-
.default ⇒ Object
:call-seq: Policy.default -> Policy.
-
.from_h(config) ⇒ Object
:call-seq: Policy.from_h(configuration) -> Policy.
Instance Method Summary collapse
-
#block_injections? ⇒ Boolean
Returns whether prompt-injection findings block a decision.
-
#block_pii? ⇒ Boolean
Returns whether PII findings block a decision.
-
#block_secrets? ⇒ Boolean
Returns whether secret findings block a decision.
-
#initialize(name: 'default', max_input_length: 10_000, block_pii: false, block_injections: true, block_secrets: false, llm_failure_mode: :allow, secret_patterns: [], rules: []) ⇒ Policy
constructor
:call-seq: Policy.new(name: "default", max_input_length: 10_000, block_pii: false, block_injections: true, block_secrets: false, llm_failure_mode: :allow, secret_patterns: [], rules: []) -> Policy.
-
#llm_failure_mode ⇒ Object
Returns
:allow,:block, or:raise. -
#max_input_length ⇒ Object
Returns the maximum accepted input length in Ruby characters.
-
#name ⇒ Object
Returns the policy's stable String identifier.
-
#rules ⇒ Object
Returns the frozen PolicyRule collection.
-
#secret_patterns ⇒ Object
Returns the frozen custom secret regular-expression source Strings.
Constructor Details
#initialize(name: 'default', max_input_length: 10_000, block_pii: false, block_injections: true, block_secrets: false, llm_failure_mode: :allow, secret_patterns: [], rules: []) ⇒ Policy
:call-seq:
Policy.new(name: "default", max_input_length: 10_000,
block_pii: false, block_injections: true,
block_secrets: false, llm_failure_mode: :allow,
secret_patterns: [], rules: []) -> Policy
Builds and freezes a policy.
name identifies decisions and notifications. max_input_length is a
non-negative character limit. block_pii, block_injections, and
block_secrets require literal Boolean values.
llm_failure_mode is :allow, :block, or :raise.
secret_patterns extends secret detection with regular-expression
source Strings. rules contains PolicyRule instances or rule Hashes.
Invalid values, duplicate rule names, invalid expressions, and expressions that match empty text raise ArgumentError.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/olyx/guardrails/policy.rb', line 60 def initialize( name: 'default', max_input_length: 10_000, block_pii: false, block_injections: true, block_secrets: false, llm_failure_mode: :allow, secret_patterns: [], rules: [] ) @configuration = PolicyComponents::Configuration.new( identity: [name, max_input_length], blocking: [block_pii, block_injections, block_secrets], restrictions: [llm_failure_mode, secret_patterns, rules] ) freeze end |
Class Method Details
.default ⇒ Object
:call-seq:
Policy.default -> Policy
Returns the shared default policy. The default blocks prompt injection, reports PII and secrets without blocking them, and has no custom rules.
29 30 31 |
# File 'lib/olyx/guardrails/policy.rb', line 29 def self.default @default ||= new end |
.from_h(config) ⇒ Object
:call-seq:
Policy.from_h(configuration) -> Policy
Constructs a policy from config, which must be a Hash with String or
Symbol keys. Unknown keys and invalid values raise ArgumentError.
38 39 40 |
# File 'lib/olyx/guardrails/policy.rb', line 38 def self.from_h(config) new(**PolicyComponents::ConfigurationHash.call(config)) end |
Instance Method Details
#block_injections? ⇒ Boolean
Returns whether prompt-injection findings block a decision.
97 |
# File 'lib/olyx/guardrails/policy.rb', line 97 def block_injections? = @configuration.blocking.injections? |
#block_pii? ⇒ Boolean
Returns whether PII findings block a decision.
94 |
# File 'lib/olyx/guardrails/policy.rb', line 94 def block_pii? = @configuration.blocking.pii? |
#block_secrets? ⇒ Boolean
Returns whether secret findings block a decision.
100 |
# File 'lib/olyx/guardrails/policy.rb', line 100 def block_secrets? = @configuration.blocking.secrets? |
#llm_failure_mode ⇒ Object
Returns :allow, :block, or :raise.
85 |
# File 'lib/olyx/guardrails/policy.rb', line 85 def llm_failure_mode = @configuration.restrictions.llm_failure_mode |
#max_input_length ⇒ Object
Returns the maximum accepted input length in Ruby characters.
82 |
# File 'lib/olyx/guardrails/policy.rb', line 82 def max_input_length = @configuration.identity.max_input_length |
#name ⇒ Object
Returns the policy's stable String identifier.
79 |
# File 'lib/olyx/guardrails/policy.rb', line 79 def name = @configuration.identity.name |
#rules ⇒ Object
Returns the frozen PolicyRule collection.
91 |
# File 'lib/olyx/guardrails/policy.rb', line 91 def rules = @configuration.restrictions.rules |
#secret_patterns ⇒ Object
Returns the frozen custom secret regular-expression source Strings.
88 |
# File 'lib/olyx/guardrails/policy.rb', line 88 def secret_patterns = @configuration.restrictions.secret_patterns |