Class: RosettAi::Policy::PolicyCompiler

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/policy/policy_compiler.rb

Overview

Compiles policy definitions to engine-specific output.

Translates deny lists, protected files, and rate limits into engine-native configuration formats. When a parent policy is provided, enforces tighten-only inheritance at compile time.

Author:

  • hugo

  • claude

Instance Method Summary collapse

Constructor Details

#initialize(deny_list:, protected_files:, parent_deny_list: nil) ⇒ PolicyCompiler

Returns a new instance of PolicyCompiler.

Parameters:

  • deny_list (DenyList)

    deny list to compile

  • protected_files (ProtectedFiles)

    protected files to compile

  • parent_deny_list (DenyList, nil) (defaults to: nil)

    parent policy deny list for scope enforcement



20
21
22
23
24
# File 'lib/rosett_ai/policy/policy_compiler.rb', line 20

def initialize(deny_list:, protected_files:, parent_deny_list: nil)
  @deny_list = deny_list
  @protected_files = protected_files
  @parent_deny_list = parent_deny_list
end

Instance Method Details

#compile(engine:) ⇒ Hash

Compiles policies for a specific engine.

Parameters:

  • engine (String)

    target engine name

Returns:

  • (Hash)

    with +:settings+ (Hash), +:annotations+ (String), +:warnings+ (Array)



30
31
32
33
34
35
36
37
# File 'lib/rosett_ai/policy/policy_compiler.rb', line 30

def compile(engine:)
  warnings = []
  enforce_scope!(warnings)
  settings = compile_deny_list(engine, warnings)
  annotations = compile_protected_files(engine)

  { settings: settings, annotations: annotations, warnings: warnings }
end