riffer 0.41.0 → 0.42.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/{AGENTS.md → .claude/CLAUDE.md} +0 -8
  3. data/.claude/rules/comments.md +13 -0
  4. data/{.agents → .claude/rules}/rbs-inline.md +28 -104
  5. data/.release-please-manifest.json +1 -1
  6. data/CHANGELOG.md +11 -0
  7. data/docs/AGENTS.md +24 -3
  8. data/docs/AGENT_LIFECYCLE.md +2 -2
  9. data/docs/TOOLS.md +18 -1
  10. data/lib/riffer/agent/run.rb +2 -4
  11. data/lib/riffer/agent.rb +3 -17
  12. data/lib/riffer/guardrail.rb +1 -1
  13. data/lib/riffer/helpers/identifier.rb +41 -0
  14. data/lib/riffer/providers/anthropic.rb +4 -0
  15. data/lib/riffer/providers/base.rb +4 -1
  16. data/lib/riffer/registrable.rb +81 -0
  17. data/lib/riffer/tool.rb +1 -0
  18. data/lib/riffer/tools/toolable.rb +2 -3
  19. data/lib/riffer/version.rb +1 -1
  20. data/lib/riffer.rb +3 -0
  21. data/sig/generated/riffer/agent.rbs +2 -12
  22. data/sig/generated/riffer/helpers/identifier.rbs +19 -0
  23. data/sig/generated/riffer/providers/base.rbs +2 -0
  24. data/sig/generated/riffer/registrable.rbs +51 -0
  25. data/sig/generated/riffer/tool.rbs +2 -0
  26. data/sig/generated/riffer/tools/toolable.rbs +3 -1
  27. data/sig/generated/riffer.rbs +4 -0
  28. data/sig/manual/riffer/agent.rbs +7 -0
  29. data/sig/manual/riffer/helpers/identifier.rbs +5 -0
  30. data/sig/manual/riffer/tool.rbs +7 -0
  31. metadata +11 -11
  32. data/.agents/architecture.md +0 -265
  33. data/.agents/code-style.md +0 -110
  34. data/.agents/providers.md +0 -54
  35. data/.agents/testing.md +0 -60
  36. data/CLAUDE.md +0 -1
  37. data/lib/riffer/helpers/class_name_converter.rb +0 -22
  38. data/sig/generated/riffer/helpers/class_name_converter.rbs +0 -12
  39. data/sig/manual/riffer/helpers/class_name_converter.rbs +0 -5
data/.agents/testing.md DELETED
@@ -1,60 +0,0 @@
1
- # Testing
2
-
3
- ## Framework
4
-
5
- Use Minitest with the spec DSL for all tests.
6
-
7
- ## Test Structure
8
-
9
- ```ruby
10
- # frozen_string_literal: true
11
-
12
- require "test_helper"
13
-
14
- describe Riffer::Feature do
15
- describe "#method_name" do
16
- before do
17
- # setup code
18
- end
19
-
20
- it "does something expected" do
21
- result = Riffer::Feature.method_name(args)
22
- assert_equal expected, result
23
- end
24
-
25
- it "handles edge case" do
26
- result = Riffer::Feature.method_name(edge_case_args)
27
- assert_equal edge_case_expected, result
28
- end
29
- end
30
- end
31
- ```
32
-
33
- ## Guidelines
34
-
35
- - Test files go in `test/` directory with `*_test.rb` suffix
36
- - Use `before`/`after` blocks for setup and cleanup
37
- - Stick to the single assertion rule where possible
38
- - Test edge cases and error conditions
39
- - Use Minitest assertions: `assert_equal`, `assert_instance_of`, `refute_nil`, etc.
40
-
41
- ## VCR Cassettes
42
-
43
- Record external API interactions in `test/fixtures/vcr_cassettes/`.
44
-
45
- ## Running Tests
46
-
47
- ```bash
48
- # Run all tests
49
- bin/test
50
-
51
- # Run a single test file (or multiple files)
52
- bin/test test/riffer/agent_test.rb
53
- bin/test test/riffer/agent_test.rb test/riffer/config_test.rb
54
-
55
- # Filter by test name (regex or substring)
56
- bin/test test/riffer/agent_test.rb --name /generates/
57
-
58
- # Filter across the whole suite
59
- bin/test --name /generates/
60
- ```
data/CLAUDE.md DELETED
@@ -1 +0,0 @@
1
- AGENTS.md
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
- # rbs_inline: enabled
3
-
4
- # Helper module for converting class names.
5
- module Riffer::Helpers::ClassNameConverter
6
- extend self
7
-
8
- DEFAULT_SEPARATOR = "/" #: String
9
-
10
- # Converts a class name to snake_case identifier format.
11
- #
12
- #--
13
- #: (String, ?separator: String) -> String
14
- def convert(class_name, separator: DEFAULT_SEPARATOR)
15
- class_name.
16
- to_s.
17
- gsub("::", separator).
18
- gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
19
- gsub(/([a-z\d])([A-Z])/, '\1_\2').
20
- downcase
21
- end
22
- end
@@ -1,12 +0,0 @@
1
- # Generated from lib/riffer/helpers/class_name_converter.rb with RBS::Inline
2
-
3
- # Helper module for converting class names.
4
- module Riffer::Helpers::ClassNameConverter
5
- DEFAULT_SEPARATOR: String
6
-
7
- # Converts a class name to snake_case identifier format.
8
- #
9
- # --
10
- # : (String, ?separator: String) -> String
11
- def convert: (String, ?separator: String) -> String
12
- end
@@ -1,5 +0,0 @@
1
- # `Riffer::Helpers::ClassNameConverter` uses `extend self`; rbs-inline doesn't
2
- # emit that, so re-extend here to expose its instance methods as singleton methods.
3
- module Riffer::Helpers::ClassNameConverter
4
- extend ::Riffer::Helpers::ClassNameConverter
5
- end