riffer 0.50.0 → 0.50.1

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: 1700c8028d7de9b0e109fc259f904c8a8ff1e92964e23c90cd00574cd43a0bc2
4
- data.tar.gz: 1245b96f6a1490aa5cedd3d5e60ff062a8d70cc7330bd7ec01d0f027e05d65fa
3
+ metadata.gz: f6bfdc8b4676c2d368fd17ff5b709e802549a01580845e9c12c9f352d395e128
4
+ data.tar.gz: 1567b5498abacc5fe2c820dee04d18bee016465108eea6c1172f03954359bdc6
5
5
  SHA512:
6
- metadata.gz: dc40857b3085259180f014442cd8d2ec4c6f6f85d2c577cacbff6332176eb39e948de9e20b22732730e52ea4151016fcf23c3387de181f8b8ff27537df8cc21f
7
- data.tar.gz: '0152801a535973a01216aac4ff1a5b07554b2e8bde282a9dd3fc2c09408b0ddb7890953e7d60c21102d0889896190adf88d6822ef0ca0ff4a6564b688f7b4dd2'
6
+ metadata.gz: 78c30c4798848f219b2c10f756d2c0caca5a95f2ab705660789a5e557284aa275e9d203a18e37427be63d8cee6858d90a88cb3da7aaf59abff2271a532ed65ec
7
+ data.tar.gz: a8e8b4a891b42b3b1f83ba50a4fe6affe3f9ecf78a158de8d6696c89ed71c88a2549b5a6f72c134743914abb69e0a34d88e953b700d166be6626d8b92b6a139d
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.50.0"
2
+ ".": "0.50.1"
3
3
  }
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.50.1](https://github.com/janeapp/riffer/compare/riffer/v0.50.0...riffer/v0.50.1) (2026-10-02)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **providers:** replay reasoning parts with no text as empty strings ([#470](https://github.com/janeapp/riffer/issues/470)) ([a76d355](https://github.com/janeapp/riffer/commit/a76d3550d1e030b2d77118fb33e5d52271f00393))
14
+
8
15
  ## [0.50.0](https://github.com/janeapp/riffer/compare/riffer/v0.49.0...riffer/v0.50.0) (2026-09-28)
9
16
 
10
17
 
data/docs/MESSAGES.md CHANGED
@@ -164,7 +164,7 @@ Each part carries:
164
164
  | `data` | `String?` | The opaque payload, for `:encrypted` parts |
165
165
  | `signature` | `String?` | The provider's signature over the part, when it issues one |
166
166
  | `id` | `String?` | The provider's identifier for the part, when it issues one |
167
- | `format` | `String?` | The wire format, owned by the adapter that produced the part (e.g. `"anthropic-claude-v1"`) |
167
+ | `format` | `String?` | The wire format, owned by the adapter that produced the part (e.g. `"anthropic-messages-v1"`) |
168
168
 
169
169
  A `type` outside the three values raises `Riffer::ArgumentError`. `format` is a free string riffer never validates — it exists so an adapter can tell its own parts apart from another adapter's.
170
170
 
@@ -12,7 +12,7 @@ class Riffer::Messages::Assistant::ReasoningPart
12
12
  attr_reader :signature #: String? # @dynamic signature
13
13
  attr_reader :id #: String? # @dynamic id
14
14
 
15
- # Owned by the producing adapter (e.g. <tt>"anthropic-claude-v1"</tt>); adapters replay only the
15
+ # Owned by the producing adapter (e.g. <tt>"anthropic-messages-v1"</tt>); adapters replay only the
16
16
  # formats they recognize, so it is never validated here.
17
17
  attr_reader :format #: String? # @dynamic format
18
18
 
@@ -480,7 +480,7 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
480
480
  data = part.data
481
481
  return { reasoning_content: { redacted_content: Base64.strict_decode64(data) } } if data
482
482
 
483
- { reasoning_content: { reasoning_text: { text: part.text, signature: part.signature }.compact } }
483
+ { reasoning_content: { reasoning_text: { text: part.text.to_s, signature: part.signature }.compact } }
484
484
  end
485
485
 
486
486
  #--
@@ -440,7 +440,7 @@ class Riffer::Providers::Anthropic < Riffer::Providers::Base
440
440
  def convert_reasoning_part_to_anthropic_format(part)
441
441
  return { type: "redacted_thinking", data: part.data } if part.type == :encrypted
442
442
 
443
- { type: "thinking", thinking: part.text, signature: part.signature }
443
+ { type: "thinking", thinking: part.text.to_s, signature: part.signature }
444
444
  end
445
445
 
446
446
  #--
@@ -446,8 +446,8 @@ class Riffer::Providers::OpenAI < Riffer::Providers::Base
446
446
  #--
447
447
  #: (Array[Riffer::Messages::Assistant::ReasoningPart]) -> Hash[Symbol, untyped]
448
448
  def convert_reasoning_item_to_openai_format(parts)
449
- summary = parts.filter_map { |part| { type: "summary_text", text: part.text } if part.type == :summary }
450
- content = parts.filter_map { |part| { type: "reasoning_text", text: part.text } if part.type == :text }
449
+ summary = parts.filter_map { |part| { type: "summary_text", text: part.text.to_s } if part.type == :summary }
450
+ content = parts.filter_map { |part| { type: "reasoning_text", text: part.text.to_s } if part.type == :text }
451
451
 
452
452
  {
453
453
  type: "reasoning",
@@ -2,5 +2,5 @@
2
2
  # rbs_inline: enabled
3
3
 
4
4
  module Riffer
5
- VERSION = "0.50.0" #: String
5
+ VERSION = "0.50.1" #: String
6
6
  end
@@ -15,7 +15,7 @@ class Riffer::Messages::Assistant::ReasoningPart
15
15
 
16
16
  attr_reader id: String?
17
17
 
18
- # Owned by the producing adapter (e.g. <tt>"anthropic-claude-v1"</tt>); adapters replay only the
18
+ # Owned by the producing adapter (e.g. <tt>"anthropic-messages-v1"</tt>); adapters replay only the
19
19
  # formats they recognize, so it is never validated here.
20
20
  attr_reader format: String?
21
21
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riffer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.50.0
4
+ version: 0.50.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Bottrall