riffer-rig 0.2.1 → 0.4.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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +2 -2
  4. data/lib/riffer/rig/cli.rb +31 -2
  5. data/lib/riffer/rig/coding_agent.rb +35 -31
  6. data/lib/riffer/rig/credentials.rb +24 -4
  7. data/lib/riffer/rig/repl.rb +75 -22
  8. data/lib/riffer/rig/settings/pricing.rb +19 -0
  9. data/lib/riffer/rig/settings.rb +33 -8
  10. data/lib/riffer/rig/token_tally.rb +22 -6
  11. data/lib/riffer/rig/tools/bash.rb +23 -5
  12. data/lib/riffer/rig/tools/edit.rb +16 -2
  13. data/lib/riffer/rig/tools/read.rb +6 -1
  14. data/lib/riffer/rig/tools/write.rb +4 -0
  15. data/lib/riffer/rig/ui/animator.rb +51 -11
  16. data/lib/riffer/rig/ui/banner.rb +28 -4
  17. data/lib/riffer/rig/ui/cursor.rb +14 -2
  18. data/lib/riffer/rig/ui/palette.rb +13 -7
  19. data/lib/riffer/rig/ui/renderer.rb +137 -29
  20. data/lib/riffer/rig/ui/smoother.rb +56 -14
  21. data/lib/riffer/rig/ui/theme.rb +38 -7
  22. data/lib/riffer/rig/version.rb +1 -1
  23. data/sig/generated/riffer/rig/cli.rbs +41 -0
  24. data/sig/generated/riffer/rig/coding_agent.rbs +9 -0
  25. data/sig/generated/riffer/rig/credentials.rbs +55 -0
  26. data/sig/generated/riffer/rig/repl.rbs +68 -0
  27. data/sig/generated/riffer/rig/settings/pricing.rbs +23 -0
  28. data/sig/generated/riffer/rig/settings.rbs +92 -0
  29. data/sig/generated/riffer/rig/token_tally.rbs +61 -0
  30. data/sig/generated/riffer/rig/tools/bash.rbs +28 -0
  31. data/sig/generated/riffer/rig/tools/edit.rbs +11 -0
  32. data/sig/generated/riffer/rig/tools/read.rbs +12 -0
  33. data/sig/generated/riffer/rig/tools/write.rbs +9 -0
  34. data/sig/generated/riffer/rig/ui/animator.rbs +76 -0
  35. data/sig/generated/riffer/rig/ui/banner.rbs +42 -0
  36. data/sig/generated/riffer/rig/ui/cursor.rbs +33 -0
  37. data/sig/generated/riffer/rig/ui/palette.rbs +17 -0
  38. data/sig/generated/riffer/rig/ui/renderer.rbs +116 -0
  39. data/sig/generated/riffer/rig/ui/smoother.rbs +72 -0
  40. data/sig/generated/riffer/rig/ui/theme.rbs +60 -0
  41. data/sig/generated/riffer/rig/version.rbs +7 -0
  42. data/sig/generated/riffer/rig.rbs +2 -0
  43. data/sig/manual/riffer/rig/cli.rbs +8 -0
  44. data/sig/manual/riffer/rig/credentials.rbs +8 -0
  45. data/sig/manual/riffer/rig/settings.rbs +8 -0
  46. data/sig/manual/riffer/rig/tools.rbs +5 -0
  47. data/sig/manual/riffer/rig/ui/banner.rbs +8 -0
  48. data/sig/manual/riffer/rig/ui.rbs +5 -0
  49. metadata +31 -4
