riffer 0.47.2 → 0.49.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/comments.md +2 -4
- data/.claude/rules/rbs-inline.md +2 -12
- data/.release-please-manifest.json +1 -1
- data/.rubocop.yml +5 -0
- data/CHANGELOG.md +42 -0
- data/docs/AGENTS.md +39 -7
- data/docs/AGENT_LIFECYCLE.md +14 -16
- data/docs/CONFIGURATION.md +23 -34
- data/docs/EVALS.md +2 -1
- data/docs/MCP.md +0 -4
- data/docs/MESSAGES.md +85 -17
- data/docs/STREAM_EVENTS.md +8 -4
- data/docs/TOOL_ADVANCED.md +1 -3
- data/docs/TRACING.md +2 -2
- data/docs/providers/AMAZON_BEDROCK.md +32 -1
- data/docs/providers/CUSTOM_PROVIDERS.md +56 -4
- data/docs/providers/GEMINI.md +1 -1
- data/docs/providers/MOCK_PROVIDER.md +17 -0
- data/docs/providers/OPENROUTER.md +18 -1
- data/docs-site/build.rb +0 -6
- data/docs-site/check.rb +1 -5
- data/lib/riffer/agent/config.rb +27 -44
- data/lib/riffer/agent/context.rb +2 -26
- data/lib/riffer/agent/outcome.rb +0 -20
- data/lib/riffer/agent/response.rb +4 -35
- data/lib/riffer/agent/run.rb +32 -48
- data/lib/riffer/agent/serializer.rb +10 -39
- data/lib/riffer/agent/session/repair.rb +3 -15
- data/lib/riffer/agent/session.rb +26 -38
- data/lib/riffer/agent/structured_output/result.rb +0 -8
- data/lib/riffer/agent/structured_output.rb +0 -7
- data/lib/riffer/agent.rb +31 -127
- data/lib/riffer/config/amazon_bedrock.rb +30 -0
- data/lib/riffer/config/anthropic.rb +21 -0
- data/lib/riffer/config/azure_open_ai.rb +30 -0
- data/lib/riffer/config/evals.rb +18 -0
- data/lib/riffer/config/files.rb +61 -0
- data/lib/riffer/config/gemini.rb +21 -0
- data/lib/riffer/config/mcp.rb +31 -0
- data/lib/riffer/config/open_ai.rb +30 -0
- data/lib/riffer/config/open_router.rb +21 -0
- data/lib/riffer/config/pricing/rates.rb +36 -0
- data/lib/riffer/config/pricing.rb +64 -0
- data/lib/riffer/config/skills.rb +38 -0
- data/lib/riffer/config/tracing.rb +43 -0
- data/lib/riffer/config.rb +3 -362
- data/lib/riffer/evals/evaluator.rb +22 -23
- data/lib/riffer/evals/evaluator_runner.rb +0 -15
- data/lib/riffer/evals/judge.rb +9 -11
- data/lib/riffer/evals/result.rb +1 -11
- data/lib/riffer/evals/run_result.rb +0 -12
- data/lib/riffer/evals/scenario_result.rb +0 -19
- data/lib/riffer/files/downloader.rb +2 -3
- data/lib/riffer/files/resolver.rb +5 -10
- data/lib/riffer/guardrail.rb +2 -22
- data/lib/riffer/guardrails/modification.rb +0 -8
- data/lib/riffer/guardrails/result.rb +0 -17
- data/lib/riffer/guardrails/runner.rb +2 -11
- data/lib/riffer/guardrails/tripwire.rb +0 -8
- data/lib/riffer/guardrails.rb +0 -2
- data/lib/riffer/helpers/boolean.rb +0 -4
- data/lib/riffer/helpers/call_or_value.rb +0 -3
- data/lib/riffer/helpers/deep_dup.rb +37 -0
- data/lib/riffer/helpers/dependencies.rb +0 -4
- data/lib/riffer/helpers/identifier.rb +3 -12
- data/lib/riffer/helpers/validate.rb +42 -0
- data/lib/riffer/mcp/authenticated_tool.rb +4 -12
- data/lib/riffer/mcp/client.rb +0 -7
- data/lib/riffer/mcp/manifest.rb +3 -7
- data/lib/riffer/mcp/registration.rb +0 -10
- data/lib/riffer/mcp/registry.rb +0 -9
- data/lib/riffer/mcp/search_tool.rb +0 -4
- data/lib/riffer/mcp/tool.rb +1 -4
- data/lib/riffer/mcp/tool_factory.rb +3 -6
- data/lib/riffer/mcp.rb +2 -23
- data/lib/riffer/messages/assistant/reasoning_part.rb +73 -0
- data/lib/riffer/messages/assistant/tool_call.rb +55 -0
- data/lib/riffer/messages/assistant.rb +43 -15
- data/lib/riffer/messages/base.rb +5 -33
- data/lib/riffer/messages/system.rb +8 -1
- data/lib/riffer/messages/tool.rb +15 -13
- data/lib/riffer/messages/{file_part.rb → user/file_part.rb} +16 -40
- data/lib/riffer/messages/user.rb +11 -4
- data/lib/riffer/params/boolean.rb +1 -5
- data/lib/riffer/params/param.rb +15 -31
- data/lib/riffer/params.rb +15 -39
- data/lib/riffer/providers/amazon_bedrock.rb +104 -44
- data/lib/riffer/providers/anthropic.rb +11 -26
- data/lib/riffer/providers/azure_open_ai.rb +3 -8
- data/lib/riffer/providers/base.rb +30 -32
- data/lib/riffer/providers/finish_reason.rb +0 -6
- data/lib/riffer/providers/gemini/client.rb +4 -17
- data/lib/riffer/providers/gemini.rb +6 -12
- data/lib/riffer/providers/mock.rb +18 -27
- data/lib/riffer/providers/open_ai.rb +12 -21
- data/lib/riffer/providers/open_router.rb +109 -33
- data/lib/riffer/providers/repository.rb +2 -14
- data/lib/riffer/providers/token_usage.rb +19 -12
- data/lib/riffer/registrable.rb +11 -45
- data/lib/riffer/runner/fibers.rb +1 -6
- data/lib/riffer/runner/sequential.rb +0 -1
- data/lib/riffer/runner/threaded.rb +0 -3
- data/lib/riffer/runner.rb +0 -3
- data/lib/riffer/skills/activate_tool.rb +0 -3
- data/lib/riffer/skills/adapter.rb +0 -8
- data/lib/riffer/skills/backend.rb +2 -7
- data/lib/riffer/skills/config.rb +13 -17
- data/lib/riffer/skills/context.rb +0 -29
- data/lib/riffer/skills/filesystem_backend.rb +0 -7
- data/lib/riffer/skills/frontmatter.rb +2 -16
- data/lib/riffer/skills/markdown_adapter.rb +3 -6
- data/lib/riffer/skills/xml_adapter.rb +0 -3
- data/lib/riffer/stream_events/base.rb +0 -3
- data/lib/riffer/stream_events/finish_reason_done.rb +1 -6
- data/lib/riffer/stream_events/guardrail_modification.rb +0 -10
- data/lib/riffer/stream_events/guardrail_tripwire.rb +0 -10
- data/lib/riffer/stream_events/interrupt.rb +2 -12
- data/lib/riffer/stream_events/reasoning_delta.rb +0 -3
- data/lib/riffer/stream_events/reasoning_done.rb +6 -8
- data/lib/riffer/stream_events/skill_activation.rb +0 -3
- data/lib/riffer/stream_events/text_delta.rb +0 -2
- data/lib/riffer/stream_events/text_done.rb +0 -2
- data/lib/riffer/stream_events/token_usage_done.rb +0 -2
- data/lib/riffer/stream_events/tool_call_delta.rb +1 -5
- data/lib/riffer/stream_events/tool_call_done.rb +0 -5
- data/lib/riffer/stream_events/web_search_done.rb +0 -3
- data/lib/riffer/stream_events/web_search_status.rb +1 -5
- data/lib/riffer/testing/minitest.rb +4 -5
- data/lib/riffer/testing.rb +5 -38
- data/lib/riffer/tool.rb +2 -28
- data/lib/riffer/tools/response.rb +3 -32
- data/lib/riffer/tools/runtime/fibers.rb +0 -6
- data/lib/riffer/tools/runtime/inline.rb +0 -1
- data/lib/riffer/tools/runtime/threaded.rb +0 -6
- data/lib/riffer/tools/runtime.rb +8 -30
- data/lib/riffer/tools/toolable.rb +0 -37
- data/lib/riffer/tracing/capture.rb +5 -9
- data/lib/riffer/tracing/no_op.rb +0 -7
- data/lib/riffer/tracing/otel.rb +7 -16
- data/lib/riffer/tracing/stream_recorder.rb +0 -7
- data/lib/riffer/tracing.rb +4 -27
- data/lib/riffer/version.rb +1 -1
- data/lib/riffer.rb +2 -30
- data/sig/generated/riffer/agent/config.rbs +24 -46
- data/sig/generated/riffer/agent/context.rbs +2 -26
- data/sig/generated/riffer/agent/outcome.rbs +0 -20
- data/sig/generated/riffer/agent/response.rbs +4 -27
- data/sig/generated/riffer/agent/run.rbs +12 -31
- data/sig/generated/riffer/agent/serializer.rbs +2 -27
- data/sig/generated/riffer/agent/session/repair.rbs +2 -10
- data/sig/generated/riffer/agent/session.rbs +10 -36
- data/sig/generated/riffer/agent/structured_output/result.rbs +0 -7
- data/sig/generated/riffer/agent/structured_output.rbs +0 -7
- data/sig/generated/riffer/agent.rbs +25 -125
- data/sig/generated/riffer/config/amazon_bedrock.rbs +21 -0
- data/sig/generated/riffer/config/anthropic.rbs +15 -0
- data/sig/generated/riffer/config/azure_open_ai.rbs +21 -0
- data/sig/generated/riffer/config/evals.rbs +13 -0
- data/sig/generated/riffer/config/files.rbs +43 -0
- data/sig/generated/riffer/config/gemini.rbs +15 -0
- data/sig/generated/riffer/config/mcp.rbs +19 -0
- data/sig/generated/riffer/config/open_ai.rbs +21 -0
- data/sig/generated/riffer/config/open_router.rbs +15 -0
- data/sig/generated/riffer/config/pricing/rates.rbs +19 -0
- data/sig/generated/riffer/config/pricing.rbs +31 -0
- data/sig/generated/riffer/config/skills.rbs +19 -0
- data/sig/generated/riffer/config/tracing.rbs +25 -0
- data/sig/generated/riffer/config.rbs +2 -307
- data/sig/generated/riffer/evals/evaluator.rbs +12 -21
- data/sig/generated/riffer/evals/evaluator_runner.rbs +0 -14
- data/sig/generated/riffer/evals/judge.rbs +4 -8
- data/sig/generated/riffer/evals/result.rbs +1 -11
- data/sig/generated/riffer/evals/run_result.rbs +0 -12
- data/sig/generated/riffer/evals/scenario_result.rbs +0 -14
- data/sig/generated/riffer/files/resolver.rbs +6 -13
- data/sig/generated/riffer/guardrail.rbs +2 -22
- data/sig/generated/riffer/guardrails/modification.rbs +0 -6
- data/sig/generated/riffer/guardrails/result.rbs +0 -15
- data/sig/generated/riffer/guardrails/runner.rbs +0 -11
- data/sig/generated/riffer/guardrails/tripwire.rbs +0 -8
- data/sig/generated/riffer/guardrails.rbs +0 -2
- data/sig/generated/riffer/helpers/boolean.rbs +0 -4
- data/sig/generated/riffer/helpers/call_or_value.rbs +0 -3
- data/sig/generated/riffer/helpers/deep_dup.rbs +13 -0
- data/sig/generated/riffer/helpers/dependencies.rbs +0 -4
- data/sig/generated/riffer/helpers/identifier.rbs +0 -12
- data/sig/generated/riffer/helpers/validate.rbs +21 -0
- data/sig/generated/riffer/mcp/authenticated_tool.rbs +0 -5
- data/sig/generated/riffer/mcp/client.rbs +0 -7
- data/sig/generated/riffer/mcp/manifest.rbs +3 -7
- data/sig/generated/riffer/mcp/registration.rbs +0 -10
- data/sig/generated/riffer/mcp/registry.rbs +0 -9
- data/sig/generated/riffer/mcp/search_tool.rbs +0 -4
- data/sig/generated/riffer/mcp/tool.rbs +0 -4
- data/sig/generated/riffer/mcp/tool_factory.rbs +0 -6
- data/sig/generated/riffer/mcp.rbs +2 -22
- data/sig/generated/riffer/messages/assistant/reasoning_part.rbs +45 -0
- data/sig/generated/riffer/messages/assistant/tool_call.rbs +34 -0
- data/sig/generated/riffer/messages/assistant.rbs +25 -31
- data/sig/generated/riffer/messages/base.rbs +0 -12
- data/sig/generated/riffer/messages/system.rbs +4 -1
- data/sig/generated/riffer/messages/tool.rbs +4 -10
- data/sig/generated/riffer/messages/user/file_part.rbs +76 -0
- data/sig/generated/riffer/messages/user.rbs +7 -5
- data/sig/generated/riffer/params/boolean.rbs +1 -4
- data/sig/generated/riffer/params/param.rbs +7 -31
- data/sig/generated/riffer/params.rbs +8 -38
- data/sig/generated/riffer/providers/amazon_bedrock.rbs +33 -29
- data/sig/generated/riffer/providers/anthropic.rbs +2 -12
- data/sig/generated/riffer/providers/azure_open_ai.rbs +0 -8
- data/sig/generated/riffer/providers/base.rbs +18 -34
- data/sig/generated/riffer/providers/finish_reason.rbs +0 -6
- data/sig/generated/riffer/providers/gemini/client.rbs +4 -17
- data/sig/generated/riffer/providers/gemini.rbs +4 -10
- data/sig/generated/riffer/providers/mock.rbs +6 -27
- data/sig/generated/riffer/providers/open_ai.rbs +6 -13
- data/sig/generated/riffer/providers/open_router.rbs +37 -18
- data/sig/generated/riffer/providers/repository.rbs +2 -14
- data/sig/generated/riffer/providers/token_usage.rbs +9 -12
- data/sig/generated/riffer/registrable.rbs +0 -45
- data/sig/generated/riffer/runner/fibers.rbs +0 -6
- data/sig/generated/riffer/runner/sequential.rbs +0 -1
- data/sig/generated/riffer/runner/threaded.rbs +0 -3
- data/sig/generated/riffer/runner.rbs +0 -3
- data/sig/generated/riffer/skills/activate_tool.rbs +0 -3
- data/sig/generated/riffer/skills/adapter.rbs +0 -8
- data/sig/generated/riffer/skills/backend.rbs +2 -7
- data/sig/generated/riffer/skills/config.rbs +6 -17
- data/sig/generated/riffer/skills/context.rbs +0 -29
- data/sig/generated/riffer/skills/filesystem_backend.rbs +0 -7
- data/sig/generated/riffer/skills/frontmatter.rbs +2 -16
- data/sig/generated/riffer/skills/markdown_adapter.rbs +0 -6
- data/sig/generated/riffer/skills/xml_adapter.rbs +0 -3
- data/sig/generated/riffer/stream_events/base.rbs +0 -3
- data/sig/generated/riffer/stream_events/finish_reason_done.rbs +1 -6
- data/sig/generated/riffer/stream_events/guardrail_modification.rbs +0 -10
- data/sig/generated/riffer/stream_events/guardrail_tripwire.rbs +0 -10
- data/sig/generated/riffer/stream_events/interrupt.rbs +2 -10
- data/sig/generated/riffer/stream_events/reasoning_delta.rbs +0 -3
- data/sig/generated/riffer/stream_events/reasoning_done.rbs +4 -6
- data/sig/generated/riffer/stream_events/skill_activation.rbs +0 -3
- data/sig/generated/riffer/stream_events/text_delta.rbs +0 -2
- data/sig/generated/riffer/stream_events/text_done.rbs +0 -2
- data/sig/generated/riffer/stream_events/token_usage_done.rbs +0 -2
- data/sig/generated/riffer/stream_events/tool_call_delta.rbs +1 -5
- data/sig/generated/riffer/stream_events/tool_call_done.rbs +0 -5
- data/sig/generated/riffer/stream_events/web_search_done.rbs +0 -3
- data/sig/generated/riffer/stream_events/web_search_status.rbs +1 -5
- data/sig/generated/riffer/testing.rbs +0 -38
- data/sig/generated/riffer/tool.rbs +0 -27
- data/sig/generated/riffer/tools/response.rbs +3 -29
- data/sig/generated/riffer/tools/runtime/fibers.rbs +0 -5
- data/sig/generated/riffer/tools/runtime/inline.rbs +0 -1
- data/sig/generated/riffer/tools/runtime/threaded.rbs +0 -5
- data/sig/generated/riffer/tools/runtime.rbs +4 -26
- data/sig/generated/riffer/tools/toolable.rbs +0 -37
- data/sig/generated/riffer/tracing/capture.rbs +6 -9
- data/sig/generated/riffer/tracing/no_op.rbs +0 -7
- data/sig/generated/riffer/tracing/otel.rbs +7 -16
- data/sig/generated/riffer/tracing/stream_recorder.rbs +0 -2
- data/sig/generated/riffer/tracing.rbs +4 -23
- data/sig/generated/riffer.rbs +2 -29
- data/sig/manual/riffer/helpers/deep_dup.rbs +5 -0
- data/sig/manual/riffer/helpers/validate.rbs +5 -0
- metadata +39 -3
- data/sig/generated/riffer/messages/file_part.rbs +0 -101
|
@@ -1,42 +1,30 @@
|
|
|
1
1
|
# Generated from lib/riffer/messages/base.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Base class for all message types. Subclasses must implement +role+.
|
|
4
3
|
class Riffer::Messages::Base
|
|
5
|
-
# Builds the matching message subclass from a hash, or returns +msg+ unchanged
|
|
6
|
-
# when it is already a message. Raises Riffer::ArgumentError on an invalid message.
|
|
7
4
|
# --
|
|
8
5
|
# : ((Hash[Symbol, untyped] | Riffer::Messages::Base)) -> Riffer::Messages::Base
|
|
9
6
|
def self.from_hash: (Hash[Symbol, untyped] | Riffer::Messages::Base) -> Riffer::Messages::Base
|
|
10
7
|
|
|
11
|
-
# The message content.
|
|
12
8
|
attr_reader content: String
|
|
13
9
|
|
|
14
|
-
# The message id, or nil when +Riffer.config.message_id_strategy+ is +:none+.
|
|
15
10
|
attr_reader id: String?
|
|
16
11
|
|
|
17
12
|
# --
|
|
18
13
|
# : (String, ?id: String?) -> void
|
|
19
14
|
def initialize: (String, ?id: String?) -> void
|
|
20
15
|
|
|
21
|
-
# Converts the message to a hash.
|
|
22
|
-
#
|
|
23
16
|
# --
|
|
24
17
|
# : () -> Hash[Symbol, untyped]
|
|
25
18
|
def to_h: () -> Hash[Symbol, untyped]
|
|
26
19
|
|
|
27
|
-
# Returns the message role.
|
|
28
20
|
# --
|
|
29
21
|
# : () -> Symbol
|
|
30
22
|
def role: () -> Symbol
|
|
31
23
|
|
|
32
|
-
# Whether this message carries pending tool calls (overridden by
|
|
33
|
-
# +Riffer::Messages::Assistant+).
|
|
34
24
|
# --
|
|
35
25
|
# : () -> bool
|
|
36
26
|
def has_tool_calls?: () -> bool
|
|
37
27
|
|
|
38
|
-
# Merges another same-role message into this one. +Tool+ messages are never
|
|
39
|
-
# merged.
|
|
40
28
|
# --
|
|
41
29
|
# : (untyped) -> Riffer::Messages::Base
|
|
42
30
|
def +: (untyped) -> Riffer::Messages::Base
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
# Generated from lib/riffer/messages/system.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Represents a system message (instructions) in a conversation.
|
|
4
3
|
class Riffer::Messages::System < Riffer::Messages::Base
|
|
4
|
+
# --
|
|
5
|
+
# : ((Hash[Symbol, untyped] | Riffer::Messages::System)) -> Riffer::Messages::System
|
|
6
|
+
def self.from_hash: (Hash[Symbol, untyped] | Riffer::Messages::System) -> Riffer::Messages::System
|
|
7
|
+
|
|
5
8
|
# --
|
|
6
9
|
# : () -> Symbol
|
|
7
10
|
def role: () -> Symbol
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
# Generated from lib/riffer/messages/tool.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Represents a tool execution result in a conversation.
|
|
4
3
|
class Riffer::Messages::Tool < Riffer::Messages::Base
|
|
5
|
-
#
|
|
4
|
+
# --
|
|
5
|
+
# : ((Hash[Symbol, untyped] | Riffer::Messages::Tool)) -> Riffer::Messages::Tool
|
|
6
|
+
def self.from_hash: (Hash[Symbol, untyped] | Riffer::Messages::Tool) -> Riffer::Messages::Tool
|
|
7
|
+
|
|
6
8
|
attr_reader tool_call_id: String
|
|
7
9
|
|
|
8
|
-
# The name of the tool that was called.
|
|
9
10
|
attr_reader name: String
|
|
10
11
|
|
|
11
|
-
# The error message if the tool execution failed.
|
|
12
12
|
attr_reader error: String?
|
|
13
13
|
|
|
14
|
-
# The type of error (:unknown_tool, :validation_error, :execution_error,
|
|
15
|
-
# :timeout_error, :unhandled_error).
|
|
16
14
|
attr_reader error_type: Symbol?
|
|
17
15
|
|
|
18
16
|
# --
|
|
19
17
|
# : (String, tool_call_id: String, name: String, ?id: String?, ?error: String?, ?error_type: Symbol?) -> void
|
|
20
18
|
def initialize: (String, tool_call_id: String, name: String, ?id: String?, ?error: String?, ?error_type: Symbol?) -> void
|
|
21
19
|
|
|
22
|
-
# Returns true if the tool execution resulted in an error.
|
|
23
|
-
#
|
|
24
20
|
# --
|
|
25
21
|
# : () -> bool
|
|
26
22
|
def error?: () -> bool
|
|
@@ -29,8 +25,6 @@ class Riffer::Messages::Tool < Riffer::Messages::Base
|
|
|
29
25
|
# : () -> Symbol
|
|
30
26
|
def role: () -> Symbol
|
|
31
27
|
|
|
32
|
-
# Converts the message to a hash.
|
|
33
|
-
#
|
|
34
28
|
# --
|
|
35
29
|
# : () -> Hash[Symbol, untyped]
|
|
36
30
|
def to_h: () -> Hash[Symbol, untyped]
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Generated from lib/riffer/messages/user/file_part.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
class Riffer::Messages::User::FilePart
|
|
4
|
+
@data_bytes: String?
|
|
5
|
+
|
|
6
|
+
@downloaded_data: String?
|
|
7
|
+
|
|
8
|
+
@data: String?
|
|
9
|
+
|
|
10
|
+
@url_string: String?
|
|
11
|
+
|
|
12
|
+
MEDIA_TYPES: Hash[String, String]
|
|
13
|
+
|
|
14
|
+
SUPPORTED_MEDIA_TYPES: Array[String]
|
|
15
|
+
|
|
16
|
+
SHA256_PATTERN: Regexp
|
|
17
|
+
|
|
18
|
+
attr_reader media_type: String
|
|
19
|
+
|
|
20
|
+
attr_reader filename: String?
|
|
21
|
+
|
|
22
|
+
attr_reader sha256: String?
|
|
23
|
+
|
|
24
|
+
# --
|
|
25
|
+
# : (media_type: String, ?data: String?, ?filename: String?, ?url: String?, ?sha256: String?) -> void
|
|
26
|
+
def initialize: (media_type: String, ?data: String?, ?filename: String?, ?url: String?, ?sha256: String?) -> void
|
|
27
|
+
|
|
28
|
+
# --
|
|
29
|
+
# : (String, ?media_type: String?, ?filename: String?, ?sha256: String?) -> Riffer::Messages::User::FilePart
|
|
30
|
+
def self.from_url: (String, ?media_type: String?, ?filename: String?, ?sha256: String?) -> Riffer::Messages::User::FilePart
|
|
31
|
+
|
|
32
|
+
# --
|
|
33
|
+
# : ((Hash[Symbol, untyped] | Riffer::Messages::User::FilePart)) -> Riffer::Messages::User::FilePart
|
|
34
|
+
def self.from_hash: (Hash[Symbol, untyped] | Riffer::Messages::User::FilePart) -> Riffer::Messages::User::FilePart
|
|
35
|
+
|
|
36
|
+
# --
|
|
37
|
+
# : (String) -> String
|
|
38
|
+
def self.detect_media_type: (String) -> String
|
|
39
|
+
|
|
40
|
+
# --
|
|
41
|
+
# : () -> String?
|
|
42
|
+
def data: () -> String?
|
|
43
|
+
|
|
44
|
+
# : () -> String?
|
|
45
|
+
def data_bytes: () -> String?
|
|
46
|
+
|
|
47
|
+
# : (String) -> void
|
|
48
|
+
def cache_data_bytes: (String) -> void
|
|
49
|
+
|
|
50
|
+
# : () -> bool
|
|
51
|
+
def inline_data?: () -> bool
|
|
52
|
+
|
|
53
|
+
# --
|
|
54
|
+
# : (String) -> void
|
|
55
|
+
def cache_downloaded_data: (String) -> void
|
|
56
|
+
|
|
57
|
+
# --
|
|
58
|
+
# : () -> String?
|
|
59
|
+
def url: () -> String?
|
|
60
|
+
|
|
61
|
+
# --
|
|
62
|
+
# : () -> bool
|
|
63
|
+
def url?: () -> bool
|
|
64
|
+
|
|
65
|
+
# --
|
|
66
|
+
# : () -> bool
|
|
67
|
+
def image?: () -> bool
|
|
68
|
+
|
|
69
|
+
# --
|
|
70
|
+
# : () -> bool
|
|
71
|
+
def document?: () -> bool
|
|
72
|
+
|
|
73
|
+
# --
|
|
74
|
+
# : () -> Hash[Symbol, untyped]
|
|
75
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
76
|
+
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# Generated from lib/riffer/messages/user.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Represents a user message in a conversation.
|
|
4
3
|
class Riffer::Messages::User < Riffer::Messages::Base
|
|
5
|
-
#
|
|
6
|
-
|
|
4
|
+
# --
|
|
5
|
+
# : ((Hash[Symbol, untyped] | Riffer::Messages::User)) -> Riffer::Messages::User
|
|
6
|
+
def self.from_hash: (Hash[Symbol, untyped] | Riffer::Messages::User) -> Riffer::Messages::User
|
|
7
|
+
|
|
8
|
+
attr_reader files: Array[Riffer::Messages::User::FilePart]
|
|
7
9
|
|
|
8
10
|
# --
|
|
9
|
-
# : (String, ?id: String?, ?files: Array[Riffer::Messages::FilePart]) -> void
|
|
10
|
-
def initialize: (String, ?id: String?, ?files: Array[Riffer::Messages::FilePart]) -> void
|
|
11
|
+
# : (String, ?id: String?, ?files: Array[Riffer::Messages::User::FilePart]) -> void
|
|
12
|
+
def initialize: (String, ?id: String?, ?files: Array[Riffer::Messages::User::FilePart]) -> void
|
|
11
13
|
|
|
12
14
|
# --
|
|
13
15
|
# : () -> Symbol
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Generated from lib/riffer/params/boolean.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
# (+true+/+false+ are +TrueClass+/+FalseClass+).
|
|
5
|
-
#
|
|
6
|
-
# required :verbose, Riffer::Params::Boolean
|
|
3
|
+
# Ruby has no +Boolean+ class, so params declare booleans with this sentinel.
|
|
7
4
|
module Riffer::Params::Boolean
|
|
8
5
|
end
|
|
@@ -1,44 +1,28 @@
|
|
|
1
1
|
# Generated from lib/riffer/params/param.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# A single parameter definition, handling type validation and JSON Schema
|
|
4
|
-
# generation.
|
|
5
3
|
class Riffer::Params::Param
|
|
6
|
-
# Maps Ruby types to JSON Schema type strings
|
|
7
4
|
TYPE_MAPPINGS: Hash[Module, String]
|
|
8
5
|
|
|
9
|
-
# Primitive types allowed for the <tt>of:</tt> keyword on Array params
|
|
10
6
|
PRIMITIVE_TYPES: Array[Module]
|
|
11
7
|
|
|
12
|
-
# Maps JSON Schema type strings back to Ruby types (inverse of TYPE_MAPPINGS),
|
|
13
|
-
# collapsing the three boolean spellings onto Riffer::Params::Boolean.
|
|
14
8
|
JSON_TYPE_MAPPINGS: Hash[String, Module]
|
|
15
9
|
|
|
16
|
-
# The parameter name.
|
|
17
10
|
attr_reader name: Symbol
|
|
18
11
|
|
|
19
|
-
# The Ruby type.
|
|
20
12
|
attr_reader type: Module
|
|
21
13
|
|
|
22
|
-
# Whether the parameter is required.
|
|
23
14
|
attr_reader required: bool
|
|
24
15
|
|
|
25
|
-
# The parameter description, if any.
|
|
26
16
|
attr_reader description: String?
|
|
27
17
|
|
|
28
|
-
# Allowed values, if constrained.
|
|
29
18
|
attr_reader enum: Array[untyped]?
|
|
30
19
|
|
|
31
|
-
# The default value, if any.
|
|
32
20
|
attr_reader default: untyped
|
|
33
21
|
|
|
34
|
-
# Element type for a typed array (+of:+).
|
|
35
22
|
attr_reader item_type: Module?
|
|
36
23
|
|
|
37
|
-
# Nested Params for object / array-of-object types.
|
|
38
24
|
attr_reader nested_params: Riffer::Params?
|
|
39
25
|
|
|
40
|
-
# Reconstructs a Param from a single JSON Schema property. Raises
|
|
41
|
-
# Riffer::ArgumentError on a type outside the Params-expressible subset.
|
|
42
26
|
# --
|
|
43
27
|
# : (Symbol, Hash[Symbol, untyped], required: bool) -> Riffer::Params::Param
|
|
44
28
|
def self.from_json_schema: (Symbol, Hash[Symbol, untyped], required: bool) -> Riffer::Params::Param
|
|
@@ -47,9 +31,6 @@ class Riffer::Params::Param
|
|
|
47
31
|
# : (Module, Hash[Symbol, untyped]) -> [Module?, Riffer::Params?]
|
|
48
32
|
def self.resolve_nesting: (Module, Hash[Symbol, untyped]) -> [ Module?, Riffer::Params? ]
|
|
49
33
|
|
|
50
|
-
# Resolves a JSON Schema +type+ (or a <tt>[type, "null"]</tt> union) to its
|
|
51
|
-
# Ruby type. Returns a Module — Riffer::Params::Boolean is a Module, not a
|
|
52
|
-
# Class. Raises Riffer::ArgumentError on an unsupported type.
|
|
53
34
|
# --
|
|
54
35
|
# : (untyped) -> Module
|
|
55
36
|
def self.json_type_to_ruby: (untyped) -> Module
|
|
@@ -58,32 +39,27 @@ class Riffer::Params::Param
|
|
|
58
39
|
# : (name: Symbol, type: Module, required: bool, ?description: String?, ?enum: Array[untyped]?, ?default: untyped, ?item_type: Module?, ?nested_params: Riffer::Params?) -> void
|
|
59
40
|
def initialize: (name: Symbol, type: Module, required: bool, ?description: String?, ?enum: Array[untyped]?, ?default: untyped, ?item_type: Module?, ?nested_params: Riffer::Params?) -> void
|
|
60
41
|
|
|
61
|
-
# Validates that a value matches the expected type.
|
|
62
|
-
#
|
|
63
42
|
# --
|
|
64
43
|
# : (untyped) -> bool
|
|
65
44
|
def valid_type?: (untyped) -> bool
|
|
66
45
|
|
|
67
|
-
# Returns the JSON Schema type name for this parameter.
|
|
68
|
-
#
|
|
69
46
|
# --
|
|
70
47
|
# : () -> String
|
|
71
48
|
def type_name: () -> String
|
|
72
49
|
|
|
73
|
-
# Converts this parameter to JSON Schema format. When +strict+, optional
|
|
74
|
-
# params are made nullable (<tt>["type", "null"]</tt>) so strict providers
|
|
75
|
-
# distinguish absent from present; optional params with an +enum+ use +anyOf+
|
|
76
|
-
# instead, since providers like Anthropic reject
|
|
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+.
|
|
81
50
|
# --
|
|
82
51
|
# : (?strict: bool) -> Hash[Symbol, untyped]
|
|
83
52
|
def to_json_schema: (?strict: bool) -> Hash[Symbol, untyped]
|
|
84
53
|
|
|
85
54
|
private
|
|
86
55
|
|
|
56
|
+
# +dup+ would leave the copy sharing this one's nested Params, enum list and
|
|
57
|
+
# default, so defining a parameter or editing either value on one would reach
|
|
58
|
+
# the other.
|
|
59
|
+
# --
|
|
60
|
+
# : (Riffer::Params::Param) -> void
|
|
61
|
+
def initialize_copy: (Riffer::Params::Param) -> void
|
|
62
|
+
|
|
87
63
|
# --
|
|
88
64
|
# : () -> void
|
|
89
65
|
def validate_strict_shape!: () -> void
|
|
@@ -1,67 +1,42 @@
|
|
|
1
1
|
# Generated from lib/riffer/params.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# A DSL for defining tool parameters and structured-output schemas, used within
|
|
4
|
-
# a Tool's +params+ block.
|
|
5
|
-
#
|
|
6
|
-
# params do
|
|
7
|
-
# required :city, String, description: "The city name"
|
|
8
|
-
# optional :units, String, default: "celsius", enum: ["celsius", "fahrenheit"]
|
|
9
|
-
# end
|
|
10
3
|
class Riffer::Params
|
|
11
|
-
# The defined parameters.
|
|
12
4
|
attr_reader parameters: Array[Riffer::Params::Param]
|
|
13
5
|
|
|
14
6
|
# --
|
|
15
7
|
# : () -> void
|
|
16
8
|
def initialize: () -> void
|
|
17
9
|
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
# outside the Params-expressible subset of JSON Schema.
|
|
21
|
-
#
|
|
22
|
-
# schema = params.to_json_schema(strict: false)
|
|
23
|
-
# Riffer::Params.from_json_schema(schema) # => equivalent Riffer::Params
|
|
24
|
-
#
|
|
10
|
+
# The inverse of +to_json_schema(strict: false)+. Raises Riffer::ArgumentError
|
|
11
|
+
# on features outside the Params-expressible subset of JSON Schema.
|
|
25
12
|
# --
|
|
26
13
|
# : (Hash[Symbol, untyped]) -> Riffer::Params
|
|
27
14
|
def self.from_json_schema: (Hash[Symbol, untyped]) -> Riffer::Params
|
|
28
15
|
|
|
29
|
-
# Defines a required parameter.
|
|
30
|
-
#
|
|
31
16
|
# --
|
|
32
17
|
# : (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?of: Module?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
33
18
|
def required: (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?of: Module?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
34
19
|
|
|
35
|
-
# Defines an optional parameter.
|
|
36
|
-
#
|
|
37
20
|
# --
|
|
38
21
|
# : (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?default: untyped, ?of: Module?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
39
22
|
def optional: (Symbol, Module, ?description: String?, ?enum: Array[untyped]?, ?default: untyped, ?of: Module?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> void
|
|
40
23
|
|
|
41
|
-
# Validates arguments against parameter definitions.
|
|
42
|
-
#
|
|
43
|
-
# A Float param accepts an Integer (JSON Schema <tt>"number"</tt> covers
|
|
44
|
-
# integers) and its value is coerced with +to_f+, so callers always get a
|
|
45
|
-
# Float. The same holds for the items of an <tt>of: Float</tt> array. No other
|
|
46
|
-
# type is coerced.
|
|
47
|
-
#
|
|
48
|
-
# Raises Riffer::ValidationError if validation fails.
|
|
49
|
-
#
|
|
50
24
|
# --
|
|
51
25
|
# : (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
52
26
|
def validate: (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
53
27
|
|
|
54
|
-
# Converts all parameters to JSON Schema format. When +strict+ is true, every
|
|
55
|
-
# property is listed in +required+ and optional ones are made nullable
|
|
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>.
|
|
59
28
|
# --
|
|
60
29
|
# : (?strict: bool) -> Hash[Symbol, untyped]
|
|
61
30
|
def to_json_schema: (?strict: bool) -> Hash[Symbol, untyped]
|
|
62
31
|
|
|
63
32
|
private
|
|
64
33
|
|
|
34
|
+
# Without this, +dup+ shares parameters, so defining one on either copy
|
|
35
|
+
# would reach the other.
|
|
36
|
+
# --
|
|
37
|
+
# : (Riffer::Params) -> void
|
|
38
|
+
def initialize_copy: (Riffer::Params) -> void
|
|
39
|
+
|
|
65
40
|
# --
|
|
66
41
|
# : (Module, Module?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> Riffer::Params?
|
|
67
42
|
def build_nested: (Module, Module?) ?{ (Riffer::Params) [self: Riffer::Params] -> void } -> Riffer::Params?
|
|
@@ -78,15 +53,10 @@ class Riffer::Params
|
|
|
78
53
|
# : (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
79
54
|
def validate_nested_array_of_objects: (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
80
55
|
|
|
81
|
-
# Returns the array with its valid items coerced by +coerce_value+.
|
|
82
56
|
# --
|
|
83
57
|
# : (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
84
58
|
def validate_typed_array: (Riffer::Params::Param, Array[untyped], Array[String]) -> Array[untyped]
|
|
85
59
|
|
|
86
|
-
# Coerces an already-validated value to the Ruby type its param declares.
|
|
87
|
-
# Only Float coerces today, because JSON Schema "number" accepts integers and
|
|
88
|
-
# callers should not get a type that depends on whether the model wrote a
|
|
89
|
-
# decimal point. Add a branch here rather than inline at a call site.
|
|
90
60
|
# --
|
|
91
61
|
# : (Module, untyped) -> untyped
|
|
92
62
|
def coerce_value: (Module, untyped) -> untyped
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
# Generated from lib/riffer/providers/amazon_bedrock.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Amazon Bedrock provider for Claude and other foundation models. Requires the
|
|
4
|
-
# +aws-sdk-bedrockruntime+ gem.
|
|
5
3
|
class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
6
|
-
#
|
|
7
|
-
# cross-region (+us.anthropic.claude-...+) ids.
|
|
4
|
+
# Bedrock ids are bare (+anthropic.claude-...+) or cross-region (+us.anthropic.claude-...+).
|
|
8
5
|
ANTHROPIC_MODEL_PATTERN: Regexp
|
|
9
6
|
|
|
10
7
|
FINISH_REASONS: Hash[String, Symbol]
|
|
11
8
|
|
|
12
|
-
#
|
|
13
|
-
#
|
|
9
|
+
# Only parts carrying this tag are replayed, so reasoning captured by another
|
|
10
|
+
# adapter, whose signatures Converse cannot verify, never reaches the request.
|
|
11
|
+
REASONING_FORMAT: String
|
|
12
|
+
|
|
14
13
|
# --
|
|
15
14
|
# : (?String?) -> singleton(Riffer::Skills::Adapter)
|
|
16
15
|
def self.skills_adapter: (?String?) -> singleton(Riffer::Skills::Adapter)
|
|
17
16
|
|
|
18
|
-
# The GenAI semconv well-known provider name.
|
|
19
17
|
# --
|
|
20
18
|
# : () -> String
|
|
21
19
|
def self.semconv_provider_name: () -> String
|
|
@@ -25,8 +23,8 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
25
23
|
def initialize: () -> void
|
|
26
24
|
|
|
27
25
|
# --
|
|
28
|
-
# : (Riffer::Messages::FilePart) -> Symbol
|
|
29
|
-
def file_delivery: (Riffer::Messages::FilePart) -> Symbol
|
|
26
|
+
# : (Riffer::Messages::User::FilePart) -> Symbol
|
|
27
|
+
def file_delivery: (Riffer::Messages::User::FilePart) -> Symbol
|
|
30
28
|
|
|
31
29
|
private
|
|
32
30
|
|
|
@@ -34,9 +32,6 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
34
32
|
# : () -> untyped
|
|
35
33
|
def global_client: () -> untyped
|
|
36
34
|
|
|
37
|
-
# Compacted so an unset region stays absent: the AWS SDK resolves +AWS_REGION+
|
|
38
|
-
# and the shared config only for a missing argument, and raises
|
|
39
|
-
# +Aws::Errors::MissingRegionError+ on an explicit nil.
|
|
40
35
|
# --
|
|
41
36
|
# : () -> untyped
|
|
42
37
|
def build_client: () -> untyped
|
|
@@ -45,10 +40,6 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
45
40
|
# : (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
46
41
|
def build_request_params: (Array[Riffer::Messages::Base], String?, Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
47
42
|
|
|
48
|
-
# Converse treats +tools -> system -> messages+ as one prefix and looks back
|
|
49
|
-
# from a +cachePoint+ for the longest cached run, so the point on the final
|
|
50
|
-
# message reuses the previous step's cache wherever that point sat. Mixed
|
|
51
|
-
# ttls must be ordered 1h before 5m, so both points share one.
|
|
52
43
|
# --
|
|
53
44
|
# : (Hash[Symbol, untyped], untyped) -> void
|
|
54
45
|
def apply_cache_point: (Hash[Symbol, untyped], untyped) -> void
|
|
@@ -65,8 +56,6 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
65
56
|
# : (untyped) -> Riffer::Providers::TokenUsage?
|
|
66
57
|
def extract_token_usage: (untyped) -> Riffer::Providers::TokenUsage?
|
|
67
58
|
|
|
68
|
-
# Converse's +input_tokens+ excludes the cache buckets; TokenUsage's
|
|
69
|
-
# input includes them.
|
|
70
59
|
# --
|
|
71
60
|
# : (untyped) -> Riffer::Providers::TokenUsage
|
|
72
61
|
def build_token_usage: (untyped) -> Riffer::Providers::TokenUsage
|
|
@@ -87,23 +76,24 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
87
76
|
# : (untyped) -> Array[Riffer::Messages::Assistant::ToolCall]
|
|
88
77
|
def extract_tool_calls: (untyped) -> Array[Riffer::Messages::Assistant::ToolCall]
|
|
89
78
|
|
|
79
|
+
# --
|
|
80
|
+
# : (untyped) -> Array[Riffer::Messages::Assistant::ReasoningPart]
|
|
81
|
+
def extract_reasoning: (untyped) -> Array[Riffer::Messages::Assistant::ReasoningPart]
|
|
82
|
+
|
|
83
|
+
# +redacted_content+ is raw bytes; it is stored Base64-encoded so the part
|
|
84
|
+
# survives JSON persistence.
|
|
85
|
+
# --
|
|
86
|
+
# : (?text: String?, ?signature: String?, ?redacted_content: String?) -> Riffer::Messages::Assistant::ReasoningPart
|
|
87
|
+
def build_reasoning_part: (?text: String?, ?signature: String?, ?redacted_content: String?) -> Riffer::Messages::Assistant::ReasoningPart
|
|
88
|
+
|
|
90
89
|
# --
|
|
91
90
|
# : (Hash[Symbol, untyped], Riffer::Providers::_EventSink) -> void
|
|
92
91
|
def execute_stream: (Hash[Symbol, untyped], Riffer::Providers::_EventSink) -> void
|
|
93
92
|
|
|
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
93
|
# --
|
|
98
94
|
# : (untyped) -> void
|
|
99
95
|
def raise_stream_event_error!: (untyped) -> void
|
|
100
96
|
|
|
101
|
-
# Re-raises a Bedrock stream-exception event as the matching
|
|
102
|
-
# +Aws::BedrockRuntime::Errors+ class. ConverseStream delivers API errors on
|
|
103
|
-
# the same channel as content, so without this a mid-stream failure would
|
|
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.
|
|
107
97
|
# --
|
|
108
98
|
# : (untyped) -> void
|
|
109
99
|
def raise_if_stream_exception!: (untyped) -> void
|
|
@@ -120,6 +110,16 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
120
110
|
# : (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
121
111
|
def handle_content_block_delta_tool_use: (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
122
112
|
|
|
113
|
+
# A reasoning block streams its text in pieces, then its signature (or its
|
|
114
|
+
# redacted bytes) in a delta of its own.
|
|
115
|
+
# --
|
|
116
|
+
# : (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
117
|
+
def handle_reasoning_delta: (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
118
|
+
|
|
119
|
+
# --
|
|
120
|
+
# : (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
121
|
+
def handle_reasoning_stop: (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
122
|
+
|
|
123
123
|
# --
|
|
124
124
|
# : (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
125
125
|
def handle_content_block_stop_text_delta: (untyped, state: Hash[Symbol, untyped], yielder: Riffer::Providers::_EventSink) -> void
|
|
@@ -140,13 +140,17 @@ class Riffer::Providers::AmazonBedrock < Riffer::Providers::Base
|
|
|
140
140
|
# : (Riffer::Messages::Assistant) -> Hash[Symbol, untyped]
|
|
141
141
|
def convert_assistant_to_bedrock_format: (Riffer::Messages::Assistant) -> Hash[Symbol, untyped]
|
|
142
142
|
|
|
143
|
+
# --
|
|
144
|
+
# : (Riffer::Messages::Assistant::ReasoningPart) -> Hash[Symbol, untyped]
|
|
145
|
+
def convert_reasoning_part_to_bedrock_format: (Riffer::Messages::Assistant::ReasoningPart) -> Hash[Symbol, untyped]
|
|
146
|
+
|
|
143
147
|
# --
|
|
144
148
|
# : (Array[Hash[Symbol, untyped]], Riffer::Messages::Tool) -> void
|
|
145
149
|
def append_tool_result: (Array[Hash[Symbol, untyped]], Riffer::Messages::Tool) -> void
|
|
146
150
|
|
|
147
151
|
# --
|
|
148
|
-
# : (Riffer::Messages::FilePart) -> Hash[Symbol, untyped]
|
|
149
|
-
def convert_file_part_to_bedrock_format: (Riffer::Messages::FilePart) -> Hash[Symbol, untyped]
|
|
152
|
+
# : (Riffer::Messages::User::FilePart) -> Hash[Symbol, untyped]
|
|
153
|
+
def convert_file_part_to_bedrock_format: (Riffer::Messages::User::FilePart) -> Hash[Symbol, untyped]
|
|
150
154
|
|
|
151
155
|
BEDROCK_FORMAT_MAP: Hash[String, String]
|
|
152
156
|
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
# Generated from lib/riffer/providers/anthropic.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Anthropic provider for Claude models via the Anthropic API. Requires the
|
|
4
|
-
# +anthropic+ gem.
|
|
5
3
|
class Riffer::Providers::Anthropic < Riffer::Providers::Base
|
|
6
4
|
WEB_SEARCH_TOOL_TYPE: String
|
|
7
5
|
|
|
8
6
|
FINISH_REASONS: Hash[String, Symbol]
|
|
9
7
|
|
|
10
|
-
# Returns the XML skill adapter for Anthropic/Claude.
|
|
11
|
-
#
|
|
12
8
|
# --
|
|
13
9
|
# : (?String?) -> singleton(Riffer::Skills::Adapter)
|
|
14
10
|
def self.skills_adapter: (?String?) -> singleton(Riffer::Skills::Adapter)
|
|
15
11
|
|
|
16
|
-
# The GenAI semconv well-known provider name.
|
|
17
12
|
# --
|
|
18
13
|
# : () -> String
|
|
19
14
|
def self.semconv_provider_name: () -> String
|
|
@@ -28,9 +23,6 @@ class Riffer::Providers::Anthropic < Riffer::Providers::Base
|
|
|
28
23
|
# : () -> untyped
|
|
29
24
|
def global_client: () -> untyped
|
|
30
25
|
|
|
31
|
-
# Compacted for the same reason as the other providers: never hand an SDK an
|
|
32
|
-
# explicit nil credential, so its own +ANTHROPIC_API_KEY+ resolution stays
|
|
33
|
-
# reachable regardless of how that SDK distinguishes nil from absent.
|
|
34
26
|
# --
|
|
35
27
|
# : () -> untyped
|
|
36
28
|
def build_client: () -> untyped
|
|
@@ -55,8 +47,6 @@ class Riffer::Providers::Anthropic < Riffer::Providers::Base
|
|
|
55
47
|
# : (untyped) -> Riffer::Providers::FinishReason?
|
|
56
48
|
def build_finish_reason: (untyped) -> Riffer::Providers::FinishReason?
|
|
57
49
|
|
|
58
|
-
# Anthropic's +input_tokens+ excludes the cache buckets; TokenUsage's
|
|
59
|
-
# input includes them.
|
|
60
50
|
# --
|
|
61
51
|
# : (untyped) -> Riffer::Providers::TokenUsage
|
|
62
52
|
def build_token_usage: (untyped) -> Riffer::Providers::TokenUsage
|
|
@@ -126,8 +116,8 @@ class Riffer::Providers::Anthropic < Riffer::Providers::Base
|
|
|
126
116
|
def convert_assistant_to_anthropic_format: (Riffer::Messages::Assistant) -> Hash[Symbol, untyped]
|
|
127
117
|
|
|
128
118
|
# --
|
|
129
|
-
# : (Riffer::Messages::FilePart) -> Hash[Symbol, untyped]
|
|
130
|
-
def convert_file_part_to_anthropic_format: (Riffer::Messages::FilePart) -> Hash[Symbol, untyped]
|
|
119
|
+
# : (Riffer::Messages::User::FilePart) -> Hash[Symbol, untyped]
|
|
120
|
+
def convert_file_part_to_anthropic_format: (Riffer::Messages::User::FilePart) -> Hash[Symbol, untyped]
|
|
131
121
|
|
|
132
122
|
# --
|
|
133
123
|
# : (singleton(Riffer::Tool)) -> Hash[Symbol, untyped]
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
# Generated from lib/riffer/providers/azure_open_ai.rb with RBS::Inline
|
|
2
2
|
|
|
3
|
-
# Azure OpenAI provider for GPT models hosted on Azure. Requires the +openai+
|
|
4
|
-
# gem. Credentials resolve from config, then +AZURE_OPENAI_API_KEY+ /
|
|
5
|
-
# +AZURE_OPENAI_ENDPOINT+.
|
|
6
3
|
class Riffer::Providers::AzureOpenAI < Riffer::Providers::OpenAI
|
|
7
|
-
# The GenAI semconv well-known provider name.
|
|
8
4
|
# --
|
|
9
5
|
# : () -> String
|
|
10
6
|
def self.semconv_provider_name: () -> String
|
|
@@ -15,10 +11,6 @@ class Riffer::Providers::AzureOpenAI < Riffer::Providers::OpenAI
|
|
|
15
11
|
# : () -> untyped
|
|
16
12
|
def global_client: () -> untyped
|
|
17
13
|
|
|
18
|
-
# Deliberately not compacted: this borrows the OpenAI SDK to talk to Azure, so
|
|
19
|
-
# omitting an unset argument would let the SDK fall back to +OPENAI_API_KEY+
|
|
20
|
-
# and +OPENAI_BASE_URL+ — sending Azure traffic, and an OpenAI credential, to
|
|
21
|
-
# whatever those name. Passing nil raises in the SDK instead.
|
|
22
14
|
# --
|
|
23
15
|
# : () -> untyped
|
|
24
16
|
def build_client: () -> untyped
|