Module: Legion::Extensions::Synapse::Helpers::Proposals

Defined in:
lib/legion/extensions/synapse/helpers/proposals.rb

Constant Summary collapse

VALID_PROPOSAL_TYPES =
%w[llm_transform attention_mutation transform_mutation route_change].freeze
VALID_TRIGGERS =
%w[reactive proactive].freeze
VALID_STATUSES =
%w[pending challenging challenged approved rejected applied expired auto_accepted auto_rejected].freeze
DEFAULT_SETTINGS =
{
  enabled:                 true,
  reactive:                true,
  proactive:               true,
  proactive_interval:      300,
  max_per_run:             3,
  llm_engine_options:      { temperature: 0.3, max_tokens: 1024 },
  success_rate_threshold:  0.8,
  payload_drift_threshold: 0.2,
  dedup_window_hours:      24
}.freeze

Class Method Summary collapse

Class Method Details

.enabled?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/legion/extensions/synapse/helpers/proposals.rb', line 34

def enabled?
  settings[:enabled] == true
end

.llm_engine_optionsObject



48
49
50
51
52
# File 'lib/legion/extensions/synapse/helpers/proposals.rb', line 48

def llm_engine_options
  s = settings
  opts = s[:llm_engine_options]
  opts.is_a?(Hash) ? opts.transform_keys(&:to_sym) : DEFAULT_SETTINGS[:llm_engine_options].dup
end

.proactive?Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/legion/extensions/synapse/helpers/proposals.rb', line 43

def proactive?
  s = settings
  s[:enabled] == true && s[:proactive] == true
end

.reactive?Boolean

Returns:

  • (Boolean)


38
39
40
41
# File 'lib/legion/extensions/synapse/helpers/proposals.rb', line 38

def reactive?
  s = settings
  s[:enabled] == true && s[:reactive] == true
end

.settingsObject



25
26
27
28
29
30
31
32
# File 'lib/legion/extensions/synapse/helpers/proposals.rb', line 25

def settings
  raw = Legion::Settings.dig('lex-synapse', 'proposals')
  return DEFAULT_SETTINGS.dup unless raw.is_a?(Hash)

  merged = DEFAULT_SETTINGS.dup
  raw.each { |k, v| merged[k.to_sym] = v unless v.nil? }
  merged
end