Class: SmartBrain::Contracts::RetrievalPlan

Inherits:
Object
  • Object
show all
Defined in:
lib/smart_brain/contracts/retrieval_plan.rb

Constant Summary collapse

REQUIRED_KEYS =
%i[version request_id purpose queries budget].freeze

Class Method Summary collapse

Class Method Details

.validate!(plan) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/smart_brain/contracts/retrieval_plan.rb', line 10

def self.validate!(plan)
  missing = REQUIRED_KEYS.reject { |key| plan.key?(key) }
  raise ArgumentError, "invalid retrieval plan: missing #{missing.join(', ')}" unless missing.empty?
  raise ArgumentError, 'invalid retrieval plan: queries must not be empty' if Array(plan[:queries]).empty?

  if plan[:scope_context]
    ScopeContext.normalize(
      domain_id: plan.dig(:debug, :caller, :domain_id),
      session_id: plan.dig(:debug, :caller, :session_id) || plan[:session_id],
      scope_context: plan[:scope_context]
    )
  end

  true
end