riffer 0.47.0 → 0.47.2
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/.claude/rules/rbs-inline.md +5 -1
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +16 -0
- data/Rakefile +1 -1
- data/Steepfile +1 -15
- data/docs/AGENTS.md +2 -2
- data/docs/STREAM_EVENTS.md +23 -0
- data/docs/providers/CUSTOM_PROVIDERS.md +2 -0
- data/lib/riffer/agent/config.rb +11 -11
- data/lib/riffer/agent/outcome.rb +2 -2
- data/lib/riffer/agent/response.rb +9 -9
- data/lib/riffer/agent/run.rb +0 -1
- data/lib/riffer/agent/session.rb +1 -1
- data/lib/riffer/agent/structured_output/result.rb +2 -2
- data/lib/riffer/agent/structured_output.rb +1 -1
- data/lib/riffer/agent.rb +11 -11
- data/lib/riffer/config.rb +30 -30
- data/lib/riffer/evals/judge.rb +2 -3
- data/lib/riffer/evals/result.rb +6 -6
- data/lib/riffer/evals/run_result.rb +1 -1
- data/lib/riffer/evals/scenario_result.rb +6 -6
- data/lib/riffer/guardrails/modification.rb +3 -3
- data/lib/riffer/guardrails/result.rb +3 -3
- data/lib/riffer/guardrails/runner.rb +4 -4
- data/lib/riffer/guardrails/tripwire.rb +4 -4
- data/lib/riffer/mcp/manifest.rb +5 -5
- data/lib/riffer/mcp/registration.rb +1 -1
- data/lib/riffer/mcp/search_tool.rb +1 -1
- data/lib/riffer/messages/assistant.rb +5 -5
- data/lib/riffer/messages/base.rb +2 -4
- data/lib/riffer/messages/file_part.rb +4 -7
- data/lib/riffer/messages/tool.rb +4 -4
- data/lib/riffer/messages/user.rb +1 -1
- data/lib/riffer/params/param.rb +29 -10
- data/lib/riffer/params.rb +3 -1
- data/lib/riffer/providers/amazon_bedrock.rb +29 -2
- data/lib/riffer/providers/anthropic.rb +7 -0
- data/lib/riffer/providers/base.rb +1 -2
- data/lib/riffer/providers/finish_reason.rb +2 -2
- data/lib/riffer/providers/mock.rb +1 -1
- data/lib/riffer/providers/open_ai.rb +8 -0
- data/lib/riffer/providers/repository.rb +0 -4
- data/lib/riffer/providers/token_usage.rb +5 -5
- data/lib/riffer/skills/adapter.rb +1 -1
- data/lib/riffer/skills/context.rb +4 -7
- data/lib/riffer/skills/filesystem_backend.rb +1 -2
- data/lib/riffer/skills/frontmatter.rb +4 -4
- data/lib/riffer/skills/xml_adapter.rb +1 -1
- data/lib/riffer/stream_events/base.rb +1 -1
- data/lib/riffer/stream_events/finish_reason_done.rb +2 -2
- data/lib/riffer/stream_events/guardrail_modification.rb +1 -1
- data/lib/riffer/stream_events/guardrail_tripwire.rb +1 -1
- data/lib/riffer/stream_events/interrupt.rb +2 -2
- data/lib/riffer/stream_events/reasoning_delta.rb +1 -1
- data/lib/riffer/stream_events/reasoning_done.rb +1 -1
- data/lib/riffer/stream_events/skill_activation.rb +1 -1
- data/lib/riffer/stream_events/text_delta.rb +1 -1
- data/lib/riffer/stream_events/text_done.rb +1 -1
- data/lib/riffer/stream_events/token_usage_done.rb +1 -1
- data/lib/riffer/stream_events/tool_call_delta.rb +3 -3
- data/lib/riffer/stream_events/tool_call_done.rb +4 -4
- data/lib/riffer/stream_events/web_search_done.rb +2 -2
- data/lib/riffer/stream_events/web_search_status.rb +3 -3
- data/lib/riffer/tools/response.rb +4 -4
- data/lib/riffer/tracing/stream_recorder.rb +6 -6
- data/lib/riffer/version.rb +1 -1
- data/lib/riffer.rb +7 -0
- data/rbs_collection.lock.yaml +320 -0
- data/rbs_collection.yaml +12 -0
- data/sig/_private/anthropic.rbs +5 -4
- data/sig/_private/aws-sdk-core/event_error.rbs +15 -0
- data/sig/generated/riffer/params/param.rbs +10 -1
- data/sig/generated/riffer/params.rbs +2 -0
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +10 -1
- data/sig/generated/riffer/providers/repository.rbs +0 -2
- data/sig/generated/riffer.rbs +8 -0
- metadata +4 -3
- data/sig/_private/async.rbs +0 -28
- data/sig/_private/minitest.rbs +0 -9
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# providers that support reasoning (e.g. OpenAI with the reasoning option).
|
|
6
6
|
class Riffer::StreamEvents::ReasoningDelta < Riffer::StreamEvents::Base
|
|
7
7
|
# The incremental reasoning content.
|
|
8
|
-
attr_reader :content #: String
|
|
8
|
+
attr_reader :content #: String # @dynamic content
|
|
9
9
|
|
|
10
10
|
#--
|
|
11
11
|
#: (String, ?role: Symbol) -> void
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# that support reasoning (e.g. OpenAI with the reasoning option).
|
|
6
6
|
class Riffer::StreamEvents::ReasoningDone < Riffer::StreamEvents::Base
|
|
7
7
|
# The complete reasoning content.
|
|
8
|
-
attr_reader :content #: String
|
|
8
|
+
attr_reader :content #: String # @dynamic content
|
|
9
9
|
|
|
10
10
|
#--
|
|
11
11
|
#: (String, ?role: Symbol) -> void
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# callback when the LLM calls the activation tool.
|
|
6
6
|
class Riffer::StreamEvents::SkillActivation < Riffer::StreamEvents::Base
|
|
7
7
|
# The activated skill name.
|
|
8
|
-
attr_reader :name #: String
|
|
8
|
+
attr_reader :name #: String # @dynamic name
|
|
9
9
|
|
|
10
10
|
#--
|
|
11
11
|
#: (String, ?role: Symbol) -> void
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Represents an incremental text chunk during streaming.
|
|
5
5
|
class Riffer::StreamEvents::TextDelta < Riffer::StreamEvents::Base
|
|
6
6
|
# The incremental text content.
|
|
7
|
-
attr_reader :content #: String
|
|
7
|
+
attr_reader :content #: String # @dynamic content
|
|
8
8
|
|
|
9
9
|
#--
|
|
10
10
|
#: (String, ?role: Symbol) -> void
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Represents completed text generation during streaming.
|
|
5
5
|
class Riffer::StreamEvents::TextDone < Riffer::StreamEvents::Base
|
|
6
6
|
# The complete text content.
|
|
7
|
-
attr_reader :content #: String
|
|
7
|
+
attr_reader :content #: String # @dynamic content
|
|
8
8
|
|
|
9
9
|
#--
|
|
10
10
|
#: (String, ?role: Symbol) -> void
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Final token usage for the response, emitted when the LLM finishes.
|
|
5
5
|
class Riffer::StreamEvents::TokenUsageDone < Riffer::StreamEvents::Base
|
|
6
6
|
# The token usage data for this response.
|
|
7
|
-
attr_reader :token_usage #: Riffer::Providers::TokenUsage
|
|
7
|
+
attr_reader :token_usage #: Riffer::Providers::TokenUsage # @dynamic token_usage
|
|
8
8
|
|
|
9
9
|
#--
|
|
10
10
|
#: (token_usage: Riffer::Providers::TokenUsage, ?role: Symbol) -> void
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
# streaming.
|
|
6
6
|
class Riffer::StreamEvents::ToolCallDelta < Riffer::StreamEvents::Base
|
|
7
7
|
# The tool call item identifier.
|
|
8
|
-
attr_reader :item_id #: String
|
|
8
|
+
attr_reader :item_id #: String # @dynamic item_id
|
|
9
9
|
|
|
10
10
|
# The tool name (may only be present in first delta).
|
|
11
|
-
attr_reader :name #: String?
|
|
11
|
+
attr_reader :name #: String? # @dynamic name
|
|
12
12
|
|
|
13
13
|
# The incremental arguments JSON fragment.
|
|
14
|
-
attr_reader :arguments_delta #: String
|
|
14
|
+
attr_reader :arguments_delta #: String # @dynamic arguments_delta
|
|
15
15
|
|
|
16
16
|
#--
|
|
17
17
|
#: (item_id: String, arguments_delta: String, ?name: String?, ?role: Symbol) -> void
|
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
# Represents a completed tool call during streaming.
|
|
5
5
|
class Riffer::StreamEvents::ToolCallDone < Riffer::StreamEvents::Base
|
|
6
6
|
# The tool call item identifier.
|
|
7
|
-
attr_reader :item_id #: String
|
|
7
|
+
attr_reader :item_id #: String # @dynamic item_id
|
|
8
8
|
|
|
9
9
|
# The call identifier for response matching.
|
|
10
|
-
attr_reader :call_id #: String
|
|
10
|
+
attr_reader :call_id #: String # @dynamic call_id
|
|
11
11
|
|
|
12
12
|
# The tool name.
|
|
13
|
-
attr_reader :name #: String
|
|
13
|
+
attr_reader :name #: String # @dynamic name
|
|
14
14
|
|
|
15
15
|
# The complete arguments JSON string.
|
|
16
|
-
attr_reader :arguments #: String
|
|
16
|
+
attr_reader :arguments #: String # @dynamic arguments
|
|
17
17
|
|
|
18
18
|
#--
|
|
19
19
|
#: (item_id: String, call_id: String, name: String, arguments: String, ?role: Symbol) -> void
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
# The result of a completed server-side web search during streaming.
|
|
5
5
|
class Riffer::StreamEvents::WebSearchDone < Riffer::StreamEvents::Base
|
|
6
6
|
# The search query used.
|
|
7
|
-
attr_reader :query #: String
|
|
7
|
+
attr_reader :query #: String # @dynamic query
|
|
8
8
|
|
|
9
9
|
# The search result sources with title and url.
|
|
10
|
-
attr_reader :sources #: Array[Hash[Symbol, String?]]
|
|
10
|
+
attr_reader :sources #: Array[Hash[Symbol, String?]] # @dynamic sources
|
|
11
11
|
|
|
12
12
|
#--
|
|
13
13
|
#: (String, ?sources: Array[Hash[Symbol, String?]], ?role: Symbol) -> void
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
# progresses.
|
|
6
6
|
class Riffer::StreamEvents::WebSearchStatus < Riffer::StreamEvents::Base
|
|
7
7
|
# The web search status ("in_progress", "searching", "completed", "open_page").
|
|
8
|
-
attr_reader :status #: String
|
|
8
|
+
attr_reader :status #: String # @dynamic status
|
|
9
9
|
|
|
10
10
|
# The URL being fetched (present for "open_page" status).
|
|
11
|
-
attr_reader :url #: String?
|
|
11
|
+
attr_reader :url #: String? # @dynamic url
|
|
12
12
|
|
|
13
13
|
# The search query (present when available during status changes).
|
|
14
|
-
attr_reader :query #: String?
|
|
14
|
+
attr_reader :query #: String? # @dynamic query
|
|
15
15
|
|
|
16
16
|
#--
|
|
17
17
|
#: (String, ?url: String?, ?query: String?, ?role: Symbol) -> void
|
|
@@ -20,17 +20,17 @@ class Riffer::Tools::Response
|
|
|
20
20
|
VALID_FORMATS = %i[text json].freeze #: Array[Symbol]
|
|
21
21
|
|
|
22
22
|
# The response content.
|
|
23
|
-
attr_reader :content #: String
|
|
23
|
+
attr_reader :content #: String # @dynamic content
|
|
24
24
|
|
|
25
25
|
# The error message, or +nil+ on success.
|
|
26
|
-
attr_reader :error_message #: String?
|
|
26
|
+
attr_reader :error_message #: String? # @dynamic error_message
|
|
27
27
|
|
|
28
28
|
# The error type, or +nil+ on success.
|
|
29
|
-
attr_reader :error_type #: Symbol?
|
|
29
|
+
attr_reader :error_type #: Symbol? # @dynamic error_type
|
|
30
30
|
|
|
31
31
|
# The exception an unhandled failure was folded from, or +nil+. Kept out of
|
|
32
32
|
# every serialized form so it never reaches an LLM or a message payload.
|
|
33
|
-
attr_reader :exception #: Exception?
|
|
33
|
+
attr_reader :exception #: Exception? # @dynamic exception
|
|
34
34
|
|
|
35
35
|
# Creates a success response.
|
|
36
36
|
#
|
|
@@ -8,17 +8,17 @@ class Riffer::Tracing::StreamRecorder # :nodoc: all
|
|
|
8
8
|
# @rbs @clock: ^() -> Float
|
|
9
9
|
# @rbs @started_at: Float
|
|
10
10
|
|
|
11
|
-
attr_reader :token_usage #: Riffer::Providers::TokenUsage?
|
|
11
|
+
attr_reader :token_usage #: Riffer::Providers::TokenUsage? # @dynamic token_usage
|
|
12
12
|
|
|
13
|
-
attr_reader :time_to_first_chunk #: Float?
|
|
13
|
+
attr_reader :time_to_first_chunk #: Float? # @dynamic time_to_first_chunk
|
|
14
14
|
|
|
15
|
-
attr_reader :finish_reason #: Symbol?
|
|
15
|
+
attr_reader :finish_reason #: Symbol? # @dynamic finish_reason
|
|
16
16
|
|
|
17
|
-
attr_reader :raw_finish_reason #: String?
|
|
17
|
+
attr_reader :raw_finish_reason #: String? # @dynamic raw_finish_reason
|
|
18
18
|
|
|
19
|
-
attr_reader :content #: String?
|
|
19
|
+
attr_reader :content #: String? # @dynamic content
|
|
20
20
|
|
|
21
|
-
attr_reader :tool_calls #: Array[Riffer::Messages::Assistant::ToolCall]
|
|
21
|
+
attr_reader :tool_calls #: Array[Riffer::Messages::Assistant::ToolCall] # @dynamic tool_calls
|
|
22
22
|
|
|
23
23
|
#--
|
|
24
24
|
#: (Enumerator::Yielder, ?clock: ^() -> Float) -> void
|
data/lib/riffer/version.rb
CHANGED
data/lib/riffer.rb
CHANGED
|
@@ -41,6 +41,13 @@ module Riffer
|
|
|
41
41
|
# Raised when a tool encounters an expected execution error.
|
|
42
42
|
class ToolExecutionError < Error; end
|
|
43
43
|
|
|
44
|
+
# Raised when a provider's stream ends before its terminal event (Bedrock's
|
|
45
|
+
# messageStop, Anthropic's message_stop, OpenAI's response.completed /
|
|
46
|
+
# incomplete / failed), so a truncated or empty response is never returned
|
|
47
|
+
# as a complete message. Events already yielded were delivered; the
|
|
48
|
+
# request is safe to retry.
|
|
49
|
+
class IncompleteStreamError < Error; end
|
|
50
|
+
|
|
44
51
|
# Base error for a file attachment that can't be resolved for the provider.
|
|
45
52
|
class FileError < Error; end
|
|
46
53
|
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
---
|
|
2
|
+
path: ".gem_rbs_collection"
|
|
3
|
+
gems:
|
|
4
|
+
- name: addressable
|
|
5
|
+
version: '2.8'
|
|
6
|
+
source:
|
|
7
|
+
type: git
|
|
8
|
+
name: ruby/gem_rbs_collection
|
|
9
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
10
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
11
|
+
repo_dir: gems
|
|
12
|
+
- name: anthropic
|
|
13
|
+
version: 1.71.0
|
|
14
|
+
source:
|
|
15
|
+
type: rubygems
|
|
16
|
+
- name: ast
|
|
17
|
+
version: '2.4'
|
|
18
|
+
source:
|
|
19
|
+
type: git
|
|
20
|
+
name: ruby/gem_rbs_collection
|
|
21
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
22
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
23
|
+
repo_dir: gems
|
|
24
|
+
- name: async
|
|
25
|
+
version: '2.12'
|
|
26
|
+
source:
|
|
27
|
+
type: git
|
|
28
|
+
name: ruby/gem_rbs_collection
|
|
29
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
30
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
31
|
+
repo_dir: gems
|
|
32
|
+
- name: aws-sdk-bedrockruntime
|
|
33
|
+
version: 1.85.0
|
|
34
|
+
source:
|
|
35
|
+
type: rubygems
|
|
36
|
+
- name: aws-sdk-core
|
|
37
|
+
version: 3.257.0
|
|
38
|
+
source:
|
|
39
|
+
type: rubygems
|
|
40
|
+
- name: base64
|
|
41
|
+
version: 0.3.0
|
|
42
|
+
source:
|
|
43
|
+
type: rubygems
|
|
44
|
+
- name: bigdecimal
|
|
45
|
+
version: 4.1.3
|
|
46
|
+
source:
|
|
47
|
+
type: rubygems
|
|
48
|
+
- name: cgi
|
|
49
|
+
version: '0.5'
|
|
50
|
+
source:
|
|
51
|
+
type: git
|
|
52
|
+
name: ruby/gem_rbs_collection
|
|
53
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
54
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
55
|
+
repo_dir: gems
|
|
56
|
+
- name: concurrent-ruby
|
|
57
|
+
version: '1.1'
|
|
58
|
+
source:
|
|
59
|
+
type: git
|
|
60
|
+
name: ruby/gem_rbs_collection
|
|
61
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
62
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
63
|
+
repo_dir: gems
|
|
64
|
+
- name: connection_pool
|
|
65
|
+
version: '2.4'
|
|
66
|
+
source:
|
|
67
|
+
type: git
|
|
68
|
+
name: ruby/gem_rbs_collection
|
|
69
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
70
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
71
|
+
repo_dir: gems
|
|
72
|
+
- name: csv
|
|
73
|
+
version: '3.3'
|
|
74
|
+
source:
|
|
75
|
+
type: git
|
|
76
|
+
name: ruby/gem_rbs_collection
|
|
77
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
78
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
79
|
+
repo_dir: gems
|
|
80
|
+
- name: dbm
|
|
81
|
+
version: '0'
|
|
82
|
+
source:
|
|
83
|
+
type: stdlib
|
|
84
|
+
- name: delegate
|
|
85
|
+
version: '0'
|
|
86
|
+
source:
|
|
87
|
+
type: stdlib
|
|
88
|
+
- name: digest
|
|
89
|
+
version: '0'
|
|
90
|
+
source:
|
|
91
|
+
type: stdlib
|
|
92
|
+
- name: erb
|
|
93
|
+
version: '0'
|
|
94
|
+
source:
|
|
95
|
+
type: stdlib
|
|
96
|
+
- name: faraday
|
|
97
|
+
version: '2.7'
|
|
98
|
+
source:
|
|
99
|
+
type: git
|
|
100
|
+
name: ruby/gem_rbs_collection
|
|
101
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
102
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
103
|
+
repo_dir: gems
|
|
104
|
+
- name: ffi
|
|
105
|
+
version: 1.17.4
|
|
106
|
+
source:
|
|
107
|
+
type: rubygems
|
|
108
|
+
- name: fileutils
|
|
109
|
+
version: '0'
|
|
110
|
+
source:
|
|
111
|
+
type: stdlib
|
|
112
|
+
- name: forwardable
|
|
113
|
+
version: '0'
|
|
114
|
+
source:
|
|
115
|
+
type: stdlib
|
|
116
|
+
- name: hashdiff
|
|
117
|
+
version: '1.1'
|
|
118
|
+
source:
|
|
119
|
+
type: git
|
|
120
|
+
name: ruby/gem_rbs_collection
|
|
121
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
122
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
123
|
+
repo_dir: gems
|
|
124
|
+
- name: io-console
|
|
125
|
+
version: '0'
|
|
126
|
+
source:
|
|
127
|
+
type: stdlib
|
|
128
|
+
- name: json
|
|
129
|
+
version: '0'
|
|
130
|
+
source:
|
|
131
|
+
type: stdlib
|
|
132
|
+
- name: language_server-protocol
|
|
133
|
+
version: 3.17.0.6
|
|
134
|
+
source:
|
|
135
|
+
type: rubygems
|
|
136
|
+
- name: listen
|
|
137
|
+
version: '3.9'
|
|
138
|
+
source:
|
|
139
|
+
type: git
|
|
140
|
+
name: ruby/gem_rbs_collection
|
|
141
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
142
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
143
|
+
repo_dir: gems
|
|
144
|
+
- name: logger
|
|
145
|
+
version: '1.7'
|
|
146
|
+
source:
|
|
147
|
+
type: git
|
|
148
|
+
name: ruby/gem_rbs_collection
|
|
149
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
150
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
151
|
+
repo_dir: gems
|
|
152
|
+
- name: minitest
|
|
153
|
+
version: '5.25'
|
|
154
|
+
source:
|
|
155
|
+
type: git
|
|
156
|
+
name: ruby/gem_rbs_collection
|
|
157
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
158
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
159
|
+
repo_dir: gems
|
|
160
|
+
- name: monitor
|
|
161
|
+
version: '0'
|
|
162
|
+
source:
|
|
163
|
+
type: stdlib
|
|
164
|
+
- name: net-http
|
|
165
|
+
version: '0'
|
|
166
|
+
source:
|
|
167
|
+
type: stdlib
|
|
168
|
+
- name: net-protocol
|
|
169
|
+
version: '0'
|
|
170
|
+
source:
|
|
171
|
+
type: stdlib
|
|
172
|
+
- name: openai
|
|
173
|
+
version: 0.91.0
|
|
174
|
+
source:
|
|
175
|
+
type: rubygems
|
|
176
|
+
- name: openssl
|
|
177
|
+
version: '0'
|
|
178
|
+
source:
|
|
179
|
+
type: stdlib
|
|
180
|
+
- name: optparse
|
|
181
|
+
version: '0'
|
|
182
|
+
source:
|
|
183
|
+
type: stdlib
|
|
184
|
+
- name: parser
|
|
185
|
+
version: '3.2'
|
|
186
|
+
source:
|
|
187
|
+
type: git
|
|
188
|
+
name: ruby/gem_rbs_collection
|
|
189
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
190
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
191
|
+
repo_dir: gems
|
|
192
|
+
- name: pp
|
|
193
|
+
version: '0'
|
|
194
|
+
source:
|
|
195
|
+
type: stdlib
|
|
196
|
+
- name: prettyprint
|
|
197
|
+
version: '0'
|
|
198
|
+
source:
|
|
199
|
+
type: stdlib
|
|
200
|
+
- name: prism
|
|
201
|
+
version: 1.9.0
|
|
202
|
+
source:
|
|
203
|
+
type: rubygems
|
|
204
|
+
- name: pstore
|
|
205
|
+
version: '0.2'
|
|
206
|
+
source:
|
|
207
|
+
type: git
|
|
208
|
+
name: ruby/gem_rbs_collection
|
|
209
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
210
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
211
|
+
repo_dir: gems
|
|
212
|
+
- name: psych
|
|
213
|
+
version: '0'
|
|
214
|
+
source:
|
|
215
|
+
type: stdlib
|
|
216
|
+
- name: rainbow
|
|
217
|
+
version: '3.0'
|
|
218
|
+
source:
|
|
219
|
+
type: git
|
|
220
|
+
name: ruby/gem_rbs_collection
|
|
221
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
222
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
223
|
+
repo_dir: gems
|
|
224
|
+
- name: rake
|
|
225
|
+
version: '13.0'
|
|
226
|
+
source:
|
|
227
|
+
type: git
|
|
228
|
+
name: ruby/gem_rbs_collection
|
|
229
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
230
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
231
|
+
repo_dir: gems
|
|
232
|
+
- name: random-formatter
|
|
233
|
+
version: '0'
|
|
234
|
+
source:
|
|
235
|
+
type: stdlib
|
|
236
|
+
- name: rbs
|
|
237
|
+
version: 4.2.0
|
|
238
|
+
source:
|
|
239
|
+
type: rubygems
|
|
240
|
+
- name: rbs-inline
|
|
241
|
+
version: 0.14.0
|
|
242
|
+
source:
|
|
243
|
+
type: rubygems
|
|
244
|
+
- name: rdoc
|
|
245
|
+
version: '0'
|
|
246
|
+
source:
|
|
247
|
+
type: stdlib
|
|
248
|
+
- name: regexp_parser
|
|
249
|
+
version: '2.8'
|
|
250
|
+
source:
|
|
251
|
+
type: git
|
|
252
|
+
name: ruby/gem_rbs_collection
|
|
253
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
254
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
255
|
+
repo_dir: gems
|
|
256
|
+
- name: securerandom
|
|
257
|
+
version: '0'
|
|
258
|
+
source:
|
|
259
|
+
type: stdlib
|
|
260
|
+
- name: singleton
|
|
261
|
+
version: '0'
|
|
262
|
+
source:
|
|
263
|
+
type: stdlib
|
|
264
|
+
- name: socket
|
|
265
|
+
version: '0'
|
|
266
|
+
source:
|
|
267
|
+
type: stdlib
|
|
268
|
+
- name: stringio
|
|
269
|
+
version: '0'
|
|
270
|
+
source:
|
|
271
|
+
type: stdlib
|
|
272
|
+
- name: strscan
|
|
273
|
+
version: '0'
|
|
274
|
+
source:
|
|
275
|
+
type: stdlib
|
|
276
|
+
- name: tempfile
|
|
277
|
+
version: '0'
|
|
278
|
+
source:
|
|
279
|
+
type: stdlib
|
|
280
|
+
- name: thor
|
|
281
|
+
version: '1.2'
|
|
282
|
+
source:
|
|
283
|
+
type: git
|
|
284
|
+
name: ruby/gem_rbs_collection
|
|
285
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
286
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
287
|
+
repo_dir: gems
|
|
288
|
+
- name: timeout
|
|
289
|
+
version: '0'
|
|
290
|
+
source:
|
|
291
|
+
type: stdlib
|
|
292
|
+
- name: tmpdir
|
|
293
|
+
version: '0'
|
|
294
|
+
source:
|
|
295
|
+
type: stdlib
|
|
296
|
+
- name: tsort
|
|
297
|
+
version: '0'
|
|
298
|
+
source:
|
|
299
|
+
type: stdlib
|
|
300
|
+
- name: uri
|
|
301
|
+
version: '0'
|
|
302
|
+
source:
|
|
303
|
+
type: stdlib
|
|
304
|
+
- name: webmock
|
|
305
|
+
version: '3.19'
|
|
306
|
+
source:
|
|
307
|
+
type: git
|
|
308
|
+
name: ruby/gem_rbs_collection
|
|
309
|
+
revision: 3913b7dffb65bdffdfe5cb9095108f932e85433b
|
|
310
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
|
311
|
+
repo_dir: gems
|
|
312
|
+
- name: webrick
|
|
313
|
+
version: 1.9.2
|
|
314
|
+
source:
|
|
315
|
+
type: rubygems
|
|
316
|
+
- name: yaml
|
|
317
|
+
version: '0'
|
|
318
|
+
source:
|
|
319
|
+
type: stdlib
|
|
320
|
+
gemfile_lock_path: Gemfile.lock
|
data/rbs_collection.yaml
ADDED
data/sig/_private/anthropic.rbs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Arity patch for the `anthropic` gem (see openai.rbs for the rationale).
|
|
2
|
-
# `Messages#create`
|
|
3
|
-
#
|
|
4
|
-
# (
|
|
1
|
+
# Arity patch for the `anthropic` gem (see openai.rbs for the rationale). Both
|
|
2
|
+
# `Messages#create` and `Messages#stream` are positional `def x(params)` at
|
|
3
|
+
# runtime but typed keyword-only in the gem's RBS. Streaming returns `untyped`
|
|
4
|
+
# (a MessageStream helper). Loaded only for riffer's own Steep run.
|
|
5
5
|
module Anthropic
|
|
6
6
|
module Resources
|
|
7
7
|
class Messages
|
|
@@ -11,6 +11,7 @@ module Anthropic
|
|
|
11
11
|
|
|
12
12
|
def stream: (Hash[Symbol, untyped] params) -> untyped
|
|
13
13
|
| (**untyped) -> untyped
|
|
14
|
+
| ...
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
17
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# aws-sdk-core ships no signature for EventError; ConverseStream delivers
|
|
2
|
+
# `:message-type: error` frames to the on_event block as instances of it.
|
|
3
|
+
module Aws
|
|
4
|
+
module Errors
|
|
5
|
+
class EventError < RuntimeError
|
|
6
|
+
def initialize: (Symbol event_type, String code, String message) -> void
|
|
7
|
+
|
|
8
|
+
attr_reader event_type: Symbol
|
|
9
|
+
|
|
10
|
+
attr_reader error_code: String
|
|
11
|
+
|
|
12
|
+
attr_reader error_message: String
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -74,8 +74,17 @@ class Riffer::Params::Param
|
|
|
74
74
|
# params are made nullable (<tt>["type", "null"]</tt>) so strict providers
|
|
75
75
|
# distinguish absent from present; optional params with an +enum+ use +anyOf+
|
|
76
76
|
# instead, since providers like Anthropic reject
|
|
77
|
-
# <tt>{"type": ["string", "null"], "enum": [...]}</tt>.
|
|
77
|
+
# <tt>{"type": ["string", "null"], "enum": [...]}</tt>. Raises
|
|
78
|
+
# Riffer::ArgumentError when +strict+ and a Hash param has no block or an
|
|
79
|
+
# Array param has neither a block nor <tt>of:</tt>, since strict providers
|
|
80
|
+
# reject objects without +properties+ and arrays without +items+.
|
|
78
81
|
# --
|
|
79
82
|
# : (?strict: bool) -> Hash[Symbol, untyped]
|
|
80
83
|
def to_json_schema: (?strict: bool) -> Hash[Symbol, untyped]
|
|
84
|
+
|
|
85
|
+
private
|
|
86
|
+
|
|
87
|
+
# --
|
|
88
|
+
# : () -> void
|
|
89
|
+
def validate_strict_shape!: () -> void
|
|
81
90
|
end
|
|
@@ -54,6 +54,8 @@ class Riffer::Params
|
|
|
54
54
|
# Converts all parameters to JSON Schema format. When +strict+ is true, every
|
|
55
55
|
# property is listed in +required+ and optional ones are made nullable
|
|
56
56
|
# instead, satisfying providers that enforce strict structured output schemas.
|
|
57
|
+
# Raises Riffer::ArgumentError when +strict+ and a Hash param (at any depth)
|
|
58
|
+
# has no block or an Array param has neither a block nor <tt>of:</tt>.
|
|
57
59
|
# --
|
|
58
60
|
# : (?strict: bool) -> Hash[Symbol, untyped]
|
|
59
61
|
def to_json_schema: (?strict: bool) -> Hash[Symbol, untyped]
|
|
@@ -91,10 +91,19 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
91
91
|
# : (Hash[Symbol, untyped], Riffer::Providers::_EventSink) -> void
|
|
92
92
|
def execute_stream: (Hash[Symbol, untyped], Riffer::Providers::_EventSink) -> void
|
|
93
93
|
|
|
94
|
+
# Re-raises an +Aws::Errors::EventError+ event with a message built from its
|
|
95
|
+
# error code and message. The SDK's own +#message+ is just the class name,
|
|
96
|
+
# so without this the failure would be unreadable.
|
|
97
|
+
# --
|
|
98
|
+
# : (untyped) -> void
|
|
99
|
+
def raise_stream_event_error!: (untyped) -> void
|
|
100
|
+
|
|
94
101
|
# Re-raises a Bedrock stream-exception event as the matching
|
|
95
102
|
# +Aws::BedrockRuntime::Errors+ class. ConverseStream delivers API errors on
|
|
96
103
|
# the same channel as content, so without this a mid-stream failure would
|
|
97
|
-
# silently end the stream with no content.
|
|
104
|
+
# silently end the stream with no content. Non-exception events that we do
|
|
105
|
+
# not consume (including the SDK's +:unknown_event+ struct) are ignored for
|
|
106
|
+
# forward compatibility.
|
|
98
107
|
# --
|
|
99
108
|
# : (untyped) -> void
|
|
100
109
|
def raise_if_stream_exception!: (untyped) -> void
|
|
@@ -15,8 +15,6 @@ module Riffer::Providers::Repository
|
|
|
15
15
|
#
|
|
16
16
|
# Riffer::Providers::Repository.register(:jane) { MyApp::JaneProvider }
|
|
17
17
|
#
|
|
18
|
-
# Raises Riffer::ArgumentError when called without a block.
|
|
19
|
-
#
|
|
20
18
|
# --
|
|
21
19
|
# : ((String | Symbol)) { () -> singleton(Riffer::Providers::Base) } -> void
|
|
22
20
|
def register: (String | Symbol) { () -> singleton(Riffer::Providers::Base) } -> void
|
data/sig/generated/riffer.rbs
CHANGED
|
@@ -25,6 +25,14 @@ module Riffer
|
|
|
25
25
|
class ToolExecutionError < Error
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
# Raised when a provider's stream ends before its terminal event (Bedrock's
|
|
29
|
+
# messageStop, Anthropic's message_stop, OpenAI's response.completed /
|
|
30
|
+
# incomplete / failed), so a truncated or empty response is never returned
|
|
31
|
+
# as a complete message. Events already yielded were delivered; the
|
|
32
|
+
# request is safe to retry.
|
|
33
|
+
class IncompleteStreamError < Error
|
|
34
|
+
end
|
|
35
|
+
|
|
28
36
|
# Base error for a file attachment that can't be resolved for the provider.
|
|
29
37
|
class FileError < Error
|
|
30
38
|
end
|
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.47.
|
|
4
|
+
version: 0.47.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -220,12 +220,13 @@ files:
|
|
|
220
220
|
- lib/riffer/tracing/otel.rb
|
|
221
221
|
- lib/riffer/tracing/stream_recorder.rb
|
|
222
222
|
- lib/riffer/version.rb
|
|
223
|
+
- rbs_collection.lock.yaml
|
|
224
|
+
- rbs_collection.yaml
|
|
223
225
|
- sig/_private/anthropic.rbs
|
|
224
|
-
- sig/_private/
|
|
226
|
+
- sig/_private/aws-sdk-core/event_error.rbs
|
|
225
227
|
- sig/_private/aws-sdk-core/seahorse_request_context.rbs
|
|
226
228
|
- sig/_private/aws-sdk-core/static_token_provider.rbs
|
|
227
229
|
- sig/_private/mcp.rbs
|
|
228
|
-
- sig/_private/minitest.rbs
|
|
229
230
|
- sig/_private/openai.rbs
|
|
230
231
|
- sig/_private/opentelemetry.rbs
|
|
231
232
|
- sig/_private/riffer/providers/amazon_bedrock.rbs
|