Class: Phronomy::Agent::ContextPolicies::Default

Inherits:
Phronomy::Agent::ContextPolicy show all
Defined in:
lib/phronomy/agent/context_policies/default.rb

Constant Summary collapse

DESCRIPTOR =
ContextPolicyDescriptor.new(
  id: "default-recent-v1",
  version: 1,
  config: {}
)

Instance Method Summary collapse

Constructor Details

#initialize(config = {}) ⇒ Default

Returns a new instance of Default.



13
14
15
# File 'lib/phronomy/agent/context_policies/default.rb', line 13

def initialize(config = {})
  @config = Immutable.copy(config || {})
end

Instance Method Details

#call(request) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/phronomy/agent/context_policies/default.rb', line 22

def call(request)
  units = request.parts.fetch(:unit_builder).build(request.candidates)
  units = request.parts.fetch(:required_context_resolver).resolve(
    request: request,
    units: units
  )
  ordered = request.parts.fetch(:recent_first_selector).order(
    request: request,
    units: units
  )
  selected = request.parts.fetch(:token_budget_packer).pack(
    request: request,
    units: ordered
  )

  ContextPlan.new(
    selected_unit_ids: selected.map(&:unit_id),
    derived_contents: [],
    selected_tool_ids: [],
    ordering_hints: {"history" => "chronological"},
    policy_descriptor: descriptor,
    metadata: {
      "candidate_count" => request.candidates.length,
      "unit_count" => units.length,
      "selected_unit_count" => selected.length
    }
  )
end

#descriptorObject



17
18
19
20
# File 'lib/phronomy/agent/context_policies/default.rb', line 17

def descriptor
  return DESCRIPTOR if @config.empty?
  ContextPolicyDescriptor.new(id: DESCRIPTOR.id, version: DESCRIPTOR.version, config: @config)
end