Module: Envoy::Badges

Defined in:
lib/envoy/badges.rb

Overview

Renders a tool-call outcome badge as an HTML-safe string. A plain module method (NOT a view helper), for the same reason as Envoy::Markdown: Turbo broadcasts render through the host's ApplicationController, which cannot see engine view helpers. Call directly: <%= Envoy::Badges.outcome(tool_call) %>.

Constant Summary collapse

STYLES =

Modifier classes are styled by the gem's own console.css (semantic, not Tailwind) so the badge stays styled in any host.

{
  denied: [ "denied", "envoy-badge--denied" ],
  failed: [ "failed", "envoy-badge--failed" ]
}.freeze
SUCCESS =
[ "ok", "envoy-badge--ok" ].freeze

Class Method Summary collapse

Class Method Details

.outcome(tool_call) ⇒ Object



17
18
19
20
# File 'lib/envoy/badges.rb', line 17

def outcome(tool_call)
  label, modifier = STYLES.fetch(tool_call.outcome, SUCCESS)
  %(<span class="envoy-badge #{modifier}">#{label}</span>).html_safe
end