Class: NitroIntelligence::ToolCallReviewValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/nitro_intelligence/tool_call_review_validator.rb

Instance Method Summary collapse

Instance Method Details

#validate!(thread_state:, tool_calls:, pending_tool_calls:) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/nitro_intelligence/tool_call_review_validator.rb', line 5

def validate!(thread_state:, tool_calls:, pending_tool_calls:)
  tool_calls = normalize_tool_calls(tool_calls)
  pending_tool_calls_by_id = Array(pending_tool_calls).index_by { |tool_call| tool_call["id"] }
  review_actions = Array(thread_state.dig("interrupts", 0, "value", "review_actions"))

  tool_calls.each do |tool_call_id, review|
    pending_tool_call = pending_tool_calls_by_id[tool_call_id]&.with_indifferent_access
    raise_error!("Unknown tool call ids: #{tool_call_id}") unless pending_tool_call

    review = normalize_review(tool_call_id, review)
    review_action = review[:action].to_s

    unless review_actions.include?(review_action)
      raise_error!("Invalid review action `#{review_action}` for tool call #{tool_call_id}")
    end

    validate_edited_args!(tool_call_id:, review:, pending_tool_call:) if review_action == "edit"
  end

  validate_completeness!(
    submitted_tool_call_ids: tool_calls.keys,
    pending_tool_calls:
  )
end