riffer 0.43.0 → 0.44.0
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 +8 -0
- data/Steepfile +1 -0
- data/docs/AGENTS.md +23 -2
- data/docs/CONFIGURATION.md +32 -0
- data/docs/MESSAGES.md +10 -0
- data/docs/OVERVIEW.md +1 -0
- data/docs/TESTING.md +129 -0
- data/docs/TOOLS.md +23 -2
- data/docs/providers/AMAZON_BEDROCK.md +17 -0
- data/docs/providers/GEMINI.md +2 -3
- data/docs-site/manifest.yml +3 -0
- data/lib/riffer/config.rb +94 -0
- data/lib/riffer/files/downloader.rb +78 -0
- data/lib/riffer/files/resolver.rb +97 -0
- data/lib/riffer/files.rb +5 -0
- data/lib/riffer/helpers/identifier.rb +11 -3
- data/lib/riffer/messages/file_part.rb +61 -9
- data/lib/riffer/providers/amazon_bedrock.rb +7 -7
- data/lib/riffer/providers/base.rb +8 -0
- data/lib/riffer/providers/gemini.rb +6 -5
- data/lib/riffer/providers/open_ai.rb +6 -0
- data/lib/riffer/providers/open_router.rb +6 -0
- data/lib/riffer/registrable.rb +105 -22
- data/lib/riffer/testing/minitest.rb +21 -0
- data/lib/riffer/testing/rspec.rb +11 -0
- data/lib/riffer/testing.rb +130 -0
- data/lib/riffer/version.rb +1 -1
- data/lib/riffer.rb +31 -0
- data/sig/_private/minitest.rbs +9 -0
- data/sig/_private/riffer/testing/minitest.rbs +6 -0
- data/sig/_private/rspec.rbs +7 -0
- data/sig/_private/zeitwerk.rbs +2 -0
- data/sig/generated/riffer/config.rbs +64 -0
- data/sig/generated/riffer/files/downloader.rbs +16 -0
- data/sig/generated/riffer/files/resolver.rbs +36 -0
- data/sig/generated/riffer/files.rbs +4 -0
- data/sig/generated/riffer/helpers/identifier.rbs +8 -0
- data/sig/generated/riffer/messages/file_part.rbs +38 -6
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +4 -0
- data/sig/generated/riffer/providers/base.rbs +4 -0
- data/sig/generated/riffer/providers/gemini.rbs +4 -0
- data/sig/generated/riffer/providers/open_ai.rbs +4 -0
- data/sig/generated/riffer/providers/open_router.rbs +4 -0
- data/sig/generated/riffer/registrable.rbs +57 -9
- data/sig/generated/riffer/testing/rspec.rbs +2 -0
- data/sig/generated/riffer/testing.rbs +75 -0
- data/sig/generated/riffer.rbs +32 -0
- data/sig/manifest.yaml +1 -0
- data/sig/manual/riffer/testing.rbs +5 -0
- metadata +31 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Generated from lib/riffer/testing.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
# Builds throwaway agents and tools a test suite can resolve by identifier or
|
|
4
|
+
# constant name, and removes them again. Require <tt>riffer/testing/rspec</tt>
|
|
5
|
+
# or <tt>riffer/testing/minitest</tt> to get +stub_agent+/+stub_tool+ in every
|
|
6
|
+
# example plus per-test cleanup; otherwise include this module and call +reset!+
|
|
7
|
+
# from your own teardown, or call the methods on the module directly.
|
|
8
|
+
#
|
|
9
|
+
# Tracking is not synchronized — stub from a single-threaded test, before
|
|
10
|
+
# concurrent lookups begin.
|
|
11
|
+
module Riffer::Testing
|
|
12
|
+
self.@registrations: Array[[ Class, String? ]]?
|
|
13
|
+
|
|
14
|
+
CONST_NAME_PATTERN: Regexp
|
|
15
|
+
|
|
16
|
+
# Builds an agent class, evaluates the optional body in it, and makes it
|
|
17
|
+
# resolvable until the next +reset!+. A +name+ assigns a top-level constant
|
|
18
|
+
# and derives the identifier; the body may set +identifier+ like any other
|
|
19
|
+
# agent config.
|
|
20
|
+
#
|
|
21
|
+
# agent = stub_agent("SupportAgent") { model "mock/gpt-5-mini" }
|
|
22
|
+
#
|
|
23
|
+
# Raises Riffer::ArgumentError when the constant is already defined or the
|
|
24
|
+
# stub ends up with no identifier, and Riffer::DuplicateIdentifierError when
|
|
25
|
+
# another agent already holds the identifier.
|
|
26
|
+
#
|
|
27
|
+
# --
|
|
28
|
+
# : (?(String | Symbol)?, ?base: singleton(Riffer::Agent)) ?{ () [self: singleton(Riffer::Agent)] -> void } -> singleton(Riffer::Agent)
|
|
29
|
+
def stub_agent: (?(String | Symbol)?, ?base: singleton(Riffer::Agent)) ?{ () [self: singleton(Riffer::Agent)] -> void } -> singleton(Riffer::Agent)
|
|
30
|
+
|
|
31
|
+
# Builds a tool class, evaluates the optional body in it, and makes it
|
|
32
|
+
# resolvable until the next +reset!+. A +name+ assigns a top-level constant
|
|
33
|
+
# and derives the identifier; the body may set +identifier+ like any other
|
|
34
|
+
# tool config.
|
|
35
|
+
#
|
|
36
|
+
# tool = stub_tool("KbSearch") { def call(context:, **) = text("stubbed") }
|
|
37
|
+
#
|
|
38
|
+
# Raises Riffer::ArgumentError when the constant is already defined or the
|
|
39
|
+
# stub ends up with no identifier, and Riffer::DuplicateIdentifierError when
|
|
40
|
+
# another tool already holds the identifier.
|
|
41
|
+
#
|
|
42
|
+
# --
|
|
43
|
+
# : (?(String | Symbol)?, ?base: singleton(Riffer::Tool)) ?{ () [self: singleton(Riffer::Tool)] -> void } -> singleton(Riffer::Tool)
|
|
44
|
+
def stub_tool: (?(String | Symbol)?, ?base: singleton(Riffer::Tool)) ?{ () [self: singleton(Riffer::Tool)] -> void } -> singleton(Riffer::Tool)
|
|
45
|
+
|
|
46
|
+
# Removes every stub built since the last reset — its registration and any
|
|
47
|
+
# constant it created — newest first, and forgets them. A no-op when nothing
|
|
48
|
+
# has been stubbed.
|
|
49
|
+
# --
|
|
50
|
+
# : () -> void
|
|
51
|
+
def reset!: () -> void
|
|
52
|
+
|
|
53
|
+
# The stub classes awaiting cleanup. Lives on the module rather than the
|
|
54
|
+
# caller so an including test case and a direct
|
|
55
|
+
# <tt>Riffer::Testing.stub_*</tt> call share one list.
|
|
56
|
+
# --
|
|
57
|
+
# : () -> Array[[Class, String?]]
|
|
58
|
+
def self.registrations: () -> Array[[ Class, String? ]]
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
|
|
62
|
+
# --
|
|
63
|
+
# : ((String | Symbol)?, base: Class) ?{ () [self: untyped] -> void } -> Class
|
|
64
|
+
def build_stub: ((String | Symbol)?, base: Class) ?{ () [self: untyped] -> void } -> Class
|
|
65
|
+
|
|
66
|
+
# --
|
|
67
|
+
# : ((String | Symbol)?) -> String?
|
|
68
|
+
def validate_const_name: ((String | Symbol)?) -> String?
|
|
69
|
+
|
|
70
|
+
# A test may have removed or replaced the constant itself, so never clobber
|
|
71
|
+
# one that no longer points at the stub.
|
|
72
|
+
# --
|
|
73
|
+
# : (String, Class) -> void
|
|
74
|
+
def remove_stub_const: (String, Class) -> void
|
|
75
|
+
end
|
data/sig/generated/riffer.rbs
CHANGED
|
@@ -25,6 +25,38 @@ module Riffer
|
|
|
25
25
|
class ToolExecutionError < Error
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
# Base error for a file attachment that can't be resolved for the provider.
|
|
29
|
+
class FileError < Error
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Raised when the provider can't accept the file at all.
|
|
33
|
+
class FileUnsupportedError < FileError
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Raised when a download is required but Riffer.config.files.allow_downloads is false.
|
|
37
|
+
class FileDownloadsDisabledError < FileError
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Raised when a message carries more files than Riffer.config.files.max_per_message allows.
|
|
41
|
+
class TooManyFilesError < FileError
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Raised when there's an issue downloading a file
|
|
45
|
+
class FileDownloadError < FileError
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Raised when a file size exceeds Riffer.config.files.max_bytes
|
|
49
|
+
class FileTooLargeError < FileError
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Raised when a downloaded or inline file's sha256 doesn't match.
|
|
53
|
+
class FileChecksumMismatchError < FileError
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Raised when a FilePart's data isn't valid base64
|
|
57
|
+
class FileEncodingError < FileError
|
|
58
|
+
end
|
|
59
|
+
|
|
28
60
|
# Raised when two registered subclasses share the same identifier.
|
|
29
61
|
class DuplicateIdentifierError < Error
|
|
30
62
|
end
|
data/sig/manifest.yaml
CHANGED
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.
|
|
4
|
+
version: 0.44.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -29,6 +29,20 @@ dependencies:
|
|
|
29
29
|
- - ">="
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
31
|
version: 2.6.0
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: base64
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '0'
|
|
39
|
+
type: :runtime
|
|
40
|
+
prerelease: false
|
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
42
|
+
requirements:
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
32
46
|
description: Riffer is a comprehensive Ruby framework designed to simplify the development
|
|
33
47
|
of AI-powered applications and agents. It provides a complete toolkit for integrating
|
|
34
48
|
artificial intelligence capabilities into your Ruby projects.
|
|
@@ -79,6 +93,7 @@ files:
|
|
|
79
93
|
- docs/SERIALIZATION.md
|
|
80
94
|
- docs/SKILLS.md
|
|
81
95
|
- docs/STREAM_EVENTS.md
|
|
96
|
+
- docs/TESTING.md
|
|
82
97
|
- docs/TOOLS.md
|
|
83
98
|
- docs/TOOL_ADVANCED.md
|
|
84
99
|
- docs/TRACING.md
|
|
@@ -110,6 +125,9 @@ files:
|
|
|
110
125
|
- lib/riffer/evals/result.rb
|
|
111
126
|
- lib/riffer/evals/run_result.rb
|
|
112
127
|
- lib/riffer/evals/scenario_result.rb
|
|
128
|
+
- lib/riffer/files.rb
|
|
129
|
+
- lib/riffer/files/downloader.rb
|
|
130
|
+
- lib/riffer/files/resolver.rb
|
|
113
131
|
- lib/riffer/guardrail.rb
|
|
114
132
|
- lib/riffer/guardrails.rb
|
|
115
133
|
- lib/riffer/guardrails/modification.rb
|
|
@@ -184,6 +202,9 @@ files:
|
|
|
184
202
|
- lib/riffer/stream_events/tool_call_done.rb
|
|
185
203
|
- lib/riffer/stream_events/web_search_done.rb
|
|
186
204
|
- lib/riffer/stream_events/web_search_status.rb
|
|
205
|
+
- lib/riffer/testing.rb
|
|
206
|
+
- lib/riffer/testing/minitest.rb
|
|
207
|
+
- lib/riffer/testing/rspec.rb
|
|
187
208
|
- lib/riffer/tool.rb
|
|
188
209
|
- lib/riffer/tools.rb
|
|
189
210
|
- lib/riffer/tools/response.rb
|
|
@@ -203,6 +224,7 @@ files:
|
|
|
203
224
|
- sig/_private/aws-sdk-core/seahorse_request_context.rbs
|
|
204
225
|
- sig/_private/aws-sdk-core/static_token_provider.rbs
|
|
205
226
|
- sig/_private/mcp.rbs
|
|
227
|
+
- sig/_private/minitest.rbs
|
|
206
228
|
- sig/_private/openai.rbs
|
|
207
229
|
- sig/_private/opentelemetry.rbs
|
|
208
230
|
- sig/_private/riffer/providers/amazon_bedrock.rbs
|
|
@@ -210,6 +232,8 @@ files:
|
|
|
210
232
|
- sig/_private/riffer/providers/gemini.rbs
|
|
211
233
|
- sig/_private/riffer/providers/open_ai.rbs
|
|
212
234
|
- sig/_private/riffer/providers/open_router.rbs
|
|
235
|
+
- sig/_private/riffer/testing/minitest.rbs
|
|
236
|
+
- sig/_private/rspec.rbs
|
|
213
237
|
- sig/_private/zeitwerk.rbs
|
|
214
238
|
- sig/generated/riffer.rbs
|
|
215
239
|
- sig/generated/riffer/agent.rbs
|
|
@@ -230,6 +254,9 @@ files:
|
|
|
230
254
|
- sig/generated/riffer/evals/result.rbs
|
|
231
255
|
- sig/generated/riffer/evals/run_result.rbs
|
|
232
256
|
- sig/generated/riffer/evals/scenario_result.rbs
|
|
257
|
+
- sig/generated/riffer/files.rbs
|
|
258
|
+
- sig/generated/riffer/files/downloader.rbs
|
|
259
|
+
- sig/generated/riffer/files/resolver.rbs
|
|
233
260
|
- sig/generated/riffer/guardrail.rbs
|
|
234
261
|
- sig/generated/riffer/guardrails.rbs
|
|
235
262
|
- sig/generated/riffer/guardrails/modification.rbs
|
|
@@ -304,6 +331,8 @@ files:
|
|
|
304
331
|
- sig/generated/riffer/stream_events/tool_call_done.rbs
|
|
305
332
|
- sig/generated/riffer/stream_events/web_search_done.rbs
|
|
306
333
|
- sig/generated/riffer/stream_events/web_search_status.rbs
|
|
334
|
+
- sig/generated/riffer/testing.rbs
|
|
335
|
+
- sig/generated/riffer/testing/rspec.rbs
|
|
307
336
|
- sig/generated/riffer/tool.rbs
|
|
308
337
|
- sig/generated/riffer/tools.rbs
|
|
309
338
|
- sig/generated/riffer/tools/response.rbs
|
|
@@ -335,6 +364,7 @@ files:
|
|
|
335
364
|
- sig/manual/riffer/mcp/tool_factory.rbs
|
|
336
365
|
- sig/manual/riffer/providers.rbs
|
|
337
366
|
- sig/manual/riffer/providers/repository.rbs
|
|
367
|
+
- sig/manual/riffer/testing.rbs
|
|
338
368
|
- sig/manual/riffer/tool.rbs
|
|
339
369
|
- sig/manual/riffer/tracing.rbs
|
|
340
370
|
- sig/manual/riffer/tracing/capture.rbs
|