Class: Agent::SessionContext::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/agent/session_context/builder.rb

Defined Under Namespace

Classes: PromptsResult

Instance Method Summary collapse

Constructor Details

#initialize(catalog: Agent::Sessions, now: Time.now, collector: EvidenceCollector.new, prompt_extractor: PromptExtractor.new, injected_context_collector: InjectedContextCollector.new) ⇒ Builder

Returns a new instance of Builder.



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/agent/session_context/builder.rb', line 12

def initialize(
  catalog: Agent::Sessions,
  now: Time.now,
  collector: EvidenceCollector.new,
  prompt_extractor: PromptExtractor.new,
  injected_context_collector: InjectedContextCollector.new
)
  @catalog = catalog
  @now = now
  @collector = collector
  @prompt_extractor = prompt_extractor
  @injected_context_collector = injected_context_collector
end

Instance Method Details

#loop(session) ⇒ Object



54
55
56
# File 'lib/agent/session_context/builder.rb', line 54

def loop(session)
  Loop.for(@catalog.read(session))
end

#prompts(session) ⇒ Object



42
43
44
# File 'lib/agent/session_context/builder.rb', line 42

def prompts(session)
  prompts_result(session).prompts
end

#prompts_result(session) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/agent/session_context/builder.rb', line 46

def prompts_result(session)
  transcript = capture(session)
  PromptsResult.new(
    prompts: @prompt_extractor.call(transcript),
    reader_warnings: transcript.warnings
  )
end

#show(session, include_injected: false) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/agent/session_context/builder.rb', line 26

def show(session, include_injected: false)
  validate_include_injected!(include_injected)
  transcript = capture(session)
  observed = @collector.call(transcript)

  build_snapshot(
    session:,
    transcript:,
    observed:,
    prompts: @prompt_extractor.call(transcript),
    injected_context: @injected_context_collector.call(transcript, include_text: include_injected),
    warnings: transcript.warnings,
    summary_metadata: (transcript)
  )
end

#summarize(session, summarizer:) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/agent/session_context/builder.rb', line 58

def summarize(session, summarizer:)
  transcript = capture(session)
  observed = @collector.call(transcript)
  semantic = SemanticPipeline.new(backend: summarizer).call(transcript:, observed:)
  semantic_collections, unknown_warnings = collect_semantic_items(semantic.items)

  build_snapshot(
    session: session,
    transcript: transcript,
    observed: observed,
    semantic_collections: semantic_collections,
    warnings: transcript.warnings + semantic.warnings + unknown_warnings,
    summary_metadata: semantic..merge((transcript))
  )
end