riffer 0.29.0 → 0.30.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/.agents/rbs-inline.md +51 -0
- data/.release-please-manifest.json +1 -1
- data/CHANGELOG.md +18 -0
- data/README.md +1 -0
- data/Steepfile +2 -1
- data/docs/01_OVERVIEW.md +1 -0
- data/docs/03_AGENTS.md +1 -1
- data/docs/15_SERIALIZATION.md +103 -0
- data/lib/riffer/agent/config.rb +2 -2
- data/lib/riffer/agent/context.rb +2 -0
- data/lib/riffer/agent/response.rb +2 -0
- data/lib/riffer/agent/run.rb +2 -1
- data/lib/riffer/agent/serializer.rb +215 -0
- data/lib/riffer/agent/session.rb +2 -0
- data/lib/riffer/agent.rb +84 -18
- data/lib/riffer/evals/evaluator.rb +5 -0
- data/lib/riffer/evals/judge.rb +5 -0
- data/lib/riffer/mcp/client.rb +2 -0
- data/lib/riffer/mcp/registration.rb +4 -0
- data/lib/riffer/mcp/registry.rb +3 -0
- data/lib/riffer/messages/file_part.rb +2 -0
- data/lib/riffer/params/param.rb +84 -4
- data/lib/riffer/params.rb +34 -3
- data/lib/riffer/providers/amazon_bedrock.rb +28 -21
- data/lib/riffer/providers/anthropic.rb +13 -9
- data/lib/riffer/providers/base.rb +2 -0
- data/lib/riffer/providers/gemini.rb +4 -0
- data/lib/riffer/providers/mock.rb +4 -0
- data/lib/riffer/providers/open_ai.rb +10 -7
- data/lib/riffer/providers/open_router.rb +25 -18
- data/lib/riffer/runner/fibers.rb +2 -0
- data/lib/riffer/runner/threaded.rb +2 -0
- data/lib/riffer/skills/config.rb +5 -0
- data/lib/riffer/skills/context.rb +3 -0
- data/lib/riffer/skills/filesystem_backend.rb +3 -0
- data/lib/riffer/tools/response.rb +2 -0
- data/lib/riffer/tools/runtime.rb +2 -0
- data/lib/riffer/tools/toolable.rb +7 -0
- data/lib/riffer/version.rb +1 -1
- data/lib/riffer.rb +2 -0
- data/sig/_private/anthropic.rbs +16 -0
- data/sig/_private/openai.rbs +29 -0
- data/sig/_private/riffer/providers/amazon_bedrock.rbs +4 -0
- data/sig/_private/riffer/providers/anthropic.rbs +4 -0
- data/sig/_private/riffer/providers/open_ai.rbs +4 -0
- data/sig/_private/riffer/providers/open_router.rbs +4 -0
- data/sig/generated/riffer/agent/config.rbs +3 -3
- data/sig/generated/riffer/agent/context.rbs +2 -0
- data/sig/generated/riffer/agent/response.rbs +2 -0
- data/sig/generated/riffer/agent/serializer.rbs +132 -0
- data/sig/generated/riffer/agent/session.rbs +2 -0
- data/sig/generated/riffer/agent.rbs +67 -11
- data/sig/generated/riffer/evals/evaluator.rbs +8 -0
- data/sig/generated/riffer/evals/judge.rbs +8 -0
- data/sig/generated/riffer/mcp/client.rbs +2 -0
- data/sig/generated/riffer/mcp/registration.rbs +6 -0
- data/sig/generated/riffer/mcp/registry.rbs +4 -0
- data/sig/generated/riffer/messages/file_part.rbs +2 -0
- data/sig/generated/riffer/params/param.rbs +46 -5
- data/sig/generated/riffer/params.rbs +25 -6
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +20 -20
- data/sig/generated/riffer/providers/anthropic.rbs +10 -10
- data/sig/generated/riffer/providers/base.rbs +2 -0
- data/sig/generated/riffer/providers/gemini.rbs +6 -0
- data/sig/generated/riffer/providers/mock.rbs +6 -0
- data/sig/generated/riffer/providers/open_ai.rbs +8 -8
- data/sig/generated/riffer/providers/open_router.rbs +16 -16
- data/sig/generated/riffer/runner/fibers.rbs +2 -0
- data/sig/generated/riffer/runner/threaded.rbs +2 -0
- data/sig/generated/riffer/skills/config.rbs +8 -0
- data/sig/generated/riffer/skills/context.rbs +4 -0
- data/sig/generated/riffer/skills/filesystem_backend.rbs +4 -0
- data/sig/generated/riffer/tools/response.rbs +2 -0
- data/sig/generated/riffer/tools/runtime.rbs +2 -0
- data/sig/generated/riffer/tools/toolable.rbs +12 -0
- data/sig/generated/riffer.rbs +2 -0
- data/sig/manifest.yaml +3 -0
- data/sig/manual/riffer/agent/run.rbs +5 -0
- data/sig/manual/riffer/agent/serializer.rbs +5 -0
- data/sig/manual/riffer/helpers/call_or_value.rbs +5 -0
- data/sig/manual/riffer/tools/toolable.rbs +6 -0
- metadata +20 -11
- data/sig/stubs/agent_ivars.rbs +0 -7
- data/sig/stubs/extend_self.rbs +0 -11
- data/sig/stubs/lib_ivars.rbs +0 -101
- data/sig/stubs/provider_ivars.rbs +0 -36
- data/sig/stubs/provider_sdk_methods.rbs +0 -50
- /data/sig/{stubs → _private}/async.rbs +0 -0
- /data/sig/{stubs → _private}/aws-sdk-core/seahorse_request_context.rbs +0 -0
- /data/sig/{stubs → _private}/aws-sdk-core/static_token_provider.rbs +0 -0
- /data/sig/{stubs/mcp_sdk.rbs → _private/mcp.rbs} +0 -0
- /data/sig/{stubs → _private}/zeitwerk.rbs +0 -0
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.30.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -277,6 +277,7 @@ files:
|
|
|
277
277
|
- docs/12_GUARDRAILS.md
|
|
278
278
|
- docs/13_SKILLS.md
|
|
279
279
|
- docs/14_MCP.md
|
|
280
|
+
- docs/15_SERIALIZATION.md
|
|
280
281
|
- docs/providers/01_PROVIDERS.md
|
|
281
282
|
- docs/providers/02_AMAZON_BEDROCK.md
|
|
282
283
|
- docs/providers/03_ANTHROPIC.md
|
|
@@ -292,6 +293,7 @@ files:
|
|
|
292
293
|
- lib/riffer/agent/context.rb
|
|
293
294
|
- lib/riffer/agent/response.rb
|
|
294
295
|
- lib/riffer/agent/run.rb
|
|
296
|
+
- lib/riffer/agent/serializer.rb
|
|
295
297
|
- lib/riffer/agent/session.rb
|
|
296
298
|
- lib/riffer/agent/session/repair.rb
|
|
297
299
|
- lib/riffer/agent/structured_output.rb
|
|
@@ -381,12 +383,24 @@ files:
|
|
|
381
383
|
- lib/riffer/tools/runtime/threaded.rb
|
|
382
384
|
- lib/riffer/tools/toolable.rb
|
|
383
385
|
- lib/riffer/version.rb
|
|
386
|
+
- sig/_private/anthropic.rbs
|
|
387
|
+
- sig/_private/async.rbs
|
|
388
|
+
- sig/_private/aws-sdk-core/seahorse_request_context.rbs
|
|
389
|
+
- sig/_private/aws-sdk-core/static_token_provider.rbs
|
|
390
|
+
- sig/_private/mcp.rbs
|
|
391
|
+
- sig/_private/openai.rbs
|
|
392
|
+
- sig/_private/riffer/providers/amazon_bedrock.rbs
|
|
393
|
+
- sig/_private/riffer/providers/anthropic.rbs
|
|
394
|
+
- sig/_private/riffer/providers/open_ai.rbs
|
|
395
|
+
- sig/_private/riffer/providers/open_router.rbs
|
|
396
|
+
- sig/_private/zeitwerk.rbs
|
|
384
397
|
- sig/generated/riffer.rbs
|
|
385
398
|
- sig/generated/riffer/agent.rbs
|
|
386
399
|
- sig/generated/riffer/agent/config.rbs
|
|
387
400
|
- sig/generated/riffer/agent/context.rbs
|
|
388
401
|
- sig/generated/riffer/agent/response.rbs
|
|
389
402
|
- sig/generated/riffer/agent/run.rbs
|
|
403
|
+
- sig/generated/riffer/agent/serializer.rbs
|
|
390
404
|
- sig/generated/riffer/agent/session.rbs
|
|
391
405
|
- sig/generated/riffer/agent/session/repair.rbs
|
|
392
406
|
- sig/generated/riffer/agent/structured_output.rbs
|
|
@@ -476,16 +490,11 @@ files:
|
|
|
476
490
|
- sig/generated/riffer/tools/runtime/threaded.rbs
|
|
477
491
|
- sig/generated/riffer/tools/toolable.rbs
|
|
478
492
|
- sig/generated/riffer/version.rbs
|
|
479
|
-
- sig/
|
|
480
|
-
- sig/
|
|
481
|
-
- sig/
|
|
482
|
-
- sig/
|
|
483
|
-
- sig/
|
|
484
|
-
- sig/stubs/lib_ivars.rbs
|
|
485
|
-
- sig/stubs/mcp_sdk.rbs
|
|
486
|
-
- sig/stubs/provider_ivars.rbs
|
|
487
|
-
- sig/stubs/provider_sdk_methods.rbs
|
|
488
|
-
- sig/stubs/zeitwerk.rbs
|
|
493
|
+
- sig/manifest.yaml
|
|
494
|
+
- sig/manual/riffer/agent/run.rbs
|
|
495
|
+
- sig/manual/riffer/agent/serializer.rbs
|
|
496
|
+
- sig/manual/riffer/helpers/call_or_value.rbs
|
|
497
|
+
- sig/manual/riffer/tools/toolable.rbs
|
|
489
498
|
homepage: https://riffer.ai
|
|
490
499
|
licenses:
|
|
491
500
|
- MIT
|
data/sig/stubs/agent_ivars.rbs
DELETED
data/sig/stubs/extend_self.rbs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# rbs-inline does not emit `extend self` for modules that use it, so their
|
|
2
|
-
# instance methods aren't visible as singleton methods. Reopening each module
|
|
3
|
-
# here to `extend` itself restores that, matching the runtime behaviour.
|
|
4
|
-
|
|
5
|
-
module Riffer::Helpers::CallOrValue
|
|
6
|
-
extend ::Riffer::Helpers::CallOrValue
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
module Riffer::Agent::Run
|
|
10
|
-
extend ::Riffer::Agent::Run
|
|
11
|
-
end
|
data/sig/stubs/lib_ivars.rbs
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# Instance/module variable declarations for non-provider lib/ classes.
|
|
2
|
-
#
|
|
3
|
-
# rbs-inline's `#:` syntax types an assignment expression (a Steep assertion)
|
|
4
|
-
# but doesn't declare the instance variable itself, so we stub the ivar types
|
|
5
|
-
# here instead (mirrors sig/stubs/agent_ivars.rbs and provider_ivars.rbs).
|
|
6
|
-
|
|
7
|
-
class Riffer::Mcp::Registration
|
|
8
|
-
@cancelled: bool
|
|
9
|
-
@tools: Array[singleton(Riffer::Tool)]
|
|
10
|
-
@mutex: Thread::Mutex
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
module Riffer::Mcp::Registry
|
|
14
|
-
self.@mutex: Thread::Mutex
|
|
15
|
-
self.@store: Hash[String, Riffer::Mcp::Registration]
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class Riffer::Mcp::Client
|
|
19
|
-
@client: untyped
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
# Toolable is extended onto tool classes; its instance methods run as class
|
|
23
|
-
# methods on the extender, which is also extended with ClassNameConverter
|
|
24
|
-
# (see Toolable.extended). The include models that method availability for Steep.
|
|
25
|
-
module Riffer::Tools::Toolable
|
|
26
|
-
include Riffer::Helpers::ClassNameConverter
|
|
27
|
-
|
|
28
|
-
self.@extenders: Array[Module]?
|
|
29
|
-
@description: String?
|
|
30
|
-
@identifier: String?
|
|
31
|
-
@timeout: (Integer | Float)?
|
|
32
|
-
@params_builder: Riffer::Params?
|
|
33
|
-
@kind: Symbol?
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class Riffer::Evals::Judge
|
|
37
|
-
@provider_options: Hash[Symbol, untyped]
|
|
38
|
-
@provider_instance: Riffer::Providers::Base?
|
|
39
|
-
@provider_name: String?
|
|
40
|
-
@model_name: String?
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
class Riffer::Evals::Evaluator
|
|
44
|
-
self.@instructions: String?
|
|
45
|
-
self.@higher_is_better: bool?
|
|
46
|
-
self.@judge_model: String?
|
|
47
|
-
@judge: Riffer::Evals::Judge?
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
class Riffer::Skills::Context
|
|
51
|
-
@backend: Riffer::Skills::Backend
|
|
52
|
-
@activated: Hash[String, String]
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
class Riffer::Skills::Config
|
|
56
|
-
@backend: (Riffer::Skills::Backend | Proc)?
|
|
57
|
-
@adapter: singleton(Riffer::Skills::Adapter)?
|
|
58
|
-
@activate: (Array[String] | Proc)?
|
|
59
|
-
@activate_tool: singleton(Riffer::Tool)?
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
class Riffer::Skills::FilesystemBackend
|
|
63
|
-
@paths: Array[String]
|
|
64
|
-
@skills_cache: Hash[String, String]?
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
module Riffer
|
|
68
|
-
self.@config: Riffer::Config?
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
class Riffer::Agent::Session
|
|
72
|
-
@callbacks: Array[^(Riffer::Messages::Base) -> void]
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
class Riffer::Agent::Context
|
|
76
|
-
@data: Hash[Symbol, untyped]
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
class Riffer::Agent::Response
|
|
80
|
-
@interrupted: bool
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
class Riffer::Tools::Response
|
|
84
|
-
@success: bool
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
class Riffer::Tools::Runtime
|
|
88
|
-
@runner: Riffer::Runner
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
class Riffer::Runner::Threaded
|
|
92
|
-
@max_concurrency: Integer
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
class Riffer::Runner::Fibers
|
|
96
|
-
@max_concurrency: Integer?
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
class Riffer::Messages::FilePart
|
|
100
|
-
@url_string: String?
|
|
101
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Instance variable declarations for the provider adapters.
|
|
2
|
-
#
|
|
3
|
-
# rbs-inline's `#:` syntax types an assignment expression (a Steep assertion)
|
|
4
|
-
# but doesn't declare the instance variable itself, so we stub the ivar types
|
|
5
|
-
# here instead.
|
|
6
|
-
class Riffer::Providers::Base
|
|
7
|
-
@current_tools: Array[singleton(Riffer::Tool)]
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class Riffer::Providers::Anthropic
|
|
11
|
-
@client: ::Anthropic::Client
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class Riffer::Providers::OpenAI
|
|
15
|
-
@client: ::OpenAI::Client
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class Riffer::Providers::OpenRouter
|
|
19
|
-
@client: ::OpenAI::Client
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
class Riffer::Providers::AmazonBedrock
|
|
23
|
-
@client: ::Aws::BedrockRuntime::Client
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
class Riffer::Providers::Gemini
|
|
27
|
-
@api_key: String?
|
|
28
|
-
@open_timeout: Integer
|
|
29
|
-
@read_timeout: Integer
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
class Riffer::Providers::Mock
|
|
33
|
-
@responses: Array[Hash[Symbol, untyped]]
|
|
34
|
-
@current_index: Integer
|
|
35
|
-
@stubbed_responses: Array[Hash[Symbol, untyped]]
|
|
36
|
-
end
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Accurate signatures for SDK resource methods whose shipped RBS doesn't match
|
|
2
|
-
# the real API.
|
|
3
|
-
#
|
|
4
|
-
# The OpenAI and Anthropic gems implement these as positional `def x(params)`
|
|
5
|
-
# methods (a single options hash), but their generated RBS advertises
|
|
6
|
-
# keyword-only signatures — and the Anthropic gem omits `Messages#stream`
|
|
7
|
-
# altogether. The providers call them with a positional hash (`x(params)`) or a
|
|
8
|
-
# keyword splat (`x(**params)`); both reach the same positional parameter at
|
|
9
|
-
# runtime, so we accept either here (`| ...` extends the gem's existing
|
|
10
|
-
# overloads). Streaming methods are typed to return `untyped`: the event
|
|
11
|
-
# objects are a ~60-member union dispatched dynamically on `#type`, which the
|
|
12
|
-
# providers (and their `untyped` event handlers) already treat as dynamic.
|
|
13
|
-
module OpenAI
|
|
14
|
-
module Resources
|
|
15
|
-
class Responses
|
|
16
|
-
def create: (Hash[Symbol, untyped] params) -> OpenAI::Models::Responses::Response
|
|
17
|
-
| (**untyped) -> OpenAI::Models::Responses::Response
|
|
18
|
-
| ...
|
|
19
|
-
def stream: (Hash[Symbol, untyped] params) -> untyped
|
|
20
|
-
| (**untyped) -> untyped
|
|
21
|
-
| ...
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
class Chat
|
|
25
|
-
class Completions
|
|
26
|
-
def create: (Hash[Symbol, untyped] params) -> OpenAI::Models::Chat::ChatCompletion
|
|
27
|
-
| (**untyped) -> OpenAI::Models::Chat::ChatCompletion
|
|
28
|
-
| ...
|
|
29
|
-
def stream_raw: (Hash[Symbol, untyped] params) -> untyped
|
|
30
|
-
| (**untyped) -> untyped
|
|
31
|
-
| ...
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
module Anthropic
|
|
38
|
-
module Resources
|
|
39
|
-
class Messages
|
|
40
|
-
def create: (Hash[Symbol, untyped] params) -> Anthropic::Models::Message
|
|
41
|
-
| (**untyped) -> Anthropic::Models::Message
|
|
42
|
-
| ...
|
|
43
|
-
|
|
44
|
-
# Omitted from the gem's RBS; present at runtime (returns a MessageStream
|
|
45
|
-
# helper iterated with `#each` / `#accumulated_message` / `#close`).
|
|
46
|
-
def stream: (Hash[Symbol, untyped] params) -> untyped
|
|
47
|
-
| (**untyped) -> untyped
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|