Class: Phronomy::Agent::ToolApprovalRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/phronomy/agent/tool_approval_request.rb

Overview

Application-facing notification for one suspended ToolCall batch.

The request contains display-safe values only. Internal policy input is represented by ApprovalEvaluationRequest and is deliberately separate.

Defined Under Namespace

Classes: Item

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(agent_invocation_id:, items:, id: SecureRandom.uuid, created_at: Time.now.utc) ⇒ ToolApprovalRequest

Returns a new instance of ToolApprovalRequest.

Raises:

  • (ArgumentError)


101
102
103
104
105
106
107
108
109
# File 'lib/phronomy/agent/tool_approval_request.rb', line 101

def initialize(agent_invocation_id:, items:, id: SecureRandom.uuid, created_at: Time.now.utc)
  raise ArgumentError, "ToolApprovalRequest requires at least one item" if items.empty?

  @id = id.to_s.freeze
  @agent_invocation_id = agent_invocation_id.to_s.freeze
  @items = items.dup.freeze
  @created_at = created_at
  freeze
end

Instance Attribute Details

#agent_invocation_idObject (readonly)



77
78
79
# File 'lib/phronomy/agent/tool_approval_request.rb', line 77

def agent_invocation_id
  @agent_invocation_id
end

#created_atObject (readonly)



77
78
79
# File 'lib/phronomy/agent/tool_approval_request.rb', line 77

def created_at
  @created_at
end

#idObject (readonly)



77
78
79
# File 'lib/phronomy/agent/tool_approval_request.rb', line 77

def id
  @id
end

#itemsObject (readonly)



77
78
79
# File 'lib/phronomy/agent/tool_approval_request.rb', line 77

def items
  @items
end

Class Method Details

.build(agent_invocation) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/phronomy/agent/tool_approval_request.rb', line 79

def self.build(agent_invocation)
  pending = agent_invocation.tool_invocations.select(&:awaiting_approval?)
  new(
    agent_invocation_id: agent_invocation.id,
    items: pending.map { |invocation| build_item(invocation) }
  )
end

Instance Method Details

#to_hObject



111
112
113
114
115
116
117
118
# File 'lib/phronomy/agent/tool_approval_request.rb', line 111

def to_h
  {
    id: @id,
    agent_invocation_id: @agent_invocation_id,
    items: @items.map(&:to_h),
    created_at: @created_at.iso8601
  }
end