riffer 0.30.0 → 0.32.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/code-style.md +63 -4
- data/.agents/rbs-inline.md +1 -6
- data/.release-please-manifest.json +1 -1
- data/AGENTS.md +1 -2
- data/CHANGELOG.md +25 -0
- data/docs/08_MESSAGES.md +1 -1
- data/docs/14_MCP.md +50 -5
- data/docs/15_SERIALIZATION.md +23 -12
- data/docs/providers/02_AMAZON_BEDROCK.md +14 -0
- data/lib/riffer/agent/config.rb +42 -47
- data/lib/riffer/agent/context.rb +70 -50
- data/lib/riffer/agent/response.rb +4 -20
- data/lib/riffer/agent/run.rb +28 -67
- data/lib/riffer/agent/serializer.rb +36 -85
- data/lib/riffer/agent/session/repair.rb +14 -40
- data/lib/riffer/agent/session.rb +25 -67
- data/lib/riffer/agent/structured_output/result.rb +3 -11
- data/lib/riffer/agent/structured_output.rb +5 -13
- data/lib/riffer/agent.rb +81 -199
- data/lib/riffer/config.rb +34 -101
- data/lib/riffer/evals/evaluator.rb +7 -27
- data/lib/riffer/evals/evaluator_runner.rb +11 -19
- data/lib/riffer/evals/judge.rb +4 -25
- data/lib/riffer/evals/result.rb +1 -18
- data/lib/riffer/evals/run_result.rb +0 -11
- data/lib/riffer/evals/scenario_result.rb +0 -14
- data/lib/riffer/evals.rb +0 -6
- data/lib/riffer/guardrail.rb +4 -27
- data/lib/riffer/guardrails/modification.rb +0 -10
- data/lib/riffer/guardrails/result.rb +3 -30
- data/lib/riffer/guardrails/runner.rb +5 -22
- data/lib/riffer/guardrails/tripwire.rb +1 -19
- data/lib/riffer/guardrails.rb +2 -4
- data/lib/riffer/helpers/call_or_value.rb +4 -3
- data/lib/riffer/helpers/class_name_converter.rb +3 -1
- data/lib/riffer/helpers/dependencies.rb +5 -7
- data/lib/riffer/helpers.rb +0 -5
- data/lib/riffer/mcp/authenticated_tool.rb +9 -9
- data/lib/riffer/mcp/client.rb +12 -17
- data/lib/riffer/mcp/manifest.rb +13 -10
- data/lib/riffer/mcp/registration.rb +2 -11
- data/lib/riffer/mcp/registry.rb +44 -52
- data/lib/riffer/mcp/search_tool.rb +53 -0
- data/lib/riffer/mcp/tool_factory.rb +13 -18
- data/lib/riffer/mcp.rb +12 -17
- data/lib/riffer/messages/assistant.rb +2 -9
- data/lib/riffer/messages/base.rb +46 -16
- data/lib/riffer/messages/file_part.rb +32 -24
- data/lib/riffer/messages/system.rb +0 -5
- data/lib/riffer/messages/tool.rb +0 -10
- data/lib/riffer/messages/user.rb +0 -10
- data/lib/riffer/messages.rb +0 -7
- data/lib/riffer/params/boolean.rb +2 -4
- data/lib/riffer/params/param.rb +28 -39
- data/lib/riffer/params.rb +9 -21
- data/lib/riffer/providers/amazon_bedrock.rb +42 -28
- data/lib/riffer/providers/anthropic.rb +4 -9
- data/lib/riffer/providers/azure_open_ai.rb +3 -19
- data/lib/riffer/providers/base.rb +13 -26
- data/lib/riffer/providers/gemini.rb +4 -4
- data/lib/riffer/providers/mock.rb +6 -26
- data/lib/riffer/providers/open_ai.rb +6 -8
- data/lib/riffer/providers/open_router.rb +4 -10
- data/lib/riffer/providers/repository.rb +4 -3
- data/lib/riffer/providers/token_usage.rb +9 -20
- data/lib/riffer/providers.rb +0 -8
- data/lib/riffer/runner/fibers.rb +10 -16
- data/lib/riffer/runner/sequential.rb +1 -4
- data/lib/riffer/runner/threaded.rb +3 -14
- data/lib/riffer/runner.rb +2 -15
- data/lib/riffer/skills/activate_tool.rb +2 -11
- data/lib/riffer/skills/adapter.rb +4 -22
- data/lib/riffer/skills/backend.rb +7 -21
- data/lib/riffer/skills/config.rb +10 -31
- data/lib/riffer/skills/context.rb +5 -20
- data/lib/riffer/skills/filesystem_backend.rb +7 -25
- data/lib/riffer/skills/frontmatter.rb +10 -28
- data/lib/riffer/skills/markdown_adapter.rb +2 -9
- data/lib/riffer/skills/xml_adapter.rb +2 -8
- data/lib/riffer/stream_events/base.rb +1 -6
- data/lib/riffer/stream_events/guardrail_modification.rb +1 -8
- data/lib/riffer/stream_events/guardrail_tripwire.rb +1 -8
- data/lib/riffer/stream_events/interrupt.rb +4 -7
- data/lib/riffer/stream_events/reasoning_delta.rb +2 -4
- data/lib/riffer/stream_events/reasoning_done.rb +2 -4
- data/lib/riffer/stream_events/skill_activation.rb +2 -4
- data/lib/riffer/stream_events/text_delta.rb +0 -2
- data/lib/riffer/stream_events/text_done.rb +1 -3
- data/lib/riffer/stream_events/token_usage_done.rb +1 -8
- data/lib/riffer/stream_events/tool_call_delta.rb +2 -3
- data/lib/riffer/stream_events/tool_call_done.rb +1 -3
- data/lib/riffer/stream_events/web_search_done.rb +1 -3
- data/lib/riffer/stream_events/web_search_status.rb +2 -3
- data/lib/riffer/stream_events.rb +0 -10
- data/lib/riffer/tool.rb +6 -13
- data/lib/riffer/tools/response.rb +8 -4
- data/lib/riffer/tools/runtime/fibers.rb +0 -3
- data/lib/riffer/tools/runtime/inline.rb +1 -4
- data/lib/riffer/tools/runtime/threaded.rb +0 -2
- data/lib/riffer/tools/runtime.rb +5 -38
- data/lib/riffer/tools/toolable.rb +5 -16
- data/lib/riffer/tools.rb +0 -4
- data/lib/riffer/version.rb +1 -1
- data/lib/riffer.rb +7 -8
- data/sig/generated/riffer/agent/config.rbs +29 -46
- data/sig/generated/riffer/agent/context.rbs +40 -48
- data/sig/generated/riffer/agent/response.rbs +4 -20
- data/sig/generated/riffer/agent/run.rbs +12 -61
- data/sig/generated/riffer/agent/serializer.rbs +28 -81
- data/sig/generated/riffer/agent/session/repair.rbs +12 -40
- data/sig/generated/riffer/agent/session.rbs +25 -67
- data/sig/generated/riffer/agent/structured_output/result.rbs +2 -10
- data/sig/generated/riffer/agent/structured_output.rbs +5 -12
- data/sig/generated/riffer/agent.rbs +62 -191
- data/sig/generated/riffer/config.rbs +34 -100
- data/sig/generated/riffer/evals/evaluator.rbs +7 -27
- data/sig/generated/riffer/evals/evaluator_runner.rbs +9 -19
- data/sig/generated/riffer/evals/judge.rbs +4 -24
- data/sig/generated/riffer/evals/result.rbs +1 -17
- data/sig/generated/riffer/evals/run_result.rbs +0 -10
- data/sig/generated/riffer/evals/scenario_result.rbs +0 -13
- data/sig/generated/riffer/evals.rbs +0 -6
- data/sig/generated/riffer/guardrail.rbs +4 -27
- data/sig/generated/riffer/guardrails/modification.rbs +0 -10
- data/sig/generated/riffer/guardrails/result.rbs +3 -30
- data/sig/generated/riffer/guardrails/runner.rbs +5 -22
- data/sig/generated/riffer/guardrails/tripwire.rbs +1 -19
- data/sig/generated/riffer/guardrails.rbs +2 -4
- data/sig/generated/riffer/helpers/call_or_value.rbs +4 -3
- data/sig/generated/riffer/helpers/class_name_converter.rbs +1 -1
- data/sig/generated/riffer/helpers/dependencies.rbs +3 -7
- data/sig/generated/riffer/helpers.rbs +0 -5
- data/sig/generated/riffer/mcp/authenticated_tool.rbs +5 -4
- data/sig/generated/riffer/mcp/client.rbs +10 -16
- data/sig/generated/riffer/mcp/manifest.rbs +9 -9
- data/sig/generated/riffer/mcp/registration.rbs +2 -10
- data/sig/generated/riffer/mcp/registry.rbs +11 -18
- data/sig/generated/riffer/mcp/search_tool.rbs +26 -0
- data/sig/generated/riffer/mcp/tool_factory.rbs +10 -15
- data/sig/generated/riffer/mcp.rbs +10 -17
- data/sig/generated/riffer/messages/assistant.rbs +2 -8
- data/sig/generated/riffer/messages/base.rbs +11 -16
- data/sig/generated/riffer/messages/file_part.rbs +13 -23
- data/sig/generated/riffer/messages/system.rbs +0 -4
- data/sig/generated/riffer/messages/tool.rbs +0 -9
- data/sig/generated/riffer/messages/user.rbs +0 -9
- data/sig/generated/riffer/messages.rbs +0 -7
- data/sig/generated/riffer/params/boolean.rbs +2 -4
- data/sig/generated/riffer/params/param.rbs +21 -39
- data/sig/generated/riffer/params.rbs +9 -21
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +21 -25
- data/sig/generated/riffer/providers/anthropic.rbs +2 -7
- data/sig/generated/riffer/providers/azure_open_ai.rbs +3 -18
- data/sig/generated/riffer/providers/base.rbs +9 -25
- data/sig/generated/riffer/providers/gemini.rbs +0 -2
- data/sig/generated/riffer/providers/mock.rbs +6 -26
- data/sig/generated/riffer/providers/open_ai.rbs +1 -5
- data/sig/generated/riffer/providers/open_router.rbs +4 -10
- data/sig/generated/riffer/providers/repository.rbs +2 -3
- data/sig/generated/riffer/providers/token_usage.rbs +6 -16
- data/sig/generated/riffer/providers.rbs +0 -8
- data/sig/generated/riffer/runner/fibers.rbs +8 -15
- data/sig/generated/riffer/runner/sequential.rbs +1 -3
- data/sig/generated/riffer/runner/threaded.rbs +3 -13
- data/sig/generated/riffer/runner.rbs +2 -14
- data/sig/generated/riffer/skills/activate_tool.rbs +2 -11
- data/sig/generated/riffer/skills/adapter.rbs +4 -22
- data/sig/generated/riffer/skills/backend.rbs +7 -21
- data/sig/generated/riffer/skills/config.rbs +10 -31
- data/sig/generated/riffer/skills/context.rbs +5 -20
- data/sig/generated/riffer/skills/filesystem_backend.rbs +7 -24
- data/sig/generated/riffer/skills/frontmatter.rbs +10 -27
- data/sig/generated/riffer/skills/markdown_adapter.rbs +2 -9
- data/sig/generated/riffer/skills/xml_adapter.rbs +2 -8
- data/sig/generated/riffer/stream_events/base.rbs +1 -6
- data/sig/generated/riffer/stream_events/guardrail_modification.rbs +1 -8
- data/sig/generated/riffer/stream_events/guardrail_tripwire.rbs +1 -8
- data/sig/generated/riffer/stream_events/interrupt.rbs +4 -7
- data/sig/generated/riffer/stream_events/reasoning_delta.rbs +2 -4
- data/sig/generated/riffer/stream_events/reasoning_done.rbs +2 -4
- data/sig/generated/riffer/stream_events/skill_activation.rbs +2 -4
- data/sig/generated/riffer/stream_events/text_delta.rbs +0 -2
- data/sig/generated/riffer/stream_events/text_done.rbs +1 -3
- data/sig/generated/riffer/stream_events/token_usage_done.rbs +1 -7
- data/sig/generated/riffer/stream_events/tool_call_delta.rbs +2 -3
- data/sig/generated/riffer/stream_events/tool_call_done.rbs +1 -3
- data/sig/generated/riffer/stream_events/web_search_done.rbs +1 -3
- data/sig/generated/riffer/stream_events/web_search_status.rbs +2 -3
- data/sig/generated/riffer/stream_events.rbs +0 -10
- data/sig/generated/riffer/tool.rbs +5 -12
- data/sig/generated/riffer/tools/response.rbs +6 -4
- data/sig/generated/riffer/tools/runtime/fibers.rbs +0 -3
- data/sig/generated/riffer/tools/runtime/inline.rbs +1 -3
- data/sig/generated/riffer/tools/runtime/threaded.rbs +0 -2
- data/sig/generated/riffer/tools/runtime.rbs +5 -37
- data/sig/generated/riffer/tools/toolable.rbs +4 -14
- data/sig/generated/riffer/tools.rbs +0 -4
- data/sig/generated/riffer.rbs +5 -4
- data/sig/manual/riffer/agent/session/repair.rbs +5 -0
- data/sig/manual/riffer/evals/evaluator_runner.rbs +5 -0
- data/sig/manual/riffer/helpers/class_name_converter.rbs +5 -0
- data/sig/manual/riffer/helpers/dependencies.rbs +5 -0
- data/sig/manual/riffer/mcp/authenticated_tool.rbs +5 -0
- data/sig/manual/riffer/mcp/registry.rbs +5 -0
- data/sig/manual/riffer/mcp/tool_factory.rbs +5 -0
- data/sig/manual/riffer/mcp.rbs +5 -0
- data/sig/manual/riffer/providers/repository.rbs +5 -0
- data/sig/manual/riffer.rbs +5 -0
- metadata +17 -9
- data/.agents/rdoc.md +0 -69
- data/lib/riffer/messages/converter.rb +0 -90
- data/sig/generated/riffer/messages/converter.rbs +0 -33
- data/sig/manual/riffer/tools/toolable.rbs +0 -6
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.32.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jake Bottrall
|
|
@@ -35,14 +35,14 @@ dependencies:
|
|
|
35
35
|
requirements:
|
|
36
36
|
- - "~>"
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
|
-
version: 1.
|
|
38
|
+
version: 1.46.0
|
|
39
39
|
type: :development
|
|
40
40
|
prerelease: false
|
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
42
42
|
requirements:
|
|
43
43
|
- - "~>"
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 1.
|
|
45
|
+
version: 1.46.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: aws-sdk-bedrockruntime
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -91,14 +91,14 @@ dependencies:
|
|
|
91
91
|
requirements:
|
|
92
92
|
- - "~>"
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: 0.
|
|
94
|
+
version: 0.66.1
|
|
95
95
|
type: :development
|
|
96
96
|
prerelease: false
|
|
97
97
|
version_requirements: !ruby/object:Gem::Requirement
|
|
98
98
|
requirements:
|
|
99
99
|
- - "~>"
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: 0.
|
|
101
|
+
version: 0.66.1
|
|
102
102
|
- !ruby/object:Gem::Dependency
|
|
103
103
|
name: async
|
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -247,7 +247,6 @@ files:
|
|
|
247
247
|
- ".agents/code-style.md"
|
|
248
248
|
- ".agents/providers.md"
|
|
249
249
|
- ".agents/rbs-inline.md"
|
|
250
|
-
- ".agents/rdoc.md"
|
|
251
250
|
- ".agents/testing.md"
|
|
252
251
|
- ".bundle/config"
|
|
253
252
|
- ".release-please-config.json"
|
|
@@ -322,11 +321,11 @@ files:
|
|
|
322
321
|
- lib/riffer/mcp/manifest.rb
|
|
323
322
|
- lib/riffer/mcp/registration.rb
|
|
324
323
|
- lib/riffer/mcp/registry.rb
|
|
324
|
+
- lib/riffer/mcp/search_tool.rb
|
|
325
325
|
- lib/riffer/mcp/tool_factory.rb
|
|
326
326
|
- lib/riffer/messages.rb
|
|
327
327
|
- lib/riffer/messages/assistant.rb
|
|
328
328
|
- lib/riffer/messages/base.rb
|
|
329
|
-
- lib/riffer/messages/converter.rb
|
|
330
329
|
- lib/riffer/messages/file_part.rb
|
|
331
330
|
- lib/riffer/messages/system.rb
|
|
332
331
|
- lib/riffer/messages/tool.rb
|
|
@@ -429,11 +428,11 @@ files:
|
|
|
429
428
|
- sig/generated/riffer/mcp/manifest.rbs
|
|
430
429
|
- sig/generated/riffer/mcp/registration.rbs
|
|
431
430
|
- sig/generated/riffer/mcp/registry.rbs
|
|
431
|
+
- sig/generated/riffer/mcp/search_tool.rbs
|
|
432
432
|
- sig/generated/riffer/mcp/tool_factory.rbs
|
|
433
433
|
- sig/generated/riffer/messages.rbs
|
|
434
434
|
- sig/generated/riffer/messages/assistant.rbs
|
|
435
435
|
- sig/generated/riffer/messages/base.rbs
|
|
436
|
-
- sig/generated/riffer/messages/converter.rbs
|
|
437
436
|
- sig/generated/riffer/messages/file_part.rbs
|
|
438
437
|
- sig/generated/riffer/messages/system.rbs
|
|
439
438
|
- sig/generated/riffer/messages/tool.rbs
|
|
@@ -491,10 +490,19 @@ files:
|
|
|
491
490
|
- sig/generated/riffer/tools/toolable.rbs
|
|
492
491
|
- sig/generated/riffer/version.rbs
|
|
493
492
|
- sig/manifest.yaml
|
|
493
|
+
- sig/manual/riffer.rbs
|
|
494
494
|
- sig/manual/riffer/agent/run.rbs
|
|
495
495
|
- sig/manual/riffer/agent/serializer.rbs
|
|
496
|
+
- sig/manual/riffer/agent/session/repair.rbs
|
|
497
|
+
- sig/manual/riffer/evals/evaluator_runner.rbs
|
|
496
498
|
- sig/manual/riffer/helpers/call_or_value.rbs
|
|
497
|
-
- sig/manual/riffer/
|
|
499
|
+
- sig/manual/riffer/helpers/class_name_converter.rbs
|
|
500
|
+
- sig/manual/riffer/helpers/dependencies.rbs
|
|
501
|
+
- sig/manual/riffer/mcp.rbs
|
|
502
|
+
- sig/manual/riffer/mcp/authenticated_tool.rbs
|
|
503
|
+
- sig/manual/riffer/mcp/registry.rbs
|
|
504
|
+
- sig/manual/riffer/mcp/tool_factory.rbs
|
|
505
|
+
- sig/manual/riffer/providers/repository.rbs
|
|
498
506
|
homepage: https://riffer.ai
|
|
499
507
|
licenses:
|
|
500
508
|
- MIT
|
data/.agents/rdoc.md
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# RDoc Documentation
|
|
2
|
-
|
|
3
|
-
Use RDoc prose comments for public API descriptions and RBS inline annotations for types.
|
|
4
|
-
|
|
5
|
-
## Parameters and Return Types
|
|
6
|
-
|
|
7
|
-
Describe parameters using RDoc labeled list syntax. Use a single `#:` line for the RBS method signature (see [rbs-inline.md](rbs-inline.md) for the full type annotation syntax):
|
|
8
|
-
|
|
9
|
-
```ruby
|
|
10
|
-
# Creates a new agent.
|
|
11
|
-
#
|
|
12
|
-
# [name] the agent name.
|
|
13
|
-
# [options] optional configuration.
|
|
14
|
-
#
|
|
15
|
-
#--
|
|
16
|
-
#: (String, ?options: Hash[Symbol, untyped]) -> void
|
|
17
|
-
def initialize(name, options: {})
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Always add `#--` (RDoc stop directive) on the line before a standalone `#:` type annotation. Without it, RDoc treats `#:` as a label-list marker and corrupts the preceding comment into a `<pre>` block. Inline `#:` on the same line as code (e.g., `attr_reader :name #: String`) does not need this.
|
|
21
|
-
|
|
22
|
-
## Inline Code
|
|
23
|
-
|
|
24
|
-
Use `+word+` for single-word inline code. For multi-word expressions (containing spaces, colons, or brackets), use `<tt>multi word expression</tt>`:
|
|
25
|
-
|
|
26
|
-
```ruby
|
|
27
|
-
# Returns +nil+ when no instructions are configured.
|
|
28
|
-
# Equivalent to <tt>throw :riffer_interrupt, reason</tt>.
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Attributes and Constants
|
|
32
|
-
|
|
33
|
-
Use `#:` inline syntax (on the same line) for attribute and constant types:
|
|
34
|
-
|
|
35
|
-
```ruby
|
|
36
|
-
# The agent name.
|
|
37
|
-
attr_reader :name #: String
|
|
38
|
-
|
|
39
|
-
DEFAULT_TIMEOUT = 10 #: Integer
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Exceptions
|
|
43
|
-
|
|
44
|
-
Document with prose:
|
|
45
|
-
|
|
46
|
-
```ruby
|
|
47
|
-
# Raises Riffer::ArgumentError if the name is invalid.
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Examples
|
|
51
|
-
|
|
52
|
-
Include usage examples as indented code blocks (2 extra spaces of indent):
|
|
53
|
-
|
|
54
|
-
```ruby
|
|
55
|
-
# Creates a new agent.
|
|
56
|
-
#
|
|
57
|
-
# agent = MyAgent.new
|
|
58
|
-
# agent.generate('Hello')
|
|
59
|
-
#
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Internal APIs
|
|
63
|
-
|
|
64
|
-
Mark internal APIs with `:nodoc:` to exclude from documentation:
|
|
65
|
-
|
|
66
|
-
```ruby
|
|
67
|
-
def internal_method # :nodoc:
|
|
68
|
-
end
|
|
69
|
-
```
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# rbs_inline: enabled
|
|
3
|
-
|
|
4
|
-
# Module for converting hashes to message objects.
|
|
5
|
-
#
|
|
6
|
-
# Included in Agent and Provider classes to handle message normalization.
|
|
7
|
-
module Riffer::Messages::Converter
|
|
8
|
-
# Converts a hash or message object to a Riffer::Messages::Base subclass.
|
|
9
|
-
#
|
|
10
|
-
# Raises Riffer::ArgumentError if the message format is invalid.
|
|
11
|
-
#
|
|
12
|
-
#--
|
|
13
|
-
#: ((Hash[Symbol, untyped] | Riffer::Messages::Base)) -> Riffer::Messages::Base
|
|
14
|
-
def convert_to_message_object(msg)
|
|
15
|
-
return msg if msg.is_a?(Riffer::Messages::Base)
|
|
16
|
-
|
|
17
|
-
unless msg.is_a?(Hash)
|
|
18
|
-
raise Riffer::ArgumentError, "Message must be a Hash or Message object, got #{msg.class}"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
convert_hash_to_message(msg)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Converts a hash or FilePart object to a Riffer::Messages::FilePart.
|
|
25
|
-
#
|
|
26
|
-
# Accepts:
|
|
27
|
-
# - +Riffer::Messages::FilePart+ objects (passed through)
|
|
28
|
-
# - <tt>{url: "https://...", media_type: "..."}</tt> (URL source)
|
|
29
|
-
# - <tt>{data: "...", media_type: "..."}</tt> (raw base64)
|
|
30
|
-
#
|
|
31
|
-
# Raises Riffer::ArgumentError if the hash format is invalid.
|
|
32
|
-
#
|
|
33
|
-
#--
|
|
34
|
-
#: ((Hash[Symbol, untyped] | Riffer::Messages::FilePart)) -> Riffer::Messages::FilePart
|
|
35
|
-
def convert_to_file_part(file)
|
|
36
|
-
return file if file.is_a?(Riffer::Messages::FilePart)
|
|
37
|
-
|
|
38
|
-
unless file.is_a?(Hash)
|
|
39
|
-
raise Riffer::ArgumentError, "File must be a Hash or FilePart object, got #{file.class}"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
url = file[:url]
|
|
43
|
-
data = file[:data]
|
|
44
|
-
media_type = file[:media_type]
|
|
45
|
-
filename = file[:filename]
|
|
46
|
-
|
|
47
|
-
if url
|
|
48
|
-
Riffer::Messages::FilePart.from_url(url, media_type: media_type)
|
|
49
|
-
elsif data && media_type
|
|
50
|
-
Riffer::Messages::FilePart.new(data: data, media_type: media_type, filename: filename)
|
|
51
|
-
else
|
|
52
|
-
raise Riffer::ArgumentError, "File hash must include :url or :data with :media_type"
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
private
|
|
57
|
-
|
|
58
|
-
#--
|
|
59
|
-
#: (Hash[Symbol, untyped]) -> Riffer::Messages::Base
|
|
60
|
-
def convert_hash_to_message(hash)
|
|
61
|
-
role = hash[:role]
|
|
62
|
-
content = hash[:content]
|
|
63
|
-
|
|
64
|
-
if role.nil? || role.empty?
|
|
65
|
-
raise Riffer::ArgumentError, "Message hash must include a 'role' key"
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
id = hash[:id]
|
|
69
|
-
|
|
70
|
-
case role.to_sym
|
|
71
|
-
when :user
|
|
72
|
-
files = (hash[:files] || []).map { |f| convert_to_file_part(f) }
|
|
73
|
-
Riffer::Messages::User.new(content, id: id, files: files)
|
|
74
|
-
when :assistant
|
|
75
|
-
tool_calls = (hash[:tool_calls] || []).map { |tc|
|
|
76
|
-
tc.is_a?(Riffer::Messages::Assistant::ToolCall) ? tc : Riffer::Messages::Assistant::ToolCall.new(**tc)
|
|
77
|
-
}
|
|
78
|
-
structured_output = hash[:structured_output]
|
|
79
|
-
Riffer::Messages::Assistant.new(content, id: id, tool_calls: tool_calls, structured_output: structured_output)
|
|
80
|
-
when :system
|
|
81
|
-
Riffer::Messages::System.new(content, id: id)
|
|
82
|
-
when :tool
|
|
83
|
-
tool_call_id = hash[:tool_call_id]
|
|
84
|
-
name = hash[:name]
|
|
85
|
-
Riffer::Messages::Tool.new(content, id: id, tool_call_id: tool_call_id, name: name)
|
|
86
|
-
else
|
|
87
|
-
raise Riffer::ArgumentError, "Unknown message role: #{role}"
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Generated from lib/riffer/messages/converter.rb with RBS::Inline
|
|
2
|
-
|
|
3
|
-
# Module for converting hashes to message objects.
|
|
4
|
-
#
|
|
5
|
-
# Included in Agent and Provider classes to handle message normalization.
|
|
6
|
-
module Riffer::Messages::Converter
|
|
7
|
-
# Converts a hash or message object to a Riffer::Messages::Base subclass.
|
|
8
|
-
#
|
|
9
|
-
# Raises Riffer::ArgumentError if the message format is invalid.
|
|
10
|
-
#
|
|
11
|
-
# --
|
|
12
|
-
# : ((Hash[Symbol, untyped] | Riffer::Messages::Base)) -> Riffer::Messages::Base
|
|
13
|
-
def convert_to_message_object: (Hash[Symbol, untyped] | Riffer::Messages::Base) -> Riffer::Messages::Base
|
|
14
|
-
|
|
15
|
-
# Converts a hash or FilePart object to a Riffer::Messages::FilePart.
|
|
16
|
-
#
|
|
17
|
-
# Accepts:
|
|
18
|
-
# - +Riffer::Messages::FilePart+ objects (passed through)
|
|
19
|
-
# - <tt>{url: "https://...", media_type: "..."}</tt> (URL source)
|
|
20
|
-
# - <tt>{data: "...", media_type: "..."}</tt> (raw base64)
|
|
21
|
-
#
|
|
22
|
-
# Raises Riffer::ArgumentError if the hash format is invalid.
|
|
23
|
-
#
|
|
24
|
-
# --
|
|
25
|
-
# : ((Hash[Symbol, untyped] | Riffer::Messages::FilePart)) -> Riffer::Messages::FilePart
|
|
26
|
-
def convert_to_file_part: (Hash[Symbol, untyped] | Riffer::Messages::FilePart) -> Riffer::Messages::FilePart
|
|
27
|
-
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
# --
|
|
31
|
-
# : (Hash[Symbol, untyped]) -> Riffer::Messages::Base
|
|
32
|
-
def convert_hash_to_message: (Hash[Symbol, untyped]) -> Riffer::Messages::Base
|
|
33
|
-
end
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
# Toolable is extended onto tool classes; its instance methods run as class
|
|
2
|
-
# methods on the extender, which is also extended with ClassNameConverter
|
|
3
|
-
# (see Toolable.extended). The include models that method availability for Steep.
|
|
4
|
-
module Riffer::Tools::Toolable
|
|
5
|
-
include Riffer::Helpers::ClassNameConverter
|
|
6
|
-
end
|