riffer 0.52.1 → 0.54.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/.claude/rules/rbs-inline.md +2 -2
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +22 -0
- data/Steepfile +19 -0
- data/docs/AGENTS.md +81 -4
- data/docs/CATALOG.md +205 -0
- data/docs/CONFIGURATION.md +35 -23
- data/docs/MESSAGES.md +1 -1
- data/docs/OVERVIEW.md +1 -1
- data/docs/SERIALIZATION.md +1 -0
- data/docs/TOOLS.md +15 -12
- data/docs/TRACING.md +2 -1
- data/docs/providers/AMAZON_BEDROCK.md +2 -0
- data/docs/providers/ANTHROPIC.md +2 -0
- data/docs/providers/AZURE_OPENAI.md +2 -0
- data/docs/providers/CUSTOM_PROVIDERS.md +15 -1
- data/docs/providers/GEMINI.md +11 -0
- data/docs/providers/MOCK_PROVIDER.md +2 -0
- data/docs/providers/OPENAI.md +2 -0
- data/docs/providers/OPENROUTER.md +2 -0
- data/docs-site/manifest.yml +3 -0
- data/lib/riffer/agent/config.rb +17 -0
- data/lib/riffer/agent/run.rb +2 -0
- data/lib/riffer/agent/serializer.rb +2 -0
- data/lib/riffer/agent/structured_output.rb +23 -3
- data/lib/riffer/agent.rb +7 -0
- data/lib/riffer/{config/pricing → catalog}/rates.rb +21 -6
- data/lib/riffer/catalog.rb +225 -0
- data/lib/riffer/config/pricing.rb +17 -27
- data/lib/riffer/config.rb +29 -0
- data/lib/riffer/params/any_of.rb +22 -0
- data/lib/riffer/params/format.rb +73 -0
- data/lib/riffer/params/param.rb +120 -17
- data/lib/riffer/params.rb +135 -24
- data/lib/riffer/providers/amazon_bedrock.rb +14 -0
- data/lib/riffer/providers/anthropic.rb +8 -0
- data/lib/riffer/providers/base.rb +67 -15
- data/lib/riffer/providers/gemini.rb +7 -0
- data/lib/riffer/providers/mock.rb +7 -0
- data/lib/riffer/providers/open_ai.rb +6 -0
- data/lib/riffer/providers/open_router.rb +6 -0
- data/lib/riffer/version.rb +1 -1
- data/lib/riffer.rb +2 -0
- data/rbs_collection.lock.yaml +8 -0
- data/rbs_collection.yaml +2 -0
- data/sig/generated/riffer/agent/config.rbs +10 -1
- data/sig/generated/riffer/agent/structured_output.rbs +6 -0
- data/sig/generated/riffer/agent.rbs +4 -0
- data/sig/generated/riffer/{config/pricing → catalog}/rates.rbs +10 -4
- data/sig/generated/riffer/catalog.rbs +77 -0
- data/sig/generated/riffer/config/pricing.rbs +12 -11
- data/sig/generated/riffer/config.rbs +17 -0
- data/sig/generated/riffer/params/any_of.rbs +13 -0
- data/sig/generated/riffer/params/format.rbs +39 -0
- data/sig/generated/riffer/params/param.rbs +22 -4
- data/sig/generated/riffer/params.rbs +34 -8
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +6 -0
- data/sig/generated/riffer/providers/anthropic.rbs +4 -0
- data/sig/generated/riffer/providers/base.rbs +22 -2
- data/sig/generated/riffer/providers/gemini.rbs +4 -0
- data/sig/generated/riffer/providers/mock.rbs +5 -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.rbs +1 -0
- data/sig/manifest.yaml +2 -1
- data/sig/manual/riffer/params/format.rbs +5 -0
- metadata +11 -3
|
@@ -14,12 +14,16 @@ class Riffer::Params
|
|
|
14
14
|
def self.from_json_schema: (Hash[Symbol, untyped]) -> Riffer::Params
|
|
15
15
|
|
|
16
16
|
# --
|
|
17
|
-
# : (Symbol,
|
|
18
|
-
|
|
17
|
+
# : (Symbol, singleton(Riffer::Params::AnyOf), ?description: String?) { (Riffer::Params::AnyOf) [self: Riffer::Params::AnyOf] -> void } -> void
|
|
18
|
+
# : (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?format: String?, ?of: (Module | Array[untyped])?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
19
|
+
def required: (Symbol, singleton(Riffer::Params::AnyOf), ?description: String?) { (Riffer::Params::AnyOf) [self: Riffer::Params::AnyOf] -> void } -> void
|
|
20
|
+
| (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?format: String?, ?of: (Module | Array[untyped])?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
19
21
|
|
|
20
22
|
# --
|
|
21
|
-
# : (Symbol,
|
|
22
|
-
|
|
23
|
+
# : (Symbol, singleton(Riffer::Params::AnyOf), ?description: String?, ?default: untyped) { (Riffer::Params::AnyOf) [self: Riffer::Params::AnyOf] -> void } -> void
|
|
24
|
+
# : (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?format: String?, ?default: untyped, ?of: (Module | Array[untyped])?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
25
|
+
def optional: (Symbol, singleton(Riffer::Params::AnyOf), ?description: String?, ?default: untyped) { (Riffer::Params::AnyOf) [self: Riffer::Params::AnyOf] -> void } -> void
|
|
26
|
+
| (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?format: String?, ?default: untyped, ?of: (Module | Array[untyped])?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
23
27
|
|
|
24
28
|
# --
|
|
25
29
|
# : (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -38,8 +42,16 @@ class Riffer::Params
|
|
|
38
42
|
def initialize_copy: (Riffer::Params) -> void
|
|
39
43
|
|
|
40
44
|
# --
|
|
41
|
-
# : (Module
|
|
42
|
-
def
|
|
45
|
+
# : ((Module | Array[untyped])?, ?Integer) -> [Module?, Integer]
|
|
46
|
+
def unwrap_of: ((Module | Array[untyped])?, ?Integer) -> [ Module?, Integer ]
|
|
47
|
+
|
|
48
|
+
# --
|
|
49
|
+
# : (Module, Module?, Array[untyped]?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> Riffer::Params?
|
|
50
|
+
def build_nested: (Module, Module?, Array[untyped]?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> Riffer::Params?
|
|
51
|
+
|
|
52
|
+
# --
|
|
53
|
+
# : ((Module | Array[untyped])?, Array[untyped]?) ?{ (Riffer::Params::AnyOf) [self: Riffer::Params::AnyOf] -> void } -> Array[Riffer::Params]
|
|
54
|
+
def build_variants: ((Module | Array[untyped])?, Array[untyped]?) ?{ (Riffer::Params::AnyOf) [self: Riffer::Params::AnyOf] -> void } -> Array[Riffer::Params]
|
|
43
55
|
|
|
44
56
|
# --
|
|
45
57
|
# : (Riffer::Params::Param, untyped, Array[String]) -> untyped
|
|
@@ -49,13 +61,27 @@ class Riffer::Params
|
|
|
49
61
|
# : (Riffer::Params::Param, Hash[Symbol, untyped], Array[String]) -> Hash[Symbol, untyped]
|
|
50
62
|
def validate_nested_hash: (Riffer::Params::Param, Hash[Symbol, untyped], Array[String]) -> Hash[Symbol, untyped]
|
|
51
63
|
|
|
64
|
+
# --
|
|
65
|
+
# : (Riffer::Params::Param, Hash[Symbol, untyped], Array[String]) -> Hash[Symbol, untyped]
|
|
66
|
+
def validate_any_of: (Riffer::Params::Param, Hash[Symbol, untyped], Array[String]) -> Hash[Symbol, untyped]
|
|
67
|
+
|
|
68
|
+
# Validation drops keys a Params doesn't declare, at any depth, so they are
|
|
69
|
+
# the keys in the input that are missing from the output.
|
|
70
|
+
# --
|
|
71
|
+
# : (untyped, untyped, ?String?) -> Array[String]
|
|
72
|
+
def undeclared_keys: (untyped, untyped, ?String?) -> Array[String]
|
|
73
|
+
|
|
52
74
|
# --
|
|
53
75
|
# : (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
54
76
|
def validate_nested_array_of_objects: (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
55
77
|
|
|
56
78
|
# --
|
|
57
|
-
# : (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
58
|
-
def validate_typed_array: (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
79
|
+
# : (Riffer::Params::Param, Array[untyped], Array[String], ?String, ?Integer) -> Array[untyped]
|
|
80
|
+
def validate_typed_array: (Riffer::Params::Param, Array[untyped], Array[String], ?String, ?Integer) -> Array[untyped]
|
|
81
|
+
|
|
82
|
+
# --
|
|
83
|
+
# : (Module, untyped) -> bool
|
|
84
|
+
def valid_item?: (Module, untyped) -> bool
|
|
59
85
|
|
|
60
86
|
# --
|
|
61
87
|
# : (Module, untyped) -> untyped
|
|
@@ -36,6 +36,12 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
36
36
|
# : () -> untyped
|
|
37
37
|
def build_client: () -> untyped
|
|
38
38
|
|
|
39
|
+
# Claude's fields, since application inference profile ARNs hide the model
|
|
40
|
+
# family; other families need a catalog entry.
|
|
41
|
+
# --
|
|
42
|
+
# : (Symbol) -> Hash[Symbol, untyped]
|
|
43
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]
|
|
44
|
+
|
|
39
45
|
# --
|
|
40
46
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
41
47
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -32,6 +32,10 @@ class Riffer::Providers::Anthropic < Riffer::Providers::Base
|
|
|
32
32
|
# : () -> untyped
|
|
33
33
|
def build_client: () -> untyped
|
|
34
34
|
|
|
35
|
+
# --
|
|
36
|
+
# : (Symbol) -> Hash[Symbol, untyped]
|
|
37
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]
|
|
38
|
+
|
|
35
39
|
# --
|
|
36
40
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
37
41
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -76,8 +76,28 @@ class Riffer::Providers::Base
|
|
|
76
76
|
def apply_pricing: (Riffer::Providers::TokenUsage) -> Riffer::Providers::TokenUsage
|
|
77
77
|
|
|
78
78
|
# --
|
|
79
|
-
# : () -> Riffer::
|
|
80
|
-
def pricing_rates: () -> Riffer::
|
|
79
|
+
# : () -> Riffer::Catalog::Rates?
|
|
80
|
+
def pricing_rates: () -> Riffer::Catalog::Rates?
|
|
81
|
+
|
|
82
|
+
# --
|
|
83
|
+
# : (String) -> String?
|
|
84
|
+
def catalog_key: (String) -> String?
|
|
85
|
+
|
|
86
|
+
# A catalog fragment beats the provider default per level; the caller's
|
|
87
|
+
# options are merged over either, so +model_options+ always wins.
|
|
88
|
+
# --
|
|
89
|
+
# : (String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
90
|
+
def apply_reasoning: (String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
91
|
+
|
|
92
|
+
# Maps a level onto the provider's own reasoning params when the catalog has
|
|
93
|
+
# no entry; +nil+ means riffer raises before the request.
|
|
94
|
+
# --
|
|
95
|
+
# : (Symbol) -> Hash[Symbol, untyped]?
|
|
96
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]?
|
|
97
|
+
|
|
98
|
+
# --
|
|
99
|
+
# : (Hash[Symbol, untyped], Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
100
|
+
def deep_merge: (Hash[Symbol, untyped], Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
81
101
|
|
|
82
102
|
# --
|
|
83
103
|
# : (untyped) -> Riffer::Providers::FinishReason?
|
|
@@ -23,6 +23,10 @@ class Riffer::Providers::Gemini < Riffer::Providers::Base
|
|
|
23
23
|
# : () -> untyped
|
|
24
24
|
def build_client: () -> untyped
|
|
25
25
|
|
|
26
|
+
# --
|
|
27
|
+
# : (Symbol) -> Hash[Symbol, untyped]
|
|
28
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]
|
|
29
|
+
|
|
26
30
|
# --
|
|
27
31
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
28
32
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -35,6 +35,11 @@ class Riffer::Providers::Mock < Riffer::Providers::Base
|
|
|
35
35
|
# : (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
36
36
|
def normalize_response: (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
37
37
|
|
|
38
|
+
# Never raises, so test suites can set +reasoning+ without catalog entries.
|
|
39
|
+
# --
|
|
40
|
+
# : (Symbol) -> Hash[Symbol, untyped]
|
|
41
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]
|
|
42
|
+
|
|
38
43
|
# --
|
|
39
44
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
40
45
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -29,6 +29,10 @@ class Riffer::Providers::OpenAI < Riffer::Providers::Base
|
|
|
29
29
|
# : () -> untyped
|
|
30
30
|
def build_client: () -> untyped
|
|
31
31
|
|
|
32
|
+
# --
|
|
33
|
+
# : (Symbol) -> Hash[Symbol, untyped]
|
|
34
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]
|
|
35
|
+
|
|
32
36
|
# --
|
|
33
37
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
34
38
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
@@ -34,6 +34,10 @@ class Riffer::Providers::OpenRouter < Riffer::Providers::Base
|
|
|
34
34
|
# : () -> untyped
|
|
35
35
|
def build_client: () -> untyped
|
|
36
36
|
|
|
37
|
+
# --
|
|
38
|
+
# : (Symbol) -> Hash[Symbol, untyped]
|
|
39
|
+
def default_reasoning_options: (Symbol) -> Hash[Symbol, untyped]
|
|
40
|
+
|
|
37
41
|
# --
|
|
38
42
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
39
43
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
data/sig/generated/riffer.rbs
CHANGED
|
@@ -55,6 +55,7 @@ module Riffer
|
|
|
55
55
|
# : () -> Riffer::Config
|
|
56
56
|
def config: () -> Riffer::Config
|
|
57
57
|
|
|
58
|
+
# Builds the catalog after the block, so a bad catalog file fails boot.
|
|
58
59
|
# --
|
|
59
60
|
# : () ?{ (Riffer::Config) -> void } -> void
|
|
60
61
|
def configure: () ?{ (Riffer::Config) -> void } -> void
|
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.54.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -83,6 +83,7 @@ files:
|
|
|
83
83
|
- docs/AGENTS.md
|
|
84
84
|
- docs/AGENT_LIFECYCLE.md
|
|
85
85
|
- docs/AGENT_LOOP.md
|
|
86
|
+
- docs/CATALOG.md
|
|
86
87
|
- docs/CONFIGURATION.md
|
|
87
88
|
- docs/EVALS.md
|
|
88
89
|
- docs/GETTING_STARTED.md
|
|
@@ -119,6 +120,8 @@ files:
|
|
|
119
120
|
- lib/riffer/agent/structured_output.rb
|
|
120
121
|
- lib/riffer/agent/structured_output/parser.rb
|
|
121
122
|
- lib/riffer/agent/structured_output/result.rb
|
|
123
|
+
- lib/riffer/catalog.rb
|
|
124
|
+
- lib/riffer/catalog/rates.rb
|
|
122
125
|
- lib/riffer/config.rb
|
|
123
126
|
- lib/riffer/config/amazon_bedrock.rb
|
|
124
127
|
- lib/riffer/config/anthropic.rb
|
|
@@ -130,7 +133,6 @@ files:
|
|
|
130
133
|
- lib/riffer/config/open_ai.rb
|
|
131
134
|
- lib/riffer/config/open_router.rb
|
|
132
135
|
- lib/riffer/config/pricing.rb
|
|
133
|
-
- lib/riffer/config/pricing/rates.rb
|
|
134
136
|
- lib/riffer/config/skills.rb
|
|
135
137
|
- lib/riffer/config/tracing.rb
|
|
136
138
|
- lib/riffer/evals.rb
|
|
@@ -175,7 +177,9 @@ files:
|
|
|
175
177
|
- lib/riffer/messages/user.rb
|
|
176
178
|
- lib/riffer/messages/user/file_part.rb
|
|
177
179
|
- lib/riffer/params.rb
|
|
180
|
+
- lib/riffer/params/any_of.rb
|
|
178
181
|
- lib/riffer/params/boolean.rb
|
|
182
|
+
- lib/riffer/params/format.rb
|
|
179
183
|
- lib/riffer/params/param.rb
|
|
180
184
|
- lib/riffer/providers.rb
|
|
181
185
|
- lib/riffer/providers/amazon_bedrock.rb
|
|
@@ -268,6 +272,8 @@ files:
|
|
|
268
272
|
- sig/generated/riffer/agent/structured_output.rbs
|
|
269
273
|
- sig/generated/riffer/agent/structured_output/parser.rbs
|
|
270
274
|
- sig/generated/riffer/agent/structured_output/result.rbs
|
|
275
|
+
- sig/generated/riffer/catalog.rbs
|
|
276
|
+
- sig/generated/riffer/catalog/rates.rbs
|
|
271
277
|
- sig/generated/riffer/config.rbs
|
|
272
278
|
- sig/generated/riffer/config/amazon_bedrock.rbs
|
|
273
279
|
- sig/generated/riffer/config/anthropic.rbs
|
|
@@ -279,7 +285,6 @@ files:
|
|
|
279
285
|
- sig/generated/riffer/config/open_ai.rbs
|
|
280
286
|
- sig/generated/riffer/config/open_router.rbs
|
|
281
287
|
- sig/generated/riffer/config/pricing.rbs
|
|
282
|
-
- sig/generated/riffer/config/pricing/rates.rbs
|
|
283
288
|
- sig/generated/riffer/config/skills.rbs
|
|
284
289
|
- sig/generated/riffer/config/tracing.rbs
|
|
285
290
|
- sig/generated/riffer/evals.rbs
|
|
@@ -324,7 +329,9 @@ files:
|
|
|
324
329
|
- sig/generated/riffer/messages/user.rbs
|
|
325
330
|
- sig/generated/riffer/messages/user/file_part.rbs
|
|
326
331
|
- sig/generated/riffer/params.rbs
|
|
332
|
+
- sig/generated/riffer/params/any_of.rbs
|
|
327
333
|
- sig/generated/riffer/params/boolean.rbs
|
|
334
|
+
- sig/generated/riffer/params/format.rbs
|
|
328
335
|
- sig/generated/riffer/params/param.rbs
|
|
329
336
|
- sig/generated/riffer/providers.rbs
|
|
330
337
|
- sig/generated/riffer/providers/amazon_bedrock.rbs
|
|
@@ -404,6 +411,7 @@ files:
|
|
|
404
411
|
- sig/manual/riffer/mcp/authenticated_tool.rbs
|
|
405
412
|
- sig/manual/riffer/mcp/registry.rbs
|
|
406
413
|
- sig/manual/riffer/mcp/tool_factory.rbs
|
|
414
|
+
- sig/manual/riffer/params/format.rbs
|
|
407
415
|
- sig/manual/riffer/providers.rbs
|
|
408
416
|
- sig/manual/riffer/providers/repository.rbs
|
|
409
417
|
- sig/manual/riffer/testing.rbs
|