riffer-rig 0.6.0 → 0.8.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/CHANGELOG.md +44 -0
- data/README.md +38 -4
- data/exe/riffer +1 -1
- data/lib/riffer/rig/bundled/agents_md.rb +7 -0
- data/lib/riffer/rig/bundled/bash.rb +5 -0
- data/lib/riffer/rig/bundled/edit.rb +5 -0
- data/lib/riffer/rig/bundled/mcp.rb +9 -0
- data/lib/riffer/rig/bundled/read.rb +5 -0
- data/lib/riffer/rig/bundled/skills.rb +10 -0
- data/lib/riffer/rig/bundled/write.rb +5 -0
- data/lib/riffer/rig/bundled.rb +7 -0
- data/lib/riffer/rig/cli/flags.rb +77 -0
- data/lib/riffer/rig/cli.rb +69 -106
- data/lib/riffer/rig/command/context.rb +70 -0
- data/lib/riffer/rig/command.rb +29 -0
- data/lib/riffer/rig/commands/model.rb +54 -0
- data/lib/riffer/rig/commands/skill.rb +27 -0
- data/lib/riffer/rig/commands.rb +4 -0
- data/lib/riffer/rig/credentials.rb +2 -2
- data/lib/riffer/rig/directories.rb +20 -0
- data/lib/riffer/rig/env/invalid.rb +13 -0
- data/lib/riffer/rig/env.rb +12 -1
- data/lib/riffer/rig/events/after_response.rb +25 -0
- data/lib/riffer/rig/events/after_tool_call.rb +31 -0
- data/lib/riffer/rig/events/before_prompt.rb +25 -0
- data/lib/riffer/rig/events/before_request.rb +25 -0
- data/lib/riffer/rig/events/before_tool_call.rb +28 -0
- data/lib/riffer/rig/events/command_output.rb +3 -2
- data/lib/riffer/rig/events/notify.rb +3 -2
- data/lib/riffer/rig/events/session_end.rb +3 -2
- data/lib/riffer/rig/events/session_start.rb +3 -2
- data/lib/riffer/rig/events/skill_activated.rb +3 -2
- data/lib/riffer/rig/events/turn_end.rb +3 -2
- data/lib/riffer/rig/extension/failure.rb +16 -0
- data/lib/riffer/rig/extension.rb +16 -1
- data/lib/riffer/rig/hosts/mirror.rb +6 -7
- data/lib/riffer/rig/hosts/null.rb +1 -1
- data/lib/riffer/rig/loader.rb +240 -0
- data/lib/riffer/rig/mcp/declaration.rb +23 -0
- data/lib/riffer/rig/mcp/server.rb +16 -0
- data/lib/riffer/rig/mcp.rb +12 -0
- data/lib/riffer/rig/prompts/agents_md.rb +32 -0
- data/lib/riffer/rig/prompts.rb +4 -0
- data/lib/riffer/rig/registrar.rb +120 -5
- data/lib/riffer/rig/runtime/blocked.rb +13 -0
- data/lib/riffer/rig/runtime/hooks.rb +78 -0
- data/lib/riffer/rig/runtime/request_guardrail.rb +24 -0
- data/lib/riffer/rig/runtime/tool_runtime.rb +44 -0
- data/lib/riffer/rig/runtime.rb +506 -57
- data/lib/riffer/rig/settings/document.rb +29 -16
- data/lib/riffer/rig/settings/pricing.rb +16 -5
- data/lib/riffer/rig/settings.rb +73 -43
- data/lib/riffer/rig/skills/sources.rb +28 -0
- data/lib/riffer/rig/skills.rb +12 -0
- data/lib/riffer/rig/{events/event.rb → support/equatable.rb} +2 -11
- data/lib/riffer/rig/{ui → terminal}/animator.rb +4 -4
- data/lib/riffer/rig/{ui → terminal}/banner.rb +17 -21
- data/lib/riffer/rig/{ui → terminal}/cursor.rb +4 -4
- data/lib/riffer/rig/terminal/host.rb +85 -0
- data/lib/riffer/rig/{ui → terminal}/palette.rb +1 -1
- data/lib/riffer/rig/terminal/renderer.rb +313 -0
- data/lib/riffer/rig/{ui → terminal}/smoother.rb +4 -4
- data/lib/riffer/rig/{ui → terminal}/theme.rb +12 -12
- data/lib/riffer/rig/terminal/wrapper.rb +103 -0
- data/lib/riffer/rig/terminal.rb +207 -0
- data/lib/riffer/rig/tools/bash.rb +6 -4
- data/lib/riffer/rig/tools/edit.rb +3 -2
- data/lib/riffer/rig/tools/read.rb +3 -2
- data/lib/riffer/rig/tools/write.rb +3 -2
- data/lib/riffer/rig/trust.rb +37 -0
- data/lib/riffer/rig/version.rb +1 -1
- data/lib/riffer/rig.rb +8 -8
- data/sig/generated/riffer/rig/bundled/agents_md.rbs +5 -0
- data/sig/generated/riffer/rig/bundled/bash.rbs +5 -0
- data/sig/generated/riffer/rig/bundled/edit.rbs +5 -0
- data/sig/generated/riffer/rig/bundled/mcp.rbs +5 -0
- data/sig/generated/riffer/rig/bundled/read.rbs +5 -0
- data/sig/generated/riffer/rig/bundled/skills.rbs +5 -0
- data/sig/generated/riffer/rig/bundled/write.rbs +5 -0
- data/sig/generated/riffer/rig/bundled.rbs +5 -0
- data/sig/generated/riffer/rig/cli/flags.rbs +40 -0
- data/sig/generated/riffer/rig/cli.rbs +30 -35
- data/sig/generated/riffer/rig/command/context.rbs +50 -0
- data/sig/generated/riffer/rig/command.rbs +23 -0
- data/sig/generated/riffer/rig/commands/model.rbs +27 -0
- data/sig/generated/riffer/rig/commands/skill.rbs +12 -0
- data/sig/generated/riffer/rig/commands.rbs +4 -0
- data/sig/generated/riffer/rig/credentials.rbs +4 -4
- data/sig/generated/riffer/rig/directories.rbs +11 -0
- data/sig/generated/riffer/rig/env/invalid.rbs +10 -0
- data/sig/generated/riffer/rig/env.rbs +7 -1
- data/sig/generated/riffer/rig/events/after_response.rbs +18 -0
- data/sig/generated/riffer/rig/events/after_tool_call.rbs +24 -0
- data/sig/generated/riffer/rig/events/before_prompt.rbs +18 -0
- data/sig/generated/riffer/rig/events/before_request.rbs +18 -0
- data/sig/generated/riffer/rig/events/before_tool_call.rbs +21 -0
- data/sig/generated/riffer/rig/events/command_output.rbs +3 -1
- data/sig/generated/riffer/rig/events/notify.rbs +3 -1
- data/sig/generated/riffer/rig/events/session_end.rbs +3 -1
- data/sig/generated/riffer/rig/events/session_start.rbs +3 -1
- data/sig/generated/riffer/rig/events/skill_activated.rbs +3 -1
- data/sig/generated/riffer/rig/events/turn_end.rbs +3 -1
- data/sig/generated/riffer/rig/extension/failure.rbs +13 -0
- data/sig/generated/riffer/rig/extension.rbs +14 -1
- data/sig/generated/riffer/rig/hosts/mirror.rbs +9 -9
- data/sig/generated/riffer/rig/hosts/null.rbs +1 -1
- data/sig/generated/riffer/rig/loader.rbs +113 -0
- data/sig/generated/riffer/rig/mcp/declaration.rbs +18 -0
- data/sig/generated/riffer/rig/mcp/server.rbs +13 -0
- data/sig/generated/riffer/rig/mcp.rbs +8 -0
- data/sig/generated/riffer/rig/prompts/agents_md.rbs +19 -0
- data/sig/generated/riffer/rig/prompts.rbs +4 -0
- data/sig/generated/riffer/rig/registrar.rbs +78 -4
- data/sig/generated/riffer/rig/runtime/blocked.rbs +10 -0
- data/sig/generated/riffer/rig/runtime/hooks.rbs +49 -0
- data/sig/generated/riffer/rig/runtime/request_guardrail.rbs +16 -0
- data/sig/generated/riffer/rig/runtime/tool_runtime.rbs +23 -0
- data/sig/generated/riffer/rig/runtime.rbs +225 -22
- data/sig/generated/riffer/rig/settings/document.rbs +13 -11
- data/sig/generated/riffer/rig/settings/pricing.rbs +7 -2
- data/sig/generated/riffer/rig/settings.rbs +36 -23
- data/sig/generated/riffer/rig/skills/sources.rbs +18 -0
- data/sig/generated/riffer/rig/skills.rbs +7 -0
- data/sig/generated/riffer/rig/support/equatable.rbs +15 -0
- data/sig/generated/riffer/rig/{ui → terminal}/animator.rbs +5 -5
- data/sig/generated/riffer/rig/terminal/banner.rbs +39 -0
- data/sig/generated/riffer/rig/{ui → terminal}/cursor.rbs +5 -5
- data/sig/generated/riffer/rig/terminal/host.rbs +50 -0
- data/sig/generated/riffer/rig/{ui → terminal}/palette.rbs +2 -2
- data/sig/generated/riffer/rig/terminal/renderer.rbs +166 -0
- data/sig/generated/riffer/rig/{ui → terminal}/smoother.rbs +5 -5
- data/sig/generated/riffer/rig/{ui → terminal}/theme.rbs +5 -5
- data/sig/generated/riffer/rig/terminal/wrapper.rbs +43 -0
- data/sig/generated/riffer/rig/terminal.rbs +85 -0
- data/sig/generated/riffer/rig/tools/bash.rbs +2 -1
- data/sig/generated/riffer/rig/trust.rbs +20 -0
- data/sig/generated/riffer/rig.rbs +4 -0
- data/sig/manual/riffer/rig/commands/model.rbs +6 -0
- data/sig/manual/riffer/rig/commands/skill.rbs +6 -0
- data/sig/manual/riffer/rig/directories.rbs +6 -0
- data/sig/manual/riffer/rig/events.rbs +6 -0
- data/sig/manual/riffer/rig/hosts.rbs +7 -0
- data/sig/manual/riffer/rig/mcp.rbs +11 -0
- data/sig/manual/riffer/rig/prompts/agents_md.rbs +6 -0
- data/sig/manual/riffer/rig/{ui/banner.rbs → skills.rbs} +2 -2
- data/sig/manual/riffer/rig/support.rbs +8 -0
- data/sig/manual/riffer/rig/terminal/banner.rbs +6 -0
- data/sig/manual/riffer/rig/trust.rbs +6 -0
- metadata +145 -27
- data/lib/riffer/rig/coding_agent.rb +0 -53
- data/lib/riffer/rig/hosts/base.rb +0 -36
- data/lib/riffer/rig/repl.rb +0 -188
- data/lib/riffer/rig/token_tally.rb +0 -54
- data/lib/riffer/rig/ui/renderer.rb +0 -191
- data/sig/generated/riffer/rig/coding_agent.rbs +0 -9
- data/sig/generated/riffer/rig/events/event.rbs +0 -20
- data/sig/generated/riffer/rig/hosts/base.rbs +0 -26
- data/sig/generated/riffer/rig/repl.rbs +0 -69
- data/sig/generated/riffer/rig/token_tally.rbs +0 -42
- data/sig/generated/riffer/rig/ui/banner.rbs +0 -42
- data/sig/generated/riffer/rig/ui/renderer.rbs +0 -94
- data/sig/manual/riffer/rig/ui.rbs +0 -5
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Riffer::Rig::Commands::Skill
|
|
4
|
+
extend self
|
|
5
|
+
|
|
6
|
+
# @rbs skill: Riffer::Skills::Frontmatter
|
|
7
|
+
# @rbs return: Riffer::Rig::Command
|
|
8
|
+
def command(skill)
|
|
9
|
+
Riffer::Rig::Command.new("skill:#{skill.name}", description: skill.description, extension: 'core') do |ctx|
|
|
10
|
+
run(ctx, skill)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @rbs ctx: Riffer::Rig::Command::Context
|
|
15
|
+
# @rbs skill: Riffer::Skills::Frontmatter
|
|
16
|
+
# @rbs return: void
|
|
17
|
+
def run(ctx, skill)
|
|
18
|
+
skills = ctx.runtime.agent.context.skills
|
|
19
|
+
return ctx.host.notify("Skill #{skill.name} is no longer available", level: :error) unless skills
|
|
20
|
+
|
|
21
|
+
# Context#read, not #activate: a skill the user runs stays in the model's
|
|
22
|
+
# catalog, and only the model's own activations are recorded.
|
|
23
|
+
content = skills.adapter.render_activation(skill, skills.read(skill.name))
|
|
24
|
+
ctx.emit(Riffer::Rig::Events::SkillActivated.new(skill.name))
|
|
25
|
+
ctx.prompt([content, ctx.args.strip].reject(&:empty?).join("\n\n"))
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -12,7 +12,7 @@ module Riffer::Rig::Credentials
|
|
|
12
12
|
ENTRY_TYPE = 'api_key'
|
|
13
13
|
|
|
14
14
|
# @rbs identifier: String | Symbol
|
|
15
|
-
# @rbs host: Riffer::Rig::Hosts::
|
|
15
|
+
# @rbs host: Riffer::Rig::Hosts::_Host
|
|
16
16
|
# @rbs setup: Riffer::Rig::ProviderSetup
|
|
17
17
|
# @rbs env: Riffer::Rig::Env
|
|
18
18
|
# @rbs auth_path: String
|
|
@@ -106,7 +106,7 @@ module Riffer::Rig::Credentials
|
|
|
106
106
|
|
|
107
107
|
# @rbs fields: Array[Riffer::Rig::ProviderSetup::Field]
|
|
108
108
|
# @rbs identifier: String | Symbol
|
|
109
|
-
# @rbs host: Riffer::Rig::Hosts::
|
|
109
|
+
# @rbs host: Riffer::Rig::Hosts::_Host
|
|
110
110
|
# @rbs return: Hash[Symbol, String]
|
|
111
111
|
def ask_for(fields, identifier, host)
|
|
112
112
|
fields.to_h do |field|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Riffer::Rig::Directories
|
|
4
|
+
extend self
|
|
5
|
+
|
|
6
|
+
# @rbs dir: String
|
|
7
|
+
# @rbs return: Array[String]
|
|
8
|
+
def ancestors(dir)
|
|
9
|
+
parent = File.dirname(dir)
|
|
10
|
+
parent == dir ? [dir] : [dir, *ancestors(parent)]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# @rbs cwd: String
|
|
14
|
+
# @rbs return: Array[String]
|
|
15
|
+
def up_to_repo_root(cwd)
|
|
16
|
+
dirs = ancestors(File.expand_path(cwd))
|
|
17
|
+
root = dirs.index { |dir| File.exist?(File.join(dir, '.git')) } || 0
|
|
18
|
+
dirs.take(root + 1)
|
|
19
|
+
end
|
|
20
|
+
end
|
data/lib/riffer/rig/env.rb
CHANGED
|
@@ -3,14 +3,25 @@
|
|
|
3
3
|
class Riffer::Rig::Env
|
|
4
4
|
# @rbs @source: Hash[String, String]
|
|
5
5
|
|
|
6
|
-
# @dynamic no_color
|
|
6
|
+
# @dynamic no_color, model
|
|
7
7
|
attr_reader :no_color #: bool
|
|
8
|
+
attr_reader :model #: String?
|
|
9
|
+
|
|
10
|
+
# @rbs source: Hash[String, String]
|
|
11
|
+
# @rbs return: Riffer::Rig::Env | Riffer::Rig::Env::Invalid
|
|
12
|
+
def self.load(source = ENV.to_h)
|
|
13
|
+
env = new(source)
|
|
14
|
+
model = env.model
|
|
15
|
+
rejection = model && Riffer::Rig::Settings.rejection(model)
|
|
16
|
+
rejection ? Invalid.new("RIFFER_MODEL: #{rejection}") : env
|
|
17
|
+
end
|
|
8
18
|
|
|
9
19
|
# @rbs source: Hash[String, String]
|
|
10
20
|
# @rbs return: void
|
|
11
21
|
def initialize(source = ENV.to_h)
|
|
12
22
|
@source = source.freeze
|
|
13
23
|
@no_color = @source.key?('NO_COLOR')
|
|
24
|
+
@model = self['RIFFER_MODEL']
|
|
14
25
|
freeze
|
|
15
26
|
end
|
|
16
27
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Riffer::Rig::Events::AfterResponse
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
6
|
+
# @dynamic message
|
|
7
|
+
attr_reader :message #: ::Riffer::Messages::Assistant
|
|
8
|
+
|
|
9
|
+
# @rbs message: ::Riffer::Messages::Assistant
|
|
10
|
+
# @rbs return: void
|
|
11
|
+
def initialize(message)
|
|
12
|
+
@message = message
|
|
13
|
+
freeze
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @rbs return: Symbol
|
|
17
|
+
def type
|
|
18
|
+
:after_response
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @rbs return: Hash[Symbol, untyped]
|
|
22
|
+
def to_h
|
|
23
|
+
{ type: type, message: message }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Riffer::Rig::Events::AfterToolCall
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
6
|
+
# @dynamic tool, args, result
|
|
7
|
+
attr_reader :tool #: String
|
|
8
|
+
attr_reader :args #: Hash[Symbol, untyped]
|
|
9
|
+
attr_reader :result #: ::Riffer::Tools::Response
|
|
10
|
+
|
|
11
|
+
# @rbs tool: String
|
|
12
|
+
# @rbs args: Hash[Symbol, untyped]
|
|
13
|
+
# @rbs result: ::Riffer::Tools::Response
|
|
14
|
+
# @rbs return: void
|
|
15
|
+
def initialize(tool, args, result)
|
|
16
|
+
@tool = tool
|
|
17
|
+
@args = args.dup.freeze
|
|
18
|
+
@result = result
|
|
19
|
+
freeze
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @rbs return: Symbol
|
|
23
|
+
def type
|
|
24
|
+
:after_tool_call
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @rbs return: Hash[Symbol, untyped]
|
|
28
|
+
def to_h
|
|
29
|
+
{ type: type, tool: tool, args: args, result: result }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Riffer::Rig::Events::BeforePrompt
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
6
|
+
# @dynamic text
|
|
7
|
+
attr_reader :text #: String
|
|
8
|
+
|
|
9
|
+
# @rbs text: String
|
|
10
|
+
# @rbs return: void
|
|
11
|
+
def initialize(text)
|
|
12
|
+
@text = text
|
|
13
|
+
freeze
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @rbs return: Symbol
|
|
17
|
+
def type
|
|
18
|
+
:before_prompt
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @rbs return: Hash[Symbol, untyped]
|
|
22
|
+
def to_h
|
|
23
|
+
{ type: type, text: text }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Riffer::Rig::Events::BeforeRequest
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
6
|
+
# @dynamic messages
|
|
7
|
+
attr_reader :messages #: Array[::Riffer::Messages::Base]
|
|
8
|
+
|
|
9
|
+
# @rbs messages: Array[::Riffer::Messages::Base]
|
|
10
|
+
# @rbs return: void
|
|
11
|
+
def initialize(messages)
|
|
12
|
+
@messages = messages.dup.freeze
|
|
13
|
+
freeze
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @rbs return: Symbol
|
|
17
|
+
def type
|
|
18
|
+
:before_request
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @rbs return: Hash[Symbol, untyped]
|
|
22
|
+
def to_h
|
|
23
|
+
{ type: type, messages: messages }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Riffer::Rig::Events::BeforeToolCall
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
6
|
+
# @dynamic tool, args
|
|
7
|
+
attr_reader :tool #: String
|
|
8
|
+
attr_reader :args #: Hash[Symbol, untyped]
|
|
9
|
+
|
|
10
|
+
# @rbs tool: String
|
|
11
|
+
# @rbs args: Hash[Symbol, untyped]
|
|
12
|
+
# @rbs return: void
|
|
13
|
+
def initialize(tool, args)
|
|
14
|
+
@tool = tool
|
|
15
|
+
@args = args.dup.freeze
|
|
16
|
+
freeze
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @rbs return: Symbol
|
|
20
|
+
def type
|
|
21
|
+
:before_tool_call
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @rbs return: Hash[Symbol, untyped]
|
|
25
|
+
def to_h
|
|
26
|
+
{ type: type, tool: tool, args: args }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Events::CommandOutput
|
|
3
|
+
class Riffer::Rig::Events::CommandOutput
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
4
6
|
# @dynamic command, text
|
|
5
7
|
attr_reader :command #: String
|
|
6
8
|
attr_reader :text #: String
|
|
@@ -9,7 +11,6 @@ class Riffer::Rig::Events::CommandOutput < Riffer::Rig::Events::Event
|
|
|
9
11
|
# @rbs text: String
|
|
10
12
|
# @rbs return: void
|
|
11
13
|
def initialize(command, text)
|
|
12
|
-
super()
|
|
13
14
|
@command = command
|
|
14
15
|
@text = text
|
|
15
16
|
freeze
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Events::Notify
|
|
3
|
+
class Riffer::Rig::Events::Notify
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
4
6
|
# @dynamic message, level
|
|
5
7
|
attr_reader :message #: String?
|
|
6
8
|
attr_reader :level #: Symbol
|
|
@@ -9,7 +11,6 @@ class Riffer::Rig::Events::Notify < Riffer::Rig::Events::Event
|
|
|
9
11
|
# @rbs level: Symbol
|
|
10
12
|
# @rbs return: void
|
|
11
13
|
def initialize(message, level)
|
|
12
|
-
super()
|
|
13
14
|
@message = message
|
|
14
15
|
@level = level
|
|
15
16
|
freeze
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Events::SessionEnd
|
|
3
|
+
class Riffer::Rig::Events::SessionEnd
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
4
6
|
# @dynamic reason
|
|
5
7
|
attr_reader :reason #: Symbol
|
|
6
8
|
|
|
7
9
|
# @rbs reason: Symbol
|
|
8
10
|
# @rbs return: void
|
|
9
11
|
def initialize(reason)
|
|
10
|
-
super()
|
|
11
12
|
@reason = reason
|
|
12
13
|
freeze
|
|
13
14
|
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Events::SessionStart
|
|
3
|
+
class Riffer::Rig::Events::SessionStart
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
4
6
|
# @dynamic id, reason
|
|
5
7
|
attr_reader :id #: String
|
|
6
8
|
attr_reader :reason #: Symbol
|
|
@@ -9,7 +11,6 @@ class Riffer::Rig::Events::SessionStart < Riffer::Rig::Events::Event
|
|
|
9
11
|
# @rbs reason: Symbol
|
|
10
12
|
# @rbs return: void
|
|
11
13
|
def initialize(id, reason)
|
|
12
|
-
super()
|
|
13
14
|
@id = id
|
|
14
15
|
@reason = reason
|
|
15
16
|
freeze
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Events::SkillActivated
|
|
3
|
+
class Riffer::Rig::Events::SkillActivated
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
4
6
|
# @dynamic name
|
|
5
7
|
attr_reader :name #: String
|
|
6
8
|
|
|
7
9
|
# @rbs name: String
|
|
8
10
|
# @rbs return: void
|
|
9
11
|
def initialize(name)
|
|
10
|
-
super()
|
|
11
12
|
@name = name
|
|
12
13
|
freeze
|
|
13
14
|
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Events::TurnEnd
|
|
3
|
+
class Riffer::Rig::Events::TurnEnd
|
|
4
|
+
include Riffer::Rig::Support::Equatable
|
|
5
|
+
|
|
4
6
|
# @dynamic stop_reason, usage
|
|
5
7
|
attr_reader :stop_reason #: Symbol
|
|
6
8
|
attr_reader :usage #: ::Riffer::Providers::TokenUsage?
|
|
@@ -9,7 +11,6 @@ class Riffer::Rig::Events::TurnEnd < Riffer::Rig::Events::Event
|
|
|
9
11
|
# @rbs usage: ::Riffer::Providers::TokenUsage?
|
|
10
12
|
# @rbs return: void
|
|
11
13
|
def initialize(stop_reason, usage)
|
|
12
|
-
super()
|
|
13
14
|
@stop_reason = stop_reason
|
|
14
15
|
@usage = usage
|
|
15
16
|
freeze
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Riffer::Rig::Extension::Failure
|
|
4
|
+
# @dynamic extension, error
|
|
5
|
+
attr_reader :extension #: Riffer::Rig::Extension
|
|
6
|
+
attr_reader :error #: StandardError
|
|
7
|
+
|
|
8
|
+
# @rbs extension: Riffer::Rig::Extension
|
|
9
|
+
# @rbs error: StandardError
|
|
10
|
+
# @rbs return: void
|
|
11
|
+
def initialize(extension:, error:)
|
|
12
|
+
@extension = extension
|
|
13
|
+
@error = error
|
|
14
|
+
freeze
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/riffer/rig/extension.rb
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
class Riffer::Rig::Extension
|
|
4
|
+
class RequirementError < StandardError; end
|
|
5
|
+
|
|
4
6
|
# @rbs @name: String
|
|
5
7
|
# @rbs @requires: Gem::Requirement?
|
|
8
|
+
# @rbs @mismatch: RequirementError?
|
|
6
9
|
# @rbs @block: ^(::Riffer::Rig::Registrar) -> void
|
|
7
10
|
|
|
8
|
-
# @dynamic name, requires
|
|
11
|
+
# @dynamic name, requires, mismatch
|
|
9
12
|
attr_reader :name #: String
|
|
10
13
|
attr_reader :requires #: Gem::Requirement?
|
|
14
|
+
attr_reader :mismatch #: RequirementError?
|
|
11
15
|
|
|
12
16
|
# @rbs name: String
|
|
13
17
|
# @rbs requires: String?
|
|
@@ -16,6 +20,7 @@ class Riffer::Rig::Extension
|
|
|
16
20
|
def initialize(name, requires: nil, &block)
|
|
17
21
|
@name = name
|
|
18
22
|
@requires = requires && Gem::Requirement.new(requires)
|
|
23
|
+
@mismatch = check(@requires)
|
|
19
24
|
@block = block
|
|
20
25
|
end
|
|
21
26
|
|
|
@@ -24,4 +29,14 @@ class Riffer::Rig::Extension
|
|
|
24
29
|
def run(registrar)
|
|
25
30
|
@block.call(registrar)
|
|
26
31
|
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# @rbs requirement: Gem::Requirement?
|
|
36
|
+
# @rbs return: RequirementError?
|
|
37
|
+
def check(requirement)
|
|
38
|
+
return if requirement.nil? || requirement.satisfied_by?(Gem::Version.new(Riffer::Rig::VERSION))
|
|
39
|
+
|
|
40
|
+
RequirementError.new("extension #{@name} requires riffer-rig #{requirement}, found #{Riffer::Rig::VERSION}")
|
|
41
|
+
end
|
|
27
42
|
end
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
class Riffer::Rig::Hosts::Mirror
|
|
4
|
-
# @rbs @host: Riffer::Rig::Hosts::
|
|
5
|
-
# @rbs @queue: Array[Riffer::Rig::Events::
|
|
3
|
+
class Riffer::Rig::Hosts::Mirror
|
|
4
|
+
# @rbs @host: Riffer::Rig::Hosts::_Host
|
|
5
|
+
# @rbs @queue: Array[Riffer::Rig::Events::_Event]
|
|
6
6
|
|
|
7
7
|
# @dynamic capabilities
|
|
8
8
|
attr_reader :capabilities #: Set[Symbol]
|
|
9
9
|
|
|
10
|
-
# @rbs host: Riffer::Rig::Hosts::
|
|
10
|
+
# @rbs host: Riffer::Rig::Hosts::_Host
|
|
11
11
|
# @rbs return: void
|
|
12
12
|
def initialize(host)
|
|
13
|
-
super()
|
|
14
13
|
@host = host
|
|
15
14
|
@capabilities = host.capabilities
|
|
16
15
|
@queue = []
|
|
@@ -45,13 +44,13 @@ class Riffer::Rig::Hosts::Mirror < Riffer::Rig::Hosts::Base
|
|
|
45
44
|
@host.progress(label) { block&.call }
|
|
46
45
|
end
|
|
47
46
|
|
|
48
|
-
# @rbs event: Riffer::Rig::Events::
|
|
47
|
+
# @rbs event: Riffer::Rig::Events::_Event
|
|
49
48
|
# @rbs return: void
|
|
50
49
|
def queue(event)
|
|
51
50
|
@queue << event
|
|
52
51
|
end
|
|
53
52
|
|
|
54
|
-
# @rbs return: Array[Riffer::Rig::Events::
|
|
53
|
+
# @rbs return: Array[Riffer::Rig::Events::_Event]
|
|
55
54
|
def drain
|
|
56
55
|
queued = @queue
|
|
57
56
|
@queue = []
|