Class: Insika::Context::Providers::Request

Inherits:
Insika::ContextProvider show all
Defined in:
lib/insika/context/providers/request.rb

Overview

:system fragment with turn metadata (tenant, relevant vars). Nothing if there is no metadata. priority 40. Not required? (metadata may degrade).

Instance Method Summary collapse

Methods inherited from Insika::ContextProvider

#enabled_for?, #id, #required?

Instance Method Details

#call(request) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/insika/context/providers/request.rb', line 10

def call(request)
  lines = []
  lines << "tenant: #{request.tenant}" if request.tenant
  # "history" is transcript (consumed by the Session provider), not turn
  # metadata — it does not leak into the system's request_context. Keys
  # prefixed with "__" are INTERNAL slots (e.g. the per-chat model pin
  # "__llm__", §10) — reserved, never rendered to the model.
  request.vars.to_h.each do |k, v|
    next if k.to_s == "history" || k.to_s.start_with?("__")

    lines << "#{k}: #{v}"
  end
  return [] if lines.empty?

  [ContextFragment.build(
    content: "<request_context>\n#{lines.join("\n")}\n</request_context>",
    placement: :system, priority: Context::Priority::REQUEST, source: id
  )]
end