Module: Legion::Extensions::Llm::Ledger::Runners::Metering

Extended by:
Metering
Included in:
Metering
Defined in:
lib/legion/extensions/llm/ledger/runners/metering.rb

Instance Method Summary collapse

Instance Method Details

#spool_flushObject



11
12
13
14
15
16
17
18
19
20
# File 'lib/legion/extensions/llm/ledger/runners/metering.rb', line 11

def spool_flush
  return unless defined?(Legion::LLM::Metering) &&
                Legion::LLM::Metering.respond_to?(:flush_spool)

  Legion::LLM::Metering.flush_spool
  { result: :ok }
rescue StandardError => e
  Legion::Logging.warn("[lex-llm-ledger] spool_flush failed: #{e.message}") # rubocop:disable Legion/HelperMigration/DirectLogging
  { result: :error, error: e.message }
end

#write_metering_record(payload, metadata = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/llm/ledger/runners/metering.rb', line 22

def write_metering_record(payload,  = {})
  ctx   = payload[:message_context] || {}
  props = [:properties] || {}

  record = build_metering_record(payload, ctx, props)
  ::Legion::Data::DB[:metering_records].insert(record)
  { result: :ok }
rescue Sequel::UniqueConstraintViolation => _e
  { result: :duplicate }
rescue StandardError => e
  Legion::Logging.error("[lex-llm-ledger] write_metering_record failed: #{e.message}") # rubocop:disable Legion/HelperMigration/DirectLogging
  { result: :error, error: e.message }
end