Module: CompletionKit::ApplicationHelper
- Defined in:
- app/helpers/completion_kit/application_helper.rb
Constant Summary collapse
- PROVIDER_LABELS =
{ "openai" => "OpenAI", "anthropic" => "Anthropic", "ollama" => "Ollama / local endpoint", "openrouter" => "OpenRouter" }.freeze
Instance Method Summary collapse
- #ck_badge_classes(kind) ⇒ Object
- #ck_button_classes(tone = :dark, variant: :solid) ⇒ Object
- #ck_grouped_models(models, selected = nil) ⇒ Object
- #ck_model_options_html(scope) ⇒ Object
- #ck_provider_label(provider) ⇒ Object
- #ck_run_dot(run) ⇒ Object
- #ck_run_status_label(run) ⇒ Object
- #ck_score_kind(score) ⇒ Object
- #ck_word_diff_new(old_text, new_text) ⇒ Object
- #ck_word_diff_old(old_text, new_text) ⇒ Object
Instance Method Details
#ck_badge_classes(kind) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/helpers/completion_kit/application_helper.rb', line 26 def ck_badge_classes(kind) case kind.to_s when "high" "ck-badge ck-badge--high" when "medium" "ck-badge ck-badge--medium" when "low" "ck-badge ck-badge--low" when "pending" "ck-badge ck-badge--pending" when "running" "ck-badge ck-badge--running" when "generating", "judging" "ck-badge ck-badge--running" when "completed" "ck-badge ck-badge--high" when "failed" "ck-badge ck-badge--low" else "ck-badge ck-badge--pending" end end |
#ck_button_classes(tone = :dark, variant: :solid) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/helpers/completion_kit/application_helper.rb', line 3 def (tone = :dark, variant: :solid) base = "ck-button" styles = case [tone, variant] when [:dark, :solid] "ck-button--primary" when [:light, :outline] "ck-button--secondary" when [:green, :solid] "ck-button--success" when [:red, :outline] "ck-button--danger" when [:amber, :outline] "ck-button--warning" when [:blue, :outline] "ck-button--info" else "ck-button--primary" end "#{base} #{styles}" end |
#ck_grouped_models(models, selected = nil) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'app/helpers/completion_kit/application_helper.rb', line 90 def ck_grouped_models(models, selected = nil) if selected.present? && models.none? { |m| m[:id] == selected } retired = CompletionKit::Model.find_by(model_id: selected) if retired models = models + [{ id: retired.model_id, name: "#{retired.display_name || retired.model_id} (retired)", provider: retired.provider }] end end groups = models.group_by do |m| if m[:provider] == "openrouter" upstream = m[:id].to_s.split("/", 2).first "OpenRouter — #{upstream}" else ck_provider_label(m[:provider]) end end ordered_keys = groups.keys.sort_by { |label| [label.start_with?("OpenRouter") ? 1 : 0, label] } grouped = ordered_keys.map { |label| [label, groups[label].map { |m| [m[:name], m[:id]] }] } (grouped, selected) end |
#ck_model_options_html(scope) ⇒ Object
112 113 114 115 116 |
# File 'app/helpers/completion_kit/application_helper.rb', line 112 def (scope) models = CompletionKit::ApiConfig.available_models(scope: scope) return "" if models.empty? ck_grouped_models(models) end |
#ck_provider_label(provider) ⇒ Object
86 87 88 |
# File 'app/helpers/completion_kit/application_helper.rb', line 86 def ck_provider_label(provider) PROVIDER_LABELS[provider.to_s] || provider.to_s.titleize end |
#ck_run_dot(run) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'app/helpers/completion_kit/application_helper.rb', line 49 def ck_run_dot(run) case run.status when "generating", "judging" then "ck-dot ck-dot--running" when "failed" then "ck-dot ck-dot--failed" when "completed" then "ck-dot ck-dot--completed" else "ck-dot ck-dot--pending" end end |
#ck_run_status_label(run) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/helpers/completion_kit/application_helper.rb', line 58 def ck_run_status_label(run) case run.status when "pending" then "Ready to run" when "generating" if run.progress_total.to_i > 0 "Generating responses (#{run.progress_current}/#{run.progress_total})" else "Generating responses…" end when "judging" if run.progress_total.to_i > 0 "Judging (#{run.progress_current}/#{run.progress_total} evaluations)" else "Judging…" end when "completed" then "Completed" when "failed" then "Failed" else run.status.capitalize end end |
#ck_score_kind(score) ⇒ Object
118 119 120 121 122 123 124 |
# File 'app/helpers/completion_kit/application_helper.rb', line 118 def ck_score_kind(score) return :pending if score.nil? return :high if score >= CompletionKit.config.high_quality_threshold return :medium if score >= CompletionKit.config.medium_quality_threshold :low end |
#ck_word_diff_new(old_text, new_text) ⇒ Object
130 131 132 |
# File 'app/helpers/completion_kit/application_helper.rb', line 130 def ck_word_diff_new(old_text, new_text) diff_tokens(old_text, new_text, :new) end |
#ck_word_diff_old(old_text, new_text) ⇒ Object
126 127 128 |
# File 'app/helpers/completion_kit/application_helper.rb', line 126 def ck_word_diff_old(old_text, new_text) diff_tokens(old_text, new_text, :old) end |