@@ -0,0 +1,76 @@
1
+ # Generated from lib/riffer/rig/ui/animator.rb with RBS::Inline
2
+
3
+ # Animated output is gated behind an interactive, colour-enabled TTY, so piped
4
+ # or tested runs stay silent and escape-free.
5
+ class Riffer::Rig::UI::Animator
6
+ REVEAL_FRAME_SECONDS: Float
7
+
8
+ SPINNER_FRAME_SECONDS: Float
9
+
10
+ EQ_LEVELS: Array[String]
11
+
12
+ EQ_BARS: Integer
13
+
14
+ NEUTRAL_LABEL: String
15
+
16
+ REASONING_PHRASES: Array[String]
17
+
18
+ REASONING_TICK_RANGE: Range[Integer]
19
+
20
+ @stop: bool
21
+
22
+ @phrase: String?
23
+
24
+ @mode: Symbol
25
+
26
+ @thread: Thread?
27
+
28
+ @theme: Riffer::Rig::UI::Theme
29
+
30
+ @io: untyped
31
+
32
+ # @rbs io: untyped
33
+ # @rbs ?theme: Riffer::Rig::UI::Theme
34
+ # @rbs return: void
35
+ def initialize: (?io: untyped, ?theme: untyped) -> void
36
+
37
+ # When not on a TTY, prints the final frame once instead of animating.
38
+ #
39
+ # @rbs frames: Array[Array[String]]
40
+ # @rbs return: void
41
+ def reveal: (Array[Array[String]] frames) -> void
42
+
43
+ # @rbs ?mode: Symbol
44
+ # @rbs return: void
45
+ def start: (?untyped mode) -> void
46
+
47
+ # @rbs return: void
48
+ def stop: () -> void
49
+
50
+ # @rbs tick: Integer
51
+ # @rbs ?label: String
52
+ # @rbs return: String
53
+ def equalizer: (Integer tick, ?untyped label) -> String
54
+
55
+ private
56
+
57
+ # @rbs return: void
58
+ def animate: () -> void
59
+
60
+ # Re-rolls both phrase and duration whenever the reasoning tick expires.
61
+ #
62
+ # @rbs roll_at: Float
63
+ # @rbs return: Float
64
+ def roll_phrase: (Float roll_at) -> Float
65
+
66
+ # Range rand returns nil for an empty range; this one is a non-empty constant.
67
+ #
68
+ # @rbs return: Integer
69
+ def roll_rand: () -> Integer
70
+
71
+ # @rbs return: String
72
+ def label: () -> String
73
+
74
+ # @rbs return: bool
75
+ def enabled?: () -> bool
76
+ end
@@ -0,0 +1,42 @@
1
+ # Generated from lib/riffer/rig/ui/banner.rb with RBS::Inline
2
+
3
+ module Riffer::Rig::UI::Banner
4
+ WORDMARK: Array[String]
5
+
6
+ ROW_COLOURS: Array[Array[Integer]]
7
+
8
+ INFO_LABEL_WIDTH: Integer
9
+
10
+ INDENT: String
11
+
12
+ # @rbs theme: Riffer::Rig::UI::Theme
13
+ # @rbs model: String
14
+ # @rbs cwd: String
15
+ # @rbs context: String
16
+ # @rbs skills: String
17
+ # @rbs version: String
18
+ # @rbs return: String
19
+ def call: (Riffer::Rig::UI::Theme theme, model: String, cwd: String, context: String, skills: String, version: String) -> String
20
+
21
+ # @rbs theme: Riffer::Rig::UI::Theme
22
+ # @rbs model: String
23
+ # @rbs cwd: String
24
+ # @rbs context: String
25
+ # @rbs skills: String
26
+ # @rbs version: String
27
+ # @rbs return: Array[String]
28
+ def lines: (Riffer::Rig::UI::Theme theme, model: String, cwd: String, context: String, skills: String, version: String) -> Array[String]
29
+
30
+ # @rbs theme: Riffer::Rig::UI::Theme
31
+ # @rbs return: Array[String]
32
+ def art: (Riffer::Rig::UI::Theme theme) -> Array[String]
33
+
34
+ # @rbs theme: Riffer::Rig::UI::Theme
35
+ # @rbs model: String
36
+ # @rbs cwd: String
37
+ # @rbs context: String
38
+ # @rbs skills: String
39
+ # @rbs version: String
40
+ # @rbs return: Array[String]
41
+ def info: (Riffer::Rig::UI::Theme theme, model: String, cwd: String, context: String, skills: String, version: String) -> Array[String]
42
+ end
@@ -0,0 +1,33 @@
1
+ # Generated from lib/riffer/rig/ui/cursor.rb with RBS::Inline
2
+
3
+ # Hides the terminal cursor while a turn is in flight: a hidden cursor can't
4
+ # flicker against the animator's erase-and-redraw churn.
5
+ class Riffer::Rig::UI::Cursor
6
+ HIDE: String
7
+
8
+ SHOW: String
9
+
10
+ @io: untyped
11
+
12
+ @theme: Riffer::Rig::UI::Theme
13
+
14
+ # @rbs io: untyped
15
+ # @rbs ?theme: Riffer::Rig::UI::Theme
16
+ # @rbs return: void
17
+ def initialize: (?io: untyped, ?theme: untyped) -> void
18
+
19
+ # @rbs return: void
20
+ def hide: () -> void
21
+
22
+ # @rbs return: void
23
+ def show: () -> void
24
+
25
+ private
26
+
27
+ # @rbs sequence: String
28
+ # @rbs return: void
29
+ def write: (String sequence) -> void
30
+
31
+ # @rbs return: bool
32
+ def enabled?: () -> bool
33
+ end
@@ -0,0 +1,17 @@
1
+ # Generated from lib/riffer/rig/ui/palette.rb with RBS::Inline
2
+
3
+ module Riffer::Rig::UI::Palette
4
+ PINK: Array[Integer]
5
+
6
+ MAGENTA: Array[Integer]
7
+
8
+ PURPLE: Array[Integer]
9
+
10
+ BLUE: Array[Integer]
11
+
12
+ CYAN: Array[Integer]
13
+
14
+ GREY: Array[Integer]
15
+
16
+ RED: Array[Integer]
17
+ end
@@ -0,0 +1,116 @@
1
+ # Generated from lib/riffer/rig/ui/renderer.rb with RBS::Inline
2
+
3
+ class Riffer::Rig::UI::Renderer
4
+ RESULT_PREVIEW_LIMIT: Integer
5
+
6
+ @prose_gap_pending: bool
7
+
8
+ @deferred_usage: Riffer::Providers::TokenUsage?
9
+
10
+ @smoother: Riffer::Rig::UI::Smoother | PassThroughSmoother?
11
+
12
+ @tally: Riffer::Rig::TokenTally?
13
+
14
+ @theme: Riffer::Rig::UI::Theme
15
+
16
+ @io: untyped
17
+
18
+ # @rbs io: untyped
19
+ # @rbs ?theme: Riffer::Rig::UI::Theme
20
+ # @rbs ?tally: Riffer::Rig::TokenTally?
21
+ # @rbs ?smoother: Riffer::Rig::UI::Smoother | PassThroughSmoother?
22
+ # @rbs return: void
23
+ def initialize: (?io: untyped, ?theme: untyped, ?tally: untyped, ?smoother: untyped) -> void
24
+
25
+ # @rbs event: Riffer::StreamEvents::Base
26
+ # @rbs return: void
27
+ def render: (Riffer::StreamEvents::Base event) -> void
28
+
29
+ # The prompt holds the line open for typed input, so unlike render_block it
30
+ # ends without a newline. It sits at the renderer so a tool group left open by
31
+ # the previous turn closes here, and the next turn's blocks open cleanly.
32
+ #
33
+ # @rbs return: void
34
+ def prompt: () -> void
35
+
36
+ # Usage arrives per model call but tool results arrive via the session
37
+ # callback after each call's stream ends, so rendering inline would print the
38
+ # stats above the results they belong with. Held until the turn's output is
39
+ # done, then printed as one line below it.
40
+ #
41
+ # @rbs return: void
42
+ def flush_usage: () -> void
43
+
44
+ # @rbs message: Riffer::Messages::Base
45
+ # @rbs return: void
46
+ def render_tool_result: (Riffer::Messages::Base message) -> void
47
+
48
+ private
49
+
50
+ # Rule 2 for one-off blocks (skill line, interrupt, stats): one blank line
51
+ # above, no indent. The smoother drains first so any pending partial prose
52
+ # block ends cleanly before the gap is written, and any open tool group closes
53
+ # so the next group opens with its own gap.
54
+ #
55
+ # @rbs indent: Integer
56
+ # @rbs return: void
57
+ def render_block: (Integer indent) ?{ (?) -> untyped } -> void
58
+
59
+ # The blank line above a prose block is written at the first delta after a
60
+ # non-prose block. Streaming makes "which block is first?" a stateful
61
+ # question, so the answer is tracked rather than embedded at each render site.
62
+ #
63
+ # @rbs content: String
64
+ # @rbs return: void
65
+ def render_prose: (String content) -> void
66
+
67
+ # @rbs indent: Integer
68
+ # @rbs return: void
69
+ def render_tool_activity: (Integer indent) ?{ (?) -> untyped } -> void
70
+
71
+ # Tool-activity lines (⚙ calls, ↳ results) share one blank line above the
72
+ # group instead of one between each line — the gap goes between groups, not
73
+ # inside a pair. The group stays open so prose after it pays the closing gap.
74
+ #
75
+ # @rbs return: void
76
+ def open_tool_activity: () -> void
77
+
78
+ # @rbs usage: Riffer::Providers::TokenUsage
79
+ # @rbs tally: Riffer::Rig::TokenTally
80
+ # @rbs return: String
81
+ def usage_line: (Riffer::Providers::TokenUsage usage, Riffer::Rig::TokenTally tally) -> String
82
+
83
+ # @rbs return: Riffer::Rig::UI::Smoother | PassThroughSmoother
84
+ def smoother: () -> (Riffer::Rig::UI::Smoother | PassThroughSmoother)
85
+
86
+ # Stand-in when no smoother is injected, so a bare Riffer::Rig::UI::Renderer still prints
87
+ # synchronously.
88
+ class PassThroughSmoother
89
+ @io: untyped
90
+
91
+ # @rbs io: untyped
92
+ # @rbs return: void
93
+ def initialize: (untyped io) -> void
94
+
95
+ # @rbs content: String
96
+ # @rbs return: self
97
+ def <<: (String content) -> self
98
+
99
+ # @rbs return: nil
100
+ def drain: () -> nil
101
+
102
+ # @rbs return: nil
103
+ def finish: () -> nil
104
+ end
105
+
106
+ # @rbs return: void
107
+ def drain_smoother: () -> void
108
+
109
+ # @rbs arguments: String
110
+ # @rbs return: String
111
+ def format_arguments: (String arguments) -> String
112
+
113
+ # @rbs content: String
114
+ # @rbs return: String
115
+ def preview: (String content) -> String
116
+ end
@@ -0,0 +1,72 @@
1
+ # Generated from lib/riffer/rig/ui/smoother.rb with RBS::Inline
2
+
3
+ # Paces streamed text onto a 60fps cadence so API bursts read as continuous
4
+ # typing. On a non-TTY output it is transparent: writes pass through
5
+ # synchronously and no thread ever runs.
6
+ class Riffer::Rig::UI::Smoother
7
+ TICK_SECONDS: Float
8
+
9
+ # A frame removes only a sixtieth of the remaining backlog — an exponential
10
+ # decay whose tail keeps text flowing for a second or more, so the reveal
11
+ # never visibly stops between chunks. The carry accrues sub-character
12
+ # releases so the effective rate can settle at the provider's throughput;
13
+ # the floor is fractional (10 chars/s) so it can't over-drain a backlog
14
+ # that's trickling in slower than 60 chars/s.
15
+ BACKLOG_FRACTION_PER_TICK: Rational
16
+
17
+ MIN_CHARS_PER_TICK: Rational
18
+
19
+ @newline_pending: bool
20
+
21
+ @stop: bool
22
+
23
+ @thread: Thread?
24
+
25
+ @mutex: Mutex
26
+
27
+ @carry: Rational
28
+
29
+ @backlog: String
30
+
31
+ @clock: singleton(Kernel)
32
+
33
+ @theme: Riffer::Rig::UI::Theme
34
+
35
+ @io: untyped
36
+
37
+ # @rbs io: untyped
38
+ # @rbs ?theme: Riffer::Rig::UI::Theme
39
+ # @rbs clock: singleton(Kernel)
40
+ # @rbs return: void
41
+ def initialize: (?io: untyped, ?theme: untyped, ?clock: singleton(Kernel)) -> void
42
+
43
+ # @rbs return: void
44
+ def start: () -> void
45
+
46
+ # @rbs content: String
47
+ # @rbs return: self
48
+ def <<: (String content) -> self
49
+
50
+ # The write sits inside the mutex so a concurrent tick can't reorder a drain.
51
+ #
52
+ # @rbs return: void
53
+ def tick: () -> void
54
+
55
+ # Called before non-prose output so printed order matches stream order. The
56
+ # backlog is flushed, then any partial prose block the model left without a
57
+ # trailing newline gets one, so block spacing never depends on the model's
58
+ # last character.
59
+ #
60
+ # @rbs return: void
61
+ def drain: () -> void
62
+
63
+ # Idempotent: the REPL's ensure path runs it even after a happy-path finish.
64
+ #
65
+ # @rbs return: void
66
+ def finish: () -> void
67
+
68
+ private
69
+
70
+ # @rbs return: bool
71
+ def enabled?: () -> bool
72
+ end
@@ -0,0 +1,60 @@
1
+ # Generated from lib/riffer/rig/ui/theme.rb with RBS::Inline
2
+
3
+ # +enabled+ gates every escape so the same code path emits plain, escape-free
4
+ # text when piped or tested.
5
+ class Riffer::Rig::UI::Theme
6
+ @enabled: bool
7
+
8
+ # @rbs return: bool
9
+ # @dynamic enabled
10
+ attr_reader enabled: bool
11
+
12
+ # @rbs enabled: bool
13
+ # @rbs return: void
14
+ def initialize: (enabled: bool) -> void
15
+
16
+ # @rbs io: untyped
17
+ # @rbs return: Riffer::Rig::UI::Theme
18
+ def self.for: (untyped io) -> Riffer::Rig::UI::Theme
19
+
20
+ # @rbs text: String
21
+ # @rbs rgb: Array[Integer]
22
+ # @rbs return: String
23
+ def paint: (String text, Array[Integer] rgb) -> String
24
+
25
+ # @rbs text: String
26
+ # @rbs return: String
27
+ def pink: (String text) -> String
28
+
29
+ # @rbs text: String
30
+ # @rbs return: String
31
+ def magenta: (String text) -> String
32
+
33
+ # @rbs text: String
34
+ # @rbs return: String
35
+ def purple: (String text) -> String
36
+
37
+ # @rbs text: String
38
+ # @rbs return: String
39
+ def blue: (String text) -> String
40
+
41
+ # @rbs text: String
42
+ # @rbs return: String
43
+ def cyan: (String text) -> String
44
+
45
+ # @rbs text: String
46
+ # @rbs return: String
47
+ def grey: (String text) -> String
48
+
49
+ # @rbs text: String
50
+ # @rbs return: String
51
+ def red: (String text) -> String
52
+
53
+ # @rbs text: String
54
+ # @rbs return: String
55
+ def dim: (String text) -> String
56
+
57
+ # @rbs text: String
58
+ # @rbs return: String
59
+ def bold: (String text) -> String
60
+ end
@@ -0,0 +1,7 @@
1
+ # Generated from lib/riffer/rig/version.rb with RBS::Inline
2
+
3
+ module Riffer
4
+ module Rig
5
+ VERSION: ::String
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ # Generated from lib/riffer/rig.rb with RBS::Inline
2
+
@@ -0,0 +1,8 @@
1
+ # rbs-inline does not emit `extend self` for modules that use it, so their
2
+ # instance methods aren't visible as singleton methods (e.g.
3
+ # `Riffer::Rig::CLI.list_providers`). Reopening the module here to `extend`
4
+ # itself restores that, matching the runtime behaviour.
5
+
6
+ module Riffer::Rig::CLI
7
+ extend ::Riffer::Rig::CLI
8
+ end
@@ -0,0 +1,8 @@
1
+ # rbs-inline does not emit `extend self` for modules that use it, so their
2
+ # instance methods aren't visible as singleton methods (e.g.
3
+ # `Riffer::Rig::Credentials.anthropic_api_key`). Reopening the module here to
4
+ # `extend` itself restores that, matching the runtime behaviour.
5
+
6
+ module Riffer::Rig::Credentials
7
+ extend ::Riffer::Rig::Credentials
8
+ end
@@ -0,0 +1,8 @@
1
+ # rbs-inline does not emit `extend self` for modules that use it, so their
2
+ # instance methods aren't visible as singleton methods (e.g.
3
+ # `Riffer::Rig::Settings.load`). Reopening the module here to `extend` itself
4
+ # restores that, matching the runtime behaviour.
5
+
6
+ module Riffer::Rig::Settings
7
+ extend ::Riffer::Rig::Settings
8
+ end
@@ -0,0 +1,5 @@
1
+ # Zeitwerk autovivifies this namespace module in Ruby; RBS needs it declared
2
+ # explicitly so the compact `Riffer::Rig::Tools::*` signatures resolve.
3
+
4
+ module Riffer::Rig::Tools
5
+ end
@@ -0,0 +1,8 @@
1
+ # rbs-inline does not emit `extend self` for modules that use it, so their
2
+ # instance methods aren't visible as singleton methods (e.g.
3
+ # `Riffer::Rig::UI::Banner.render`). Reopening the module here to `extend`
4
+ # itself restores that, matching the runtime behaviour.
5
+
6
+ module Riffer::Rig::UI::Banner
7
+ extend ::Riffer::Rig::UI::Banner
8
+ end
@@ -0,0 +1,5 @@
1
+ # Zeitwerk autovivifies this namespace module in Ruby; RBS needs it declared
2
+ # explicitly so the compact `Riffer::Rig::UI::*` signatures resolve.
3
+
4
+ module Riffer::Rig::UI
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riffer-rig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Bottrall
@@ -79,8 +79,8 @@ dependencies:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '2.8'
82
- description: An interactive terminal coding agent (read/write/edit/bash) built on
83
- the riffer agentic framework.
82
+ description: An interactive terminal agent (read/write/edit/bash) built on the riffer
83
+ agentic framework.
84
84
  email:
85
85
  - jakebottrall@gmail.com
86
86
  executables:
@@ -97,6 +97,7 @@ files:
97
97
  - lib/riffer/rig/credentials.rb
98
98
  - lib/riffer/rig/repl.rb
99
99
  - lib/riffer/rig/settings.rb
100
+ - lib/riffer/rig/settings/pricing.rb
100
101
  - lib/riffer/rig/token_tally.rb
101
102
  - lib/riffer/rig/tools/bash.rb
102
103
  - lib/riffer/rig/tools/edit.rb
@@ -110,6 +111,32 @@ files:
110
111
  - lib/riffer/rig/ui/smoother.rb
111
112
  - lib/riffer/rig/ui/theme.rb
112
113
  - lib/riffer/rig/version.rb
114
+ - sig/generated/riffer/rig.rbs
115
+ - sig/generated/riffer/rig/cli.rbs
116
+ - sig/generated/riffer/rig/coding_agent.rbs
117
+ - sig/generated/riffer/rig/credentials.rbs
118
+ - sig/generated/riffer/rig/repl.rbs
119
+ - sig/generated/riffer/rig/settings.rbs
120
+ - sig/generated/riffer/rig/settings/pricing.rbs
121
+ - sig/generated/riffer/rig/token_tally.rbs
122
+ - sig/generated/riffer/rig/tools/bash.rbs
123
+ - sig/generated/riffer/rig/tools/edit.rbs
124
+ - sig/generated/riffer/rig/tools/read.rbs
125
+ - sig/generated/riffer/rig/tools/write.rbs
126
+ - sig/generated/riffer/rig/ui/animator.rbs
127
+ - sig/generated/riffer/rig/ui/banner.rbs
128
+ - sig/generated/riffer/rig/ui/cursor.rbs
129
+ - sig/generated/riffer/rig/ui/palette.rbs
130
+ - sig/generated/riffer/rig/ui/renderer.rbs
131
+ - sig/generated/riffer/rig/ui/smoother.rbs
132
+ - sig/generated/riffer/rig/ui/theme.rbs
133
+ - sig/generated/riffer/rig/version.rbs
134
+ - sig/manual/riffer/rig/cli.rbs
135
+ - sig/manual/riffer/rig/credentials.rbs
136
+ - sig/manual/riffer/rig/settings.rbs
137
+ - sig/manual/riffer/rig/tools.rbs
138
+ - sig/manual/riffer/rig/ui.rbs
139
+ - sig/manual/riffer/rig/ui/banner.rbs
113
140
  homepage: https://github.com/bottrall/riffer-rig
114
141
  licenses:
115
142
  - MIT
@@ -131,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
158
  - !ruby/object:Gem::Version
132
159
  version: '0'
133
160
  requirements: []
134
- rubygems_version: 4.0.10
161
+ rubygems_version: 4.0.16
135
162
  specification_version: 4
136
163
  summary: A dead-simple terminal coding agent built on riffer.
137
164
  test_files: []