completion-kit 0.28.4 → 0.28.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff8dc1fe1d84c274b21d8ff9d3dd6e21d547f9c780ba0a071c875abcac3d5459
4
- data.tar.gz: de30042560e897432acbb192aebb6a3735301b644383b2ba49eb123f77e80607
3
+ metadata.gz: 4206f8709997fb6c2e5055bcf2f201eda59d4de2c7c3ef15fc7f98dac4f92a21
4
+ data.tar.gz: 83e6756cc1f5ed0606d01f7e269e7157146a9efe539c7550f4dd33ace35914b0
5
5
  SHA512:
6
- metadata.gz: abf4fea98a8014b6f8cd7155cc54edfdc40bd23a2d2d08a2a864dcc7764e841a1d2554950aca3b22b48b786151da0f5b8237c4ff82c6924799664d2a6c663cd0
7
- data.tar.gz: 6fc8a7683d26cad922086fafd56cacdbd762f4bc766078a1bf5c0f2335a429ba4ec1c5ccac509bec7650a60e9d20747f29680d28344161f186fdff4dca2d9f62
6
+ metadata.gz: 8edabb8604bbee9c38c9cf070add0732592c8392f686f8f224c8ca82cd7aef1d3a581011f41da48eb7cbd3cd0bd26a0331002483843183cf62e4167ea408689c
7
+ data.tar.gz: 2afb4955b727b0bca04939e4d2ce2a6fd61b25e66e3bbe843b39e48ca0a81be30fd845369b30c39b7c17d71d7029d947eb3221d78ca9f0f1faeba9e8eab0a179
@@ -16,7 +16,7 @@ module CompletionKit
16
16
  @responses_total = @run.responses.count
17
17
  @responses_per_page = RESPONSES_PER_PAGE
18
18
  @responses_total_pages = [(@responses_total.to_f / RESPONSES_PER_PAGE).ceil, 1].max
19
- @responses_page = params[:page].to_i.clamp(1, @responses_total_pages)
19
+ @responses_page = params[:page].to_s.to_i.clamp(1, @responses_total_pages)
20
20
  @responses_offset = (@responses_page - 1) * RESPONSES_PER_PAGE
21
21
  @responses = ordered_responses_relation(@run, params[:sort])
22
22
  .includes(:reviews)
@@ -18,7 +18,7 @@ module CompletionKit
18
18
  discard_on ActiveJob::DeserializationError
19
19
 
20
20
  rescue_from(StandardError) do |error|
21
- if error.is_a?(CompletionKit::ModelDiscoveryService::DiscoveryError)
21
+ unless error.is_a?(CompletionKit::ModelDiscoveryService::DiscoveryError)
22
22
  Rails.error.report(error, handled: true, context: { job: self.class.name, provider_credential_id: arguments.first })
23
23
  end
24
24
  credential = ProviderCredential.find_by(id: arguments.first)
@@ -63,9 +63,19 @@ module CompletionKit
63
63
  return nil if body.blank?
64
64
  data = JSON.parse(body)
65
65
  err = data["error"]
66
- (err.is_a?(Hash) && err["message"]) || data["message"] || (err.is_a?(String) && err) || nil
66
+ message = (err.is_a?(Hash) && err["message"]) || data["message"] || (err.is_a?(String) && err) || nil
67
+ redact_secrets(message)
67
68
  rescue JSON::ParserError
68
- body.to_s.truncate(200)
69
+ redact_secrets(body.to_s.truncate(200))
70
+ end
71
+
72
+ def redact_secrets(text)
73
+ return text if text.blank?
74
+ redacted = text.to_s
75
+ redacted = redacted.gsub(@api_key, "[REDACTED]") if @api_key.present?
76
+ redacted = redacted.gsub(/\bsk-[A-Za-z0-9_-]{6,}/, "[REDACTED]")
77
+ redacted = redacted.gsub(/\bBearer\s+\S+/i, "Bearer [REDACTED]")
78
+ redacted.gsub(/(API key provided:\s*)\S+/i, '\1[REDACTED]')
69
79
  end
70
80
 
71
81
  def fetch_openai_models
@@ -336,11 +346,11 @@ module CompletionKit
336
346
  end
337
347
  else
338
348
  model.supports_generation = false
339
- model.generation_error = "#{response.status} - #{response.body.truncate(500)}"
349
+ model.generation_error = redact_secrets("#{response.status} - #{response.body.truncate(500)}")
340
350
  end
341
351
  rescue StandardError => e
342
352
  model.supports_generation = false
343
- model.generation_error = e.message
353
+ model.generation_error = redact_secrets(e.message)
344
354
  end
345
355
 
346
356
  def probe_judging(model)
@@ -364,11 +374,11 @@ module CompletionKit
364
374
  end
365
375
  else
366
376
  model.supports_judging = false
367
- model.judging_error = "#{response.status} - #{response.body.truncate(500)}"
377
+ model.judging_error = redact_secrets("#{response.status} - #{response.body.truncate(500)}")
368
378
  end
369
379
  rescue StandardError => e
370
380
  model.supports_judging = false
371
- model.judging_error = e.message
381
+ model.judging_error = redact_secrets(e.message)
372
382
  end
373
383
 
374
384
  OPENAI_REASONING_PROBE_BUDGET = 65_536
@@ -1,3 +1,3 @@
1
1
  module CompletionKit
2
- VERSION = "0.28.4"
2
+ VERSION = "0.28.5"
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.28.4
4
+ version: 0.28.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Bastin