ralph.rb 1.2.435535439

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 (60) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/gem-push.yml +47 -0
  3. data/.gitignore +79 -0
  4. data/.rubocop.yml +6018 -0
  5. data/.ruby-version +1 -0
  6. data/AGENTS.md +113 -0
  7. data/Gemfile +11 -0
  8. data/LICENSE +21 -0
  9. data/README.md +656 -0
  10. data/bin/rubocop +8 -0
  11. data/bin/test +5 -0
  12. data/exe/ralph +8 -0
  13. data/lib/ralph/agents/base.rb +132 -0
  14. data/lib/ralph/agents/claude_code.rb +24 -0
  15. data/lib/ralph/agents/codex.rb +25 -0
  16. data/lib/ralph/agents/open_code.rb +30 -0
  17. data/lib/ralph/agents.rb +24 -0
  18. data/lib/ralph/cli.rb +222 -0
  19. data/lib/ralph/config.rb +40 -0
  20. data/lib/ralph/git/file_snapshot.rb +60 -0
  21. data/lib/ralph/helpers.rb +76 -0
  22. data/lib/ralph/iteration.rb +220 -0
  23. data/lib/ralph/loop.rb +196 -0
  24. data/lib/ralph/output/active_loop_error.rb +13 -0
  25. data/lib/ralph/output/banner.rb +29 -0
  26. data/lib/ralph/output/completion_deferred.rb +12 -0
  27. data/lib/ralph/output/completion_detected.rb +17 -0
  28. data/lib/ralph/output/config_summary.rb +31 -0
  29. data/lib/ralph/output/context_consumed.rb +11 -0
  30. data/lib/ralph/output/iteration.rb +45 -0
  31. data/lib/ralph/output/max_iterations_reached.rb +16 -0
  32. data/lib/ralph/output/no_plugin_warning.rb +14 -0
  33. data/lib/ralph/output/nonzero_exit_warning.rb +11 -0
  34. data/lib/ralph/output/plugin_error.rb +12 -0
  35. data/lib/ralph/output/status.rb +176 -0
  36. data/lib/ralph/output/struggle_warning.rb +18 -0
  37. data/lib/ralph/output/task_completion.rb +12 -0
  38. data/lib/ralph/output/tasks_file_created.rb +11 -0
  39. data/lib/ralph/prompt_template.rb +183 -0
  40. data/lib/ralph/storage/context.rb +58 -0
  41. data/lib/ralph/storage/history.rb +117 -0
  42. data/lib/ralph/storage/state.rb +178 -0
  43. data/lib/ralph/storage/tasks.rb +244 -0
  44. data/lib/ralph/threads/heartbeat.rb +44 -0
  45. data/lib/ralph/threads/stream_reader.rb +50 -0
  46. data/lib/ralph/version.rb +5 -0
  47. data/lib/ralph.rb +67 -0
  48. data/original/bin/ralph.js +13 -0
  49. data/original/ralph.ts +1706 -0
  50. data/ralph.gemspec +35 -0
  51. data/ralph2.gemspec +35 -0
  52. data/screenshot.webp +0 -0
  53. data/specs/README.md +46 -0
  54. data/specs/agents.md +172 -0
  55. data/specs/cli.md +223 -0
  56. data/specs/iteration.md +173 -0
  57. data/specs/output.md +104 -0
  58. data/specs/storage/local-data-structure.md +246 -0
  59. data/specs/tasks.md +295 -0
  60. metadata +150 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3cecf1d0a5488b9714cb3bcdfb2d326d6263776e8e22feed4cb5853e850c2d9e
4
+ data.tar.gz: e57d98a767842503725cfd59f4398ee4c2aa608c90039d20451ff485b9f0aa96
5
+ SHA512:
6
+ metadata.gz: 9d9ed862ebcae5ceea7c14cb89ae68655bfa5435e9b1106333a98f73c555924ec10b26ffa1f287268e4faa928e6af57ad59346649df19d9780c52081166517c8
7
+ data.tar.gz: 37e114a76113057d248c6daa48c13c303547bac384fcc9f2818ceb33dce04d8274aed3841fbe07522cfc4450f4482d6e27c41f2356de5e17b89483eb8bf697a8
@@ -0,0 +1,47 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches: ["ruby"]
6
+ pull_request:
7
+ branches: ["ruby"]
8
+
9
+ jobs:
10
+ build:
11
+ name: Build + Publish
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+ packages: write
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: "3.3"
24
+
25
+ - name: Build gem
26
+ run: gem build *.gemspec
27
+
28
+ - name: Publish to GPR
29
+ if: github.event_name == 'push'
30
+ run: |
31
+ mkdir -p $HOME/.gem
32
+ printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
33
+ chmod 0600 $HOME/.gem/credentials
34
+ gem push --key github --host https://rubygems.pkg.github.com/${OWNER} *.gem
35
+ env:
36
+ GEM_HOST_API_KEY: "Bearer ${{ secrets.GITHUB_TOKEN }}"
37
+ OWNER: ${{ github.repository_owner }}
38
+
39
+ - name: Publish to RubyGems
40
+ if: github.event_name == 'push'
41
+ run: |
42
+ mkdir -p $HOME/.gem
43
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
44
+ chmod 0600 $HOME/.gem/credentials
45
+ gem push *.gem
46
+ env:
47
+ GEM_HOST_API_KEY: "${{ secrets.RUBYGEMS_AUTH_TOKEN }}"
data/.gitignore ADDED
@@ -0,0 +1,79 @@
1
+ ### Linux ###
2
+ *~
3
+
4
+ .ralph
5
+ # temporary files which can be created if a process still has a handle open of a deleted file
6
+ .fuse_hidden*
7
+
8
+ # KDE directory preferences
9
+ .directory
10
+
11
+ # Linux trash folder which might appear on any partition or disk
12
+ .Trash-*
13
+
14
+ # .nfs files are created when an open file is removed but is still being accessed
15
+ .nfs*
16
+
17
+ ### macOS ###
18
+ # General
19
+ .DS_Store
20
+ .AppleDouble
21
+ .LSOverride
22
+
23
+ # Icon must end with two \r
24
+ Icon
25
+
26
+
27
+ # Thumbnails
28
+ ._*
29
+
30
+ # Files that might appear in the root of a volume
31
+ .DocumentRevisions-V100
32
+ .fseventsd
33
+ .Spotlight-V100
34
+ .TemporaryItems
35
+ .Trashes
36
+ .VolumeIcon.icns
37
+ .com.apple.timemachine.donotpresent
38
+
39
+ # Directories potentially created on remote AFP share
40
+ .AppleDB
41
+ .AppleDesktop
42
+ Network Trash Folder
43
+ Temporary Items
44
+ .apdisk
45
+
46
+ ### macOS Patch ###
47
+ # iCloud generated files
48
+ *.icloud
49
+
50
+ ### Windows ###
51
+ # Windows thumbnail cache files
52
+ Thumbs.db
53
+ Thumbs.db:encryptable
54
+ ehthumbs.db
55
+ ehthumbs_vista.db
56
+
57
+ # Dump file
58
+ *.stackdump
59
+
60
+ # Folder config file
61
+ [Dd]esktop.ini
62
+
63
+ # Recycle Bin used on file shares
64
+ $RECYCLE.BIN/
65
+
66
+ # Windows Installer files
67
+ *.cab
68
+ *.msi
69
+ *.msix
70
+ *.msm
71
+ *.msp
72
+
73
+ # Windows shortcuts
74
+ *.lnk
75
+
76
+ context/
77
+ node_modules/
78
+ .ralph/ralph-loop.state.json
79
+ .ralph/ralph-opencode.config.json