Module: Legion::LLM::Audit
- Extended by:
- Legion::Logging::Helper
- Defined in:
- lib/legion/llm/audit.rb
Class Method Summary collapse
- .attributed_event(event) ⇒ Object
-
.const_missing(name) ⇒ Object
Backward-compat: resolve old Legion::LLM::Audit::Exchange, ::PromptEvent, etc.
- .emit_prompt(event) ⇒ Object
- .emit_skill(**event) ⇒ Object
- .emit_tools(event) ⇒ Object
- .load_transport ⇒ Object
- .transport_connected? ⇒ Boolean
Class Method Details
.attributed_event(event) ⇒ Object
71 72 73 74 75 76 |
# File 'lib/legion/llm/audit.rb', line 71 def attributed_event(event) source = event.is_a?(Hash) ? event.dup : {} source[:identity] = Legion::LLM::PublisherIdentity.current source[:caller] ||= Legion::LLM::PublisherIdentity.caller_hash source end |
.const_missing(name) ⇒ Object
Backward-compat: resolve old Legion::LLM::Audit::Exchange, ::PromptEvent, etc.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/legion/llm/audit.rb', line 79 def self.const_missing(name) case name when :Exchange require_relative 'transport/exchanges/audit' Transport::Exchanges::Audit when :PromptEvent require_relative 'transport/messages/prompt_event' Transport::Messages::PromptEvent when :ToolEvent require_relative 'transport/messages/tool_event' Transport::Messages::ToolEvent when :SkillEvent require_relative 'transport/messages/skill_event' Transport::Messages::SkillEvent else super end end |
.emit_prompt(event) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/legion/llm/audit.rb', line 22 def emit_prompt(event) event = attributed_event(event) if transport_connected? && defined?(Legion::LLM::Transport::Messages::PromptEvent) Legion::LLM::Transport::Messages::PromptEvent.new(**event).publish log.info('[llm][audit] published prompt audit') :published else log.warn('[llm][audit] disabled prompt audit: transport unavailable') :disabled end rescue StandardError => e handle_exception(e, level: :warn, operation: 'llm.audit.emit_prompt') :dropped end |
.emit_skill(**event) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/legion/llm/audit.rb', line 52 def emit_skill(**event) event = attributed_event(event) if transport_connected? && defined?(Legion::LLM::Transport::Messages::SkillEvent) Legion::LLM::Transport::Messages::SkillEvent.new(**event).publish log.info('[llm][audit] published skill audit') :published else log.warn('[llm][audit] disabled skill audit: transport unavailable') :disabled end rescue StandardError => e handle_exception(e, level: :warn, operation: 'llm.audit.emit_skill') :dropped end |
.emit_tools(event) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/legion/llm/audit.rb', line 37 def emit_tools(event) event = attributed_event(event) if transport_connected? && defined?(Legion::LLM::Transport::Messages::ToolEvent) Legion::LLM::Transport::Messages::ToolEvent.new(**event).publish log.info('[llm][audit] published tool audit') :published else log.warn('[llm][audit] disabled tool audit: transport unavailable') :disabled end rescue StandardError => e handle_exception(e, level: :warn, operation: 'llm.audit.emit_tools') :dropped end |
.load_transport ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/legion/llm/audit.rb', line 11 def self.load_transport return unless defined?(Legion::Transport::Message) require_relative 'transport/exchanges/audit' require_relative 'transport/messages/prompt_event' require_relative 'transport/messages/tool_event' require_relative 'transport/messages/skill_event' end |
.transport_connected? ⇒ Boolean
67 68 69 |
# File 'lib/legion/llm/audit.rb', line 67 def transport_connected? Legion::LLM::Settings.transport_connected? end |