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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +2 -2
- data/lib/riffer/rig/cli.rb +31 -2
- data/lib/riffer/rig/coding_agent.rb +35 -31
- data/lib/riffer/rig/credentials.rb +24 -4
- data/lib/riffer/rig/repl.rb +75 -22
- data/lib/riffer/rig/settings/pricing.rb +19 -0
- data/lib/riffer/rig/settings.rb +33 -8
- data/lib/riffer/rig/token_tally.rb +22 -6
- data/lib/riffer/rig/tools/bash.rb +23 -5
- data/lib/riffer/rig/tools/edit.rb +16 -2
- data/lib/riffer/rig/tools/read.rb +6 -1
- data/lib/riffer/rig/tools/write.rb +4 -0
- data/lib/riffer/rig/ui/animator.rb +51 -11
- data/lib/riffer/rig/ui/banner.rb +28 -4
- data/lib/riffer/rig/ui/cursor.rb +14 -2
- data/lib/riffer/rig/ui/palette.rb +13 -7
- data/lib/riffer/rig/ui/renderer.rb +137 -29
- data/lib/riffer/rig/ui/smoother.rb +56 -14
- data/lib/riffer/rig/ui/theme.rb +38 -7
- data/lib/riffer/rig/version.rb +1 -1
- data/sig/generated/riffer/rig/cli.rbs +41 -0
- data/sig/generated/riffer/rig/coding_agent.rbs +9 -0
- data/sig/generated/riffer/rig/credentials.rbs +55 -0
- data/sig/generated/riffer/rig/repl.rbs +68 -0
- data/sig/generated/riffer/rig/settings/pricing.rbs +23 -0
- data/sig/generated/riffer/rig/settings.rbs +92 -0
- data/sig/generated/riffer/rig/token_tally.rbs +61 -0
- data/sig/generated/riffer/rig/tools/bash.rbs +28 -0
- data/sig/generated/riffer/rig/tools/edit.rbs +11 -0
- data/sig/generated/riffer/rig/tools/read.rbs +12 -0
- data/sig/generated/riffer/rig/tools/write.rbs +9 -0
- data/sig/generated/riffer/rig/ui/animator.rbs +76 -0
- data/sig/generated/riffer/rig/ui/banner.rbs +42 -0
- data/sig/generated/riffer/rig/ui/cursor.rbs +33 -0
- data/sig/generated/riffer/rig/ui/palette.rbs +17 -0
- data/sig/generated/riffer/rig/ui/renderer.rbs +116 -0
- data/sig/generated/riffer/rig/ui/smoother.rbs +72 -0
- data/sig/generated/riffer/rig/ui/theme.rbs +60 -0
- data/sig/generated/riffer/rig/version.rbs +7 -0
- data/sig/generated/riffer/rig.rbs +2 -0
- data/sig/manual/riffer/rig/cli.rbs +8 -0
- data/sig/manual/riffer/rig/credentials.rbs +8 -0
- data/sig/manual/riffer/rig/settings.rbs +8 -0
- data/sig/manual/riffer/rig/tools.rbs +5 -0
- data/sig/manual/riffer/rig/ui/banner.rbs +8 -0
- data/sig/manual/riffer/rig/ui.rbs +5 -0
- 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,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,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
|
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.
|
|
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
|
|
83
|
-
|
|
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.
|
|
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: []
|