completion-kit 0.5.41 → 0.5.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/completion_kit/application.js +17 -0
  3. data/app/assets/stylesheets/completion_kit/application.css +557 -23
  4. data/app/controllers/completion_kit/metrics_controller.rb +62 -24
  5. data/app/jobs/completion_kit/judge_review_job.rb +11 -0
  6. data/app/models/completion_kit/judge_version.rb +32 -1
  7. data/app/models/completion_kit/starter_metric_dismissal.rb +5 -0
  8. data/app/services/completion_kit/judge_variant_generator.rb +8 -6
  9. data/app/services/completion_kit/metric_calibration_stats.rb +16 -4
  10. data/app/services/completion_kit/starter_metrics.rb +94 -0
  11. data/app/views/completion_kit/api_reference/_body.html.erb +1 -1
  12. data/app/views/completion_kit/calibrations/_buttons.html.erb +43 -6
  13. data/app/views/completion_kit/calibrations/_trust_panel.html.erb +27 -28
  14. data/app/views/completion_kit/metrics/_form.html.erb +90 -4
  15. data/app/views/completion_kit/metrics/_rubric_diff.html.erb +25 -0
  16. data/app/views/completion_kit/metrics/_rubric_hint.html.erb +4 -0
  17. data/app/views/completion_kit/metrics/_starter_card.html.erb +15 -0
  18. data/app/views/completion_kit/metrics/edit.html.erb +5 -1
  19. data/app/views/completion_kit/metrics/index.html.erb +32 -6
  20. data/app/views/completion_kit/metrics/show.html.erb +132 -126
  21. data/app/views/completion_kit/metrics/starter_preview.html.erb +45 -0
  22. data/app/views/completion_kit/responses/show.html.erb +1 -1
  23. data/app/views/completion_kit/runs/_status_panel.html.erb +2 -2
  24. data/config/routes.rb +7 -1
  25. data/db/migrate/20260524000001_create_completion_kit_starter_metric_dismissals.rb +12 -0
  26. data/db/migrate/20260525000001_add_version_number_and_published_at_to_judge_versions.rb +24 -0
  27. data/lib/completion_kit/version.rb +1 -1
  28. metadata +9 -1
@@ -0,0 +1,45 @@
1
+ <section class="ck-page-header">
2
+ <div>
3
+ <p class="ck-kicker">Starter metric</p>
4
+ <h1 class="ck-title"><%= @starter.name %></h1>
5
+ </div>
6
+ <div class="ck-actions">
7
+ <%= link_to "← Back to metrics", metrics_path, class: ck_button_classes(:light, variant: :outline) %>
8
+ </div>
9
+ </section>
10
+
11
+ <section class="ck-card ck-card--spaced">
12
+ <p class="ck-kicker">Why use this</p>
13
+ <p class="ck-copy"><strong><%= @starter.description %></strong></p>
14
+ <p class="ck-copy"><%= @starter.catches %></p>
15
+ </section>
16
+
17
+ <section class="ck-card ck-card--spaced">
18
+ <p class="ck-kicker">Judge instruction</p>
19
+ <p class="ck-copy"><%= @starter.instruction %></p>
20
+ </section>
21
+
22
+ <section class="ck-card ck-card--spaced">
23
+ <p class="ck-kicker">Rubric<%= render "completion_kit/metrics/rubric_hint" %></p>
24
+ <div class="ck-rubric-display">
25
+ <% @starter.rubric_bands.sort_by { |b| -b["stars"] }.each do |band| %>
26
+ <div class="ck-rubric-row ck-rubric-row--display">
27
+ <div class="ck-rubric-row__stars">
28
+ <% 5.times do |i| %>
29
+ <svg viewBox="0 0 24 24" width="16" height="16" stroke-width="1.75" class="ck-star <%= i < band["stars"] ? "ck-star--filled" : "ck-star--empty" %>"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
30
+ <% end %>
31
+ </div>
32
+ <div class="ck-rubric-row__fields">
33
+ <p class="ck-copy"><%= band["description"] %></p>
34
+ </div>
35
+ </div>
36
+ <% end %>
37
+ </div>
38
+ </section>
39
+
40
+ <div class="ck-starter-actions">
41
+ <%= link_to "Cancel", metrics_path, class: ck_button_classes(:light, variant: :outline) %>
42
+ <%= button_to "Add #{@starter.name} to my metrics", adopt_starter_metrics_path(key: @starter.key),
43
+ method: :post, form_class: "inline-block",
44
+ class: ck_button_classes(:dark) %>
45
+ </div>
@@ -98,7 +98,7 @@
98
98
 
99
99
  <div class="ck-review-list">
100
100
  <% @reviews.each do |review| %>
101
- <div class="ck-review-card">
101
+ <div class="ck-review-card" id="<%= review.metric&.name&.parameterize || "review-#{review.id}" %>">
102
102
  <div class="ck-review-card__header">
103
103
  <span class="ck-review-card__metric"><% if review.metric %><%= link_to review.metric_name, metric_path(review.metric), class: "ck-link" %><% else %><%= review.metric_name %><% end %></span>
104
104
  <div class="ck-inline">
@@ -46,7 +46,7 @@
46
46
  <% else %>
47
47
  <span class="ck-metric-pip ck-metric-pip--pending">
48
48
  <span class="ck-metric-pip__bar"></span>
49
- <span class="ck-metric-pip__label"><%= metric.name %> <em>pending</em></span>
49
+ <span class="ck-metric-pip__label"><%= metric.name %> <span class="ck-metric-pip__sub">pending</span></span>
50
50
  </span>
51
51
  <% end %>
52
52
  <% end %>
@@ -72,7 +72,7 @@
72
72
 
73
73
  <% if failed_count > 0 %>
74
74
  <%= button_to retry_failures_run_path(run), method: :post, class: "ck-run-status__retry", form_class: "ck-run-status__action" do %>
75
- Retry <%= failed_count %> failed <%= "row".pluralize(failed_count) %>
75
+ Retry <%= failed_count %> failed <%= "case".pluralize(failed_count) %>
76
76
  <% end %>
77
77
  <% end %>
78
78
  </section>
data/config/routes.rb CHANGED
@@ -13,8 +13,14 @@ CompletionKit::Engine.routes.draw do
13
13
 
14
14
  resources :datasets
15
15
  resources :metrics do
16
+ collection do
17
+ get "starters/:key", to: "metrics#starter_preview", as: :starter_preview
18
+ post "starters/:key", to: "metrics#adopt_starter", as: :adopt_starter
19
+ post "starters/:key/dismiss", to: "metrics#dismiss_starter", as: :dismiss_starter
20
+ end
16
21
  member do
17
- post :add_few_shot
22
+ post :add_few_shot
23
+ delete :remove_few_shot
18
24
  post :publish_draft
19
25
  post :suggest_variants
20
26
  delete :dismiss_suggestion
@@ -0,0 +1,12 @@
1
+ class CreateCompletionKitStarterMetricDismissals < ActiveRecord::Migration[8.1]
2
+ def change
3
+ create_table :completion_kit_starter_metric_dismissals do |t|
4
+ t.string :starter_key, null: false
5
+ t.timestamps
6
+ end
7
+
8
+ add_index :completion_kit_starter_metric_dismissals, :starter_key,
9
+ unique: true,
10
+ name: "index_ck_starter_dismissals_on_key"
11
+ end
12
+ end
@@ -0,0 +1,24 @@
1
+ class AddVersionNumberAndPublishedAtToJudgeVersions < ActiveRecord::Migration[8.1]
2
+ def change
3
+ add_column :completion_kit_judge_versions, :version_number, :integer
4
+ add_column :completion_kit_judge_versions, :published_at, :datetime
5
+
6
+ reversible do |dir|
7
+ dir.up do
8
+ jv = Class.new(ActiveRecord::Base) { self.table_name = "completion_kit_judge_versions" }
9
+ jv.distinct.pluck(:metric_id).each do |metric_id|
10
+ jv.where(metric_id: metric_id).order(:created_at, :id).each_with_index do |row, i|
11
+ updates = { version_number: i + 1 }
12
+ updates[:published_at] = row.created_at if row[:state] == "published"
13
+ jv.where(id: row.id).update_all(updates)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ change_column_null :completion_kit_judge_versions, :version_number, false
20
+ add_index :completion_kit_judge_versions,
21
+ [:metric_id, :version_number],
22
+ name: "index_ck_judge_versions_on_metric_version"
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module CompletionKit
2
- VERSION = "0.5.41"
2
+ VERSION = "0.5.43"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: completion-kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.41
4
+ version: 0.5.43
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Bastin
@@ -284,6 +284,7 @@ files:
284
284
  - app/models/completion_kit/review.rb
285
285
  - app/models/completion_kit/run.rb
286
286
  - app/models/completion_kit/run_metric.rb
287
+ - app/models/completion_kit/starter_metric_dismissal.rb
287
288
  - app/models/completion_kit/suggestion.rb
288
289
  - app/models/completion_kit/tag.rb
289
290
  - app/models/completion_kit/tagging.rb
@@ -318,6 +319,7 @@ files:
318
319
  - app/services/completion_kit/open_router_client.rb
319
320
  - app/services/completion_kit/prompt_improvement_service.rb
320
321
  - app/services/completion_kit/provider_endpoint.rb
322
+ - app/services/completion_kit/starter_metrics.rb
321
323
  - app/services/completion_kit/worker_health.rb
322
324
  - app/validators/completion_kit/tenant_scoped_uniqueness_validator.rb
323
325
  - app/views/completion_kit/api_reference/_authentication.html.erb
@@ -345,10 +347,14 @@ files:
345
347
  - app/views/completion_kit/metric_groups/new.html.erb
346
348
  - app/views/completion_kit/metric_groups/show.html.erb
347
349
  - app/views/completion_kit/metrics/_form.html.erb
350
+ - app/views/completion_kit/metrics/_rubric_diff.html.erb
351
+ - app/views/completion_kit/metrics/_rubric_hint.html.erb
352
+ - app/views/completion_kit/metrics/_starter_card.html.erb
348
353
  - app/views/completion_kit/metrics/edit.html.erb
349
354
  - app/views/completion_kit/metrics/index.html.erb
350
355
  - app/views/completion_kit/metrics/new.html.erb
351
356
  - app/views/completion_kit/metrics/show.html.erb
357
+ - app/views/completion_kit/metrics/starter_preview.html.erb
352
358
  - app/views/completion_kit/onboarding/_concept.html.erb
353
359
  - app/views/completion_kit/onboarding/show.html.erb
354
360
  - app/views/completion_kit/prompts/_form.html.erb
@@ -414,6 +420,8 @@ files:
414
420
  - db/migrate/20260522000002_create_completion_kit_calibrations.rb
415
421
  - db/migrate/20260523000001_add_few_shot_examples_to_completion_kit_metrics.rb
416
422
  - db/migrate/20260523000002_add_state_to_completion_kit_judge_versions.rb
423
+ - db/migrate/20260524000001_create_completion_kit_starter_metric_dismissals.rb
424
+ - db/migrate/20260525000001_add_version_number_and_published_at_to_judge_versions.rb
417
425
  - lib/completion-kit.rb
418
426
  - lib/completion_kit.rb
419
427
  - lib/completion_kit/concurrency_check.rb