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 +4 -4
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +7 -0
- data/docs/MESSAGES.md +1 -1
- data/lib/riffer/messages/assistant/reasoning_part.rb +1 -1
- data/lib/riffer/providers/amazon_bedrock.rb +1 -1
- data/lib/riffer/providers/anthropic.rb +1 -1
- data/lib/riffer/providers/open_ai.rb +2 -2
- data/lib/riffer/version.rb +1 -1
- data/sig/generated/riffer/messages/assistant/reasoning_part.rbs +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f6bfdc8b4676c2d368fd17ff5b709e802549a01580845e9c12c9f352d395e128
|
|
4
|
+
data.tar.gz: 1567b5498abacc5fe2c820dee04d18bee016465108eea6c1172f03954359bdc6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 78c30c4798848f219b2c10f756d2c0caca5a95f2ab705660789a5e557284aa275e9d203a18e37427be63d8cee6858d90a88cb3da7aaf59abff2271a532ed65ec
|
|
7
|
+
data.tar.gz: a8e8b4a891b42b3b1f83ba50a4fe6affe3f9ecf78a158de8d6696c89ed71c88a2549b5a6f72c134743914abb69e0a34d88e953b700d166be6626d8b92b6a139d
|
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-
|
|
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-
|
|
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",
|
data/lib/riffer/version.rb
CHANGED
|
@@ -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-
|
|
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
|
|