rubyn-code 0.2.2 → 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/README.md +151 -5
- data/db/migrations/013_add_failed_status_to_tasks.rb +51 -0
- data/lib/rubyn_code/agent/background_job_handler.rb +71 -0
- data/lib/rubyn_code/agent/conversation.rb +84 -56
- data/lib/rubyn_code/agent/dynamic_tool_schema.rb +152 -0
- data/lib/rubyn_code/agent/feedback_handler.rb +49 -0
- data/lib/rubyn_code/agent/llm_caller.rb +157 -0
- data/lib/rubyn_code/agent/loop.rb +182 -683
- data/lib/rubyn_code/agent/loop_detector.rb +50 -11
- data/lib/rubyn_code/agent/prompts.rb +109 -0
- data/lib/rubyn_code/agent/response_modes.rb +111 -0
- data/lib/rubyn_code/agent/response_parser.rb +111 -0
- data/lib/rubyn_code/agent/system_prompt_builder.rb +211 -0
- data/lib/rubyn_code/agent/tool_processor.rb +178 -0
- data/lib/rubyn_code/agent/usage_tracker.rb +59 -0
- data/lib/rubyn_code/auth/key_encryption.rb +118 -0
- data/lib/rubyn_code/auth/oauth.rb +80 -64
- data/lib/rubyn_code/auth/server.rb +21 -24
- data/lib/rubyn_code/auth/token_store.rb +80 -52
- data/lib/rubyn_code/autonomous/daemon.rb +146 -32
- data/lib/rubyn_code/autonomous/idle_poller.rb +4 -24
- data/lib/rubyn_code/autonomous/task_claimer.rb +46 -44
- data/lib/rubyn_code/background/worker.rb +64 -76
- data/lib/rubyn_code/cli/app.rb +159 -114
- data/lib/rubyn_code/cli/commands/doctor.rb +73 -0
- data/lib/rubyn_code/cli/commands/mcp.rb +77 -0
- data/lib/rubyn_code/cli/commands/model.rb +105 -18
- data/lib/rubyn_code/cli/commands/new_session.rb +45 -0
- data/lib/rubyn_code/cli/commands/provider.rb +123 -0
- data/lib/rubyn_code/cli/commands/skill.rb +52 -3
- data/lib/rubyn_code/cli/daemon_runner.rb +64 -11
- data/lib/rubyn_code/cli/first_run.rb +159 -0
- data/lib/rubyn_code/cli/renderer.rb +109 -60
- data/lib/rubyn_code/cli/repl.rb +48 -374
- data/lib/rubyn_code/cli/repl_commands.rb +177 -0
- data/lib/rubyn_code/cli/repl_lifecycle.rb +76 -0
- data/lib/rubyn_code/cli/repl_setup.rb +181 -0
- data/lib/rubyn_code/cli/setup.rb +6 -2
- data/lib/rubyn_code/cli/stream_formatter.rb +56 -49
- data/lib/rubyn_code/cli/version_check.rb +28 -11
- data/lib/rubyn_code/config/defaults.rb +11 -0
- data/lib/rubyn_code/config/project_profile.rb +185 -0
- data/lib/rubyn_code/config/schema.json +49 -0
- data/lib/rubyn_code/config/settings.rb +103 -1
- data/lib/rubyn_code/config/validator.rb +63 -0
- data/lib/rubyn_code/context/auto_compact.rb +1 -1
- data/lib/rubyn_code/context/context_budget.rb +182 -0
- data/lib/rubyn_code/context/context_collapse.rb +34 -4
- data/lib/rubyn_code/context/decision_compactor.rb +99 -0
- data/lib/rubyn_code/context/manager.rb +44 -8
- data/lib/rubyn_code/context/manual_compact.rb +1 -1
- data/lib/rubyn_code/context/micro_compact.rb +29 -19
- data/lib/rubyn_code/context/schema_filter.rb +64 -0
- data/lib/rubyn_code/db/connection.rb +31 -26
- data/lib/rubyn_code/db/migrator.rb +44 -28
- data/lib/rubyn_code/hooks/built_in.rb +14 -10
- data/lib/rubyn_code/hooks/registry.rb +4 -0
- data/lib/rubyn_code/ide/adapters/tool_output.rb +330 -0
- data/lib/rubyn_code/ide/client.rb +110 -0
- data/lib/rubyn_code/ide/handlers/accept_edit_handler.rb +35 -0
- data/lib/rubyn_code/ide/handlers/approve_tool_use_handler.rb +34 -0
- data/lib/rubyn_code/ide/handlers/cancel_handler.rb +41 -0
- data/lib/rubyn_code/ide/handlers/config_get_handler.rb +63 -0
- data/lib/rubyn_code/ide/handlers/config_set_handler.rb +86 -0
- data/lib/rubyn_code/ide/handlers/initialize_handler.rb +79 -0
- data/lib/rubyn_code/ide/handlers/models_list_handler.rb +39 -0
- data/lib/rubyn_code/ide/handlers/prompt_handler.rb +215 -0
- data/lib/rubyn_code/ide/handlers/review_handler.rb +110 -0
- data/lib/rubyn_code/ide/handlers/session_fork_handler.rb +49 -0
- data/lib/rubyn_code/ide/handlers/session_list_handler.rb +41 -0
- data/lib/rubyn_code/ide/handlers/session_reset_handler.rb +31 -0
- data/lib/rubyn_code/ide/handlers/session_resume_handler.rb +42 -0
- data/lib/rubyn_code/ide/handlers/shutdown_handler.rb +37 -0
- data/lib/rubyn_code/ide/handlers.rb +76 -0
- data/lib/rubyn_code/ide/protocol.rb +111 -0
- data/lib/rubyn_code/ide/server.rb +186 -0
- data/lib/rubyn_code/index/codebase_index.rb +311 -0
- data/lib/rubyn_code/learning/extractor.rb +65 -82
- data/lib/rubyn_code/learning/injector.rb +22 -23
- data/lib/rubyn_code/learning/instinct.rb +71 -42
- data/lib/rubyn_code/learning/shortcut.rb +95 -0
- data/lib/rubyn_code/llm/adapters/anthropic.rb +274 -0
- data/lib/rubyn_code/llm/adapters/anthropic_compatible.rb +60 -0
- data/lib/rubyn_code/llm/adapters/anthropic_streaming.rb +215 -0
- data/lib/rubyn_code/llm/adapters/base.rb +35 -0
- data/lib/rubyn_code/llm/adapters/json_parsing.rb +21 -0
- data/lib/rubyn_code/llm/adapters/openai.rb +246 -0
- data/lib/rubyn_code/llm/adapters/openai_compatible.rb +50 -0
- data/lib/rubyn_code/llm/adapters/openai_message_translator.rb +90 -0
- data/lib/rubyn_code/llm/adapters/openai_streaming.rb +141 -0
- data/lib/rubyn_code/llm/adapters/prompt_caching.rb +60 -0
- data/lib/rubyn_code/llm/client.rb +75 -247
- data/lib/rubyn_code/llm/model_router.rb +237 -0
- data/lib/rubyn_code/llm/streaming.rb +4 -227
- data/lib/rubyn_code/mcp/client.rb +1 -1
- data/lib/rubyn_code/mcp/config.rb +10 -12
- data/lib/rubyn_code/mcp/sse_transport.rb +15 -13
- data/lib/rubyn_code/mcp/stdio_transport.rb +16 -18
- data/lib/rubyn_code/mcp/tool_bridge.rb +31 -62
- data/lib/rubyn_code/memory/search.rb +1 -0
- data/lib/rubyn_code/memory/session_persistence.rb +59 -58
- data/lib/rubyn_code/memory/store.rb +42 -55
- data/lib/rubyn_code/observability/budget_enforcer.rb +46 -32
- data/lib/rubyn_code/observability/cost_calculator.rb +32 -8
- data/lib/rubyn_code/observability/skill_analytics.rb +116 -0
- data/lib/rubyn_code/observability/token_analytics.rb +130 -0
- data/lib/rubyn_code/observability/usage_reporter.rb +79 -61
- data/lib/rubyn_code/output/diff_renderer.rb +102 -77
- data/lib/rubyn_code/output/formatter.rb +11 -11
- data/lib/rubyn_code/permissions/policy.rb +11 -13
- data/lib/rubyn_code/permissions/prompter.rb +8 -9
- data/lib/rubyn_code/protocols/plan_approval.rb +25 -20
- data/lib/rubyn_code/self_test.rb +315 -0
- data/lib/rubyn_code/skills/catalog.rb +66 -0
- data/lib/rubyn_code/skills/document.rb +33 -29
- data/lib/rubyn_code/skills/loader.rb +43 -0
- data/lib/rubyn_code/skills/ttl_manager.rb +100 -0
- data/lib/rubyn_code/sub_agents/runner.rb +20 -25
- data/lib/rubyn_code/tasks/dag.rb +25 -24
- data/lib/rubyn_code/tasks/models.rb +1 -0
- data/lib/rubyn_code/tools/ask_user.rb +44 -0
- data/lib/rubyn_code/tools/background_run.rb +2 -1
- data/lib/rubyn_code/tools/base.rb +39 -32
- data/lib/rubyn_code/tools/bash.rb +7 -1
- data/lib/rubyn_code/tools/edit_file.rb +130 -17
- data/lib/rubyn_code/tools/executor.rb +130 -25
- data/lib/rubyn_code/tools/file_cache.rb +95 -0
- data/lib/rubyn_code/tools/git_commit.rb +12 -10
- data/lib/rubyn_code/tools/git_log.rb +12 -10
- data/lib/rubyn_code/tools/glob.rb +29 -7
- data/lib/rubyn_code/tools/grep.rb +8 -1
- data/lib/rubyn_code/tools/ide_diagnostics.rb +51 -0
- data/lib/rubyn_code/tools/ide_symbols.rb +53 -0
- data/lib/rubyn_code/tools/load_skill.rb +13 -6
- data/lib/rubyn_code/tools/memory_search.rb +14 -13
- data/lib/rubyn_code/tools/memory_write.rb +2 -1
- data/lib/rubyn_code/tools/output_compressor.rb +190 -0
- data/lib/rubyn_code/tools/read_file.rb +17 -6
- data/lib/rubyn_code/tools/registry.rb +11 -0
- data/lib/rubyn_code/tools/review_pr.rb +127 -80
- data/lib/rubyn_code/tools/run_specs.rb +26 -15
- data/lib/rubyn_code/tools/schema.rb +4 -10
- data/lib/rubyn_code/tools/spawn_agent.rb +113 -82
- data/lib/rubyn_code/tools/spawn_teammate.rb +107 -64
- data/lib/rubyn_code/tools/spec_output_parser.rb +118 -0
- data/lib/rubyn_code/tools/task.rb +17 -17
- data/lib/rubyn_code/tools/web_fetch.rb +62 -47
- data/lib/rubyn_code/tools/web_search.rb +66 -48
- data/lib/rubyn_code/tools/write_file.rb +76 -1
- data/lib/rubyn_code/version.rb +1 -1
- data/lib/rubyn_code.rb +62 -1
- data/skills/rubyn_self_test.md +133 -0
- metadata +83 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: self-test
|
|
3
|
+
description: Smoke test Rubyn-Code itself — exercises every major subsystem and reports a pass/fail scorecard
|
|
4
|
+
tags: [rubyn, testing, diagnostics]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Rubyn Self-Test
|
|
8
|
+
|
|
9
|
+
Run a systematic smoke test of Rubyn-Code's major subsystems. Exercise each one, track pass/fail, and report a scorecard at the end.
|
|
10
|
+
|
|
11
|
+
## Instructions
|
|
12
|
+
|
|
13
|
+
When the user loads this skill (via `/skill self-test` or `load_skill name: "self-test"`), run through EVERY test below **in order**. For each test:
|
|
14
|
+
|
|
15
|
+
1. Run the described action using your tools
|
|
16
|
+
2. Record PASS or FAIL
|
|
17
|
+
3. If FAIL, note the error in one line
|
|
18
|
+
4. Keep going — don't stop on failures
|
|
19
|
+
|
|
20
|
+
At the end, print a scorecard like this:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Rubyn Self-Test Results
|
|
24
|
+
═══════════════════════════════════════════
|
|
25
|
+
1. ✅ File read/write/edit cycle
|
|
26
|
+
2. ✅ Glob file search
|
|
27
|
+
3. ✅ Grep content search
|
|
28
|
+
4. ❌ Run specs — exit code 1 (3 failures)
|
|
29
|
+
5. ✅ Git status
|
|
30
|
+
...
|
|
31
|
+
═══════════════════════════════════════════
|
|
32
|
+
Score: 18/22 (82%) — 4 failures
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## The Tests
|
|
36
|
+
|
|
37
|
+
### 1. Tool System — File Operations
|
|
38
|
+
- **read_file**: Read `lib/rubyn_code/version.rb`. PASS if it contains `VERSION =`.
|
|
39
|
+
- **write_file**: Write a temp file `.rubyn-code/self_test_tmp.rb` with content `# self-test`. PASS if no error.
|
|
40
|
+
- **edit_file**: Edit that temp file — replace `# self-test` with `# self-test passed`. PASS if no error.
|
|
41
|
+
- **read_file** (verify): Read the temp file back. PASS if it contains `# self-test passed`.
|
|
42
|
+
- **Cleanup**: Delete the temp file with bash `rm .rubyn-code/self_test_tmp.rb`.
|
|
43
|
+
|
|
44
|
+
### 2. Tool System — Search
|
|
45
|
+
- **glob**: Find all `*.rb` files under `lib/`. PASS if result contains at least 50 files.
|
|
46
|
+
- **grep**: Search for `class.*Base` across `lib/`. PASS if at least 3 matches found.
|
|
47
|
+
|
|
48
|
+
### 3. Tool System — Bash
|
|
49
|
+
- **bash**: Run `ruby --version`. PASS if output contains `ruby`.
|
|
50
|
+
- **bash**: Run `bundle exec rubocop --version`. PASS if output contains a version number.
|
|
51
|
+
|
|
52
|
+
### 4. Tool System — Git
|
|
53
|
+
- **git_status**: Run git status. PASS if no error.
|
|
54
|
+
- **git_log**: Run git log (last 3 commits). PASS if output contains commit hashes.
|
|
55
|
+
- **git_diff**: Run git diff. PASS if no error (even if empty).
|
|
56
|
+
|
|
57
|
+
### 5. Tool System — Specs
|
|
58
|
+
- **run_specs**: Run `bundle exec rspec spec/rubyn_code/tools/output_compressor_spec.rb --format progress`. PASS if output contains `0 failures`.
|
|
59
|
+
- **run_specs**: Run `bundle exec rspec spec/rubyn_code/llm/model_router_spec.rb --format progress`. PASS if output contains `0 failures`.
|
|
60
|
+
|
|
61
|
+
### 6. Context & Efficiency Engine
|
|
62
|
+
|
|
63
|
+
#### File Cache
|
|
64
|
+
- Read `lib/rubyn_code/version.rb` twice. PASS if both reads succeed (cache should serve the second).
|
|
65
|
+
|
|
66
|
+
#### Output Compressor — Head/Tail Strategy
|
|
67
|
+
- Run `bash` with `seq 1 5000` (generates 5,000 lines — well over the bash threshold of 4,000 chars). PASS if the result contains "lines omitted" or is significantly shorter than 5,000 lines. This proves the head_tail compressor is working.
|
|
68
|
+
|
|
69
|
+
#### Output Compressor — Spec Summary Strategy
|
|
70
|
+
- Run `bash` with `cd <project_root> && bundle exec rspec spec/rubyn_code/tools/base_spec.rb --format documentation 2>&1`. This produces multi-line RSpec output. PASS if the result you receive is shorter than the full verbose output — specifically check if passing specs got compressed to a summary line like "N examples, 0 failures" instead of listing every example.
|
|
71
|
+
|
|
72
|
+
#### Output Compressor — Grep Top Matches
|
|
73
|
+
- Run `grep` searching for `def ` across all of `lib/`. This will match hundreds of method definitions. PASS if the result contains "matches omitted" or shows only a subset of results (the compressor limits to top N matches).
|
|
74
|
+
|
|
75
|
+
#### Output Compressor — Glob Tree Collapse
|
|
76
|
+
- Run `glob` for `**/*.rb` across the entire project. With 170+ files this should exceed the glob threshold. PASS if the result shows directory summaries like `app/models/ (N files)` instead of listing every individual file path, OR if the result is significantly shorter than listing all 170+ paths individually.
|
|
77
|
+
|
|
78
|
+
#### Output Compressor — Diff Strategy
|
|
79
|
+
- Run `bash` with `cd <project_root> && git log --oneline -1 --format=%H | xargs git diff HEAD~5..` (diff of last 5 commits). If the diff is large enough, the compressor should keep headers but truncate bodies. PASS if result contains diff headers. SKIP if diff is small enough to pass through uncompressed.
|
|
80
|
+
|
|
81
|
+
#### Compression Stats
|
|
82
|
+
- After running the above tests, note whether any output you received contained truncation markers like "lines omitted", "matches omitted", or "files)". Count how many of the 5 compression strategies actually triggered. Report: "N/5 compression strategies verified active".
|
|
83
|
+
|
|
84
|
+
### 7. Skills System
|
|
85
|
+
- **load_skill**: Load any available skill (e.g., `classes`). PASS if content is returned.
|
|
86
|
+
|
|
87
|
+
### 8. Memory System
|
|
88
|
+
- **memory_write**: Write a test memory: `category: "test", content: "self-test at #{Time.now}"`. PASS if no error.
|
|
89
|
+
- **memory_search**: Search for `self-test`. PASS if the memory we just wrote is found.
|
|
90
|
+
|
|
91
|
+
### 9. Configuration
|
|
92
|
+
- **bash**: Run `cat ~/.rubyn-code/config.yml`. PASS if file exists and contains `provider:`.
|
|
93
|
+
- **read_file**: Check if `.rubyn-code/project_profile.yml` exists in the project root. PASS if exists (or SKIP if first session).
|
|
94
|
+
|
|
95
|
+
### 10. Codebase Index
|
|
96
|
+
- **bash**: Check if `.rubyn-code/codebase_index.json` exists. PASS if exists (or SKIP if first session).
|
|
97
|
+
|
|
98
|
+
### 11. Slash Commands (report only — don't execute)
|
|
99
|
+
- Report which slash commands are registered by reading `lib/rubyn_code/cli/commands/registry.rb` or the help output. PASS if at least 15 commands found.
|
|
100
|
+
|
|
101
|
+
### 12. MCP Integration
|
|
102
|
+
- **grep**: Search for `url:.*server_def` in `lib/rubyn_code/mcp/config.rb`. PASS if at least 1 match found (confirms SSE url is extracted — a critical bug was shipped without this).
|
|
103
|
+
- **grep**: Search for `autoload.*Mcp` in `lib/rubyn_code.rb`. PASS if found (confirms `/mcp` command is wired up).
|
|
104
|
+
- **run_specs**: Run `bundle exec rspec spec/rubyn_code/mcp/config_spec.rb --format progress`. PASS if output contains `0 failures`.
|
|
105
|
+
- **bash**: Check if `.rubyn-code/mcp.json` exists in the project root. PASS if exists, SKIP if not (MCP is optional per-project).
|
|
106
|
+
|
|
107
|
+
### 13. GOLEM Autonomous Mode
|
|
108
|
+
- **grep**: Search for `class Daemon` in `lib/rubyn_code/autonomous/daemon.rb`. PASS if found (confirms daemon framework exists).
|
|
109
|
+
- **grep**: Search for `failed\?` in `lib/rubyn_code/tasks/models.rb`. PASS if found (confirms failed task status is available).
|
|
110
|
+
- **grep**: Search for `total_cost` in `lib/rubyn_code/autonomous/daemon.rb`. PASS if at least 2 matches (confirms cost tracking is implemented).
|
|
111
|
+
- **run_specs**: Run `bundle exec rspec spec/rubyn_code/autonomous/daemon_spec.rb --format progress`. PASS if output contains `0 failures` (verifies lifecycle, retries, cost limits, audit trails, concurrent claiming).
|
|
112
|
+
|
|
113
|
+
### 14. Architecture Integrity
|
|
114
|
+
- **grep**: Search for `autoload` in `lib/rubyn_code.rb`. PASS if at least 40 autoload entries found.
|
|
115
|
+
- **glob**: Check that all 16 layer directories exist under `lib/rubyn_code/`. PASS if at least 14 found.
|
|
116
|
+
- **read_file**: Read `lib/rubyn_code.rb` and verify it has modules for Agent, Tools, Context, Skills, Memory, Observability, Learning. PASS if all 7 found.
|
|
117
|
+
|
|
118
|
+
## Scoring
|
|
119
|
+
|
|
120
|
+
Count total PASS results out of total tests run. Report the percentage.
|
|
121
|
+
|
|
122
|
+
- **90-100%**: Rubyn is healthy. All major systems operational.
|
|
123
|
+
- **75-89%**: Rubyn is mostly working. Check the failures — they may be config/environment issues.
|
|
124
|
+
- **50-74%**: Something is wrong. Multiple subsystems are broken.
|
|
125
|
+
- **Below 50%**: Rubyn needs repair. Check installation, dependencies, and database.
|
|
126
|
+
|
|
127
|
+
## Important
|
|
128
|
+
|
|
129
|
+
- Do NOT skip tests. Run all of them.
|
|
130
|
+
- Do NOT stop on failures. Record and continue.
|
|
131
|
+
- Clean up any temp files you create.
|
|
132
|
+
- The self-test should take less than 60 seconds.
|
|
133
|
+
- Report the scorecard in a clear, formatted table at the end.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubyn-code
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- fadedmaturity
|
|
@@ -105,6 +105,20 @@ dependencies:
|
|
|
105
105
|
- - "~>"
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
107
|
version: '0.23'
|
|
108
|
+
- !ruby/object:Gem::Dependency
|
|
109
|
+
name: tty-reader
|
|
110
|
+
requirement: !ruby/object:Gem::Requirement
|
|
111
|
+
requirements:
|
|
112
|
+
- - "~>"
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: '0.9'
|
|
115
|
+
type: :runtime
|
|
116
|
+
prerelease: false
|
|
117
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
118
|
+
requirements:
|
|
119
|
+
- - "~>"
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: '0.9'
|
|
108
122
|
- !ruby/object:Gem::Dependency
|
|
109
123
|
name: tty-spinner
|
|
110
124
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -169,13 +183,25 @@ files:
|
|
|
169
183
|
- db/migrations/010_create_instincts.sql
|
|
170
184
|
- db/migrations/011_fix_mailbox_messages_columns.rb
|
|
171
185
|
- db/migrations/012_expand_mailbox_message_types.rb
|
|
186
|
+
- db/migrations/013_add_failed_status_to_tasks.rb
|
|
172
187
|
- exe/rubyn-code
|
|
173
188
|
- lib/rubyn_code.rb
|
|
174
189
|
- lib/rubyn_code/agent/RUBYN.md
|
|
190
|
+
- lib/rubyn_code/agent/background_job_handler.rb
|
|
175
191
|
- lib/rubyn_code/agent/conversation.rb
|
|
192
|
+
- lib/rubyn_code/agent/dynamic_tool_schema.rb
|
|
193
|
+
- lib/rubyn_code/agent/feedback_handler.rb
|
|
194
|
+
- lib/rubyn_code/agent/llm_caller.rb
|
|
176
195
|
- lib/rubyn_code/agent/loop.rb
|
|
177
196
|
- lib/rubyn_code/agent/loop_detector.rb
|
|
197
|
+
- lib/rubyn_code/agent/prompts.rb
|
|
198
|
+
- lib/rubyn_code/agent/response_modes.rb
|
|
199
|
+
- lib/rubyn_code/agent/response_parser.rb
|
|
200
|
+
- lib/rubyn_code/agent/system_prompt_builder.rb
|
|
201
|
+
- lib/rubyn_code/agent/tool_processor.rb
|
|
202
|
+
- lib/rubyn_code/agent/usage_tracker.rb
|
|
178
203
|
- lib/rubyn_code/auth/RUBYN.md
|
|
204
|
+
- lib/rubyn_code/auth/key_encryption.rb
|
|
179
205
|
- lib/rubyn_code/auth/oauth.rb
|
|
180
206
|
- lib/rubyn_code/auth/server.rb
|
|
181
207
|
- lib/rubyn_code/auth/token_store.rb
|
|
@@ -200,8 +226,11 @@ files:
|
|
|
200
226
|
- lib/rubyn_code/cli/commands/diff.rb
|
|
201
227
|
- lib/rubyn_code/cli/commands/doctor.rb
|
|
202
228
|
- lib/rubyn_code/cli/commands/help.rb
|
|
229
|
+
- lib/rubyn_code/cli/commands/mcp.rb
|
|
203
230
|
- lib/rubyn_code/cli/commands/model.rb
|
|
231
|
+
- lib/rubyn_code/cli/commands/new_session.rb
|
|
204
232
|
- lib/rubyn_code/cli/commands/plan.rb
|
|
233
|
+
- lib/rubyn_code/cli/commands/provider.rb
|
|
205
234
|
- lib/rubyn_code/cli/commands/quit.rb
|
|
206
235
|
- lib/rubyn_code/cli/commands/registry.rb
|
|
207
236
|
- lib/rubyn_code/cli/commands/resume.rb
|
|
@@ -213,9 +242,13 @@ files:
|
|
|
213
242
|
- lib/rubyn_code/cli/commands/undo.rb
|
|
214
243
|
- lib/rubyn_code/cli/commands/version.rb
|
|
215
244
|
- lib/rubyn_code/cli/daemon_runner.rb
|
|
245
|
+
- lib/rubyn_code/cli/first_run.rb
|
|
216
246
|
- lib/rubyn_code/cli/input_handler.rb
|
|
217
247
|
- lib/rubyn_code/cli/renderer.rb
|
|
218
248
|
- lib/rubyn_code/cli/repl.rb
|
|
249
|
+
- lib/rubyn_code/cli/repl_commands.rb
|
|
250
|
+
- lib/rubyn_code/cli/repl_lifecycle.rb
|
|
251
|
+
- lib/rubyn_code/cli/repl_setup.rb
|
|
219
252
|
- lib/rubyn_code/cli/setup.rb
|
|
220
253
|
- lib/rubyn_code/cli/spinner.rb
|
|
221
254
|
- lib/rubyn_code/cli/stream_formatter.rb
|
|
@@ -223,14 +256,20 @@ files:
|
|
|
223
256
|
- lib/rubyn_code/config/RUBYN.md
|
|
224
257
|
- lib/rubyn_code/config/defaults.rb
|
|
225
258
|
- lib/rubyn_code/config/project_config.rb
|
|
259
|
+
- lib/rubyn_code/config/project_profile.rb
|
|
260
|
+
- lib/rubyn_code/config/schema.json
|
|
226
261
|
- lib/rubyn_code/config/settings.rb
|
|
262
|
+
- lib/rubyn_code/config/validator.rb
|
|
227
263
|
- lib/rubyn_code/context/RUBYN.md
|
|
228
264
|
- lib/rubyn_code/context/auto_compact.rb
|
|
229
265
|
- lib/rubyn_code/context/compactor.rb
|
|
266
|
+
- lib/rubyn_code/context/context_budget.rb
|
|
230
267
|
- lib/rubyn_code/context/context_collapse.rb
|
|
268
|
+
- lib/rubyn_code/context/decision_compactor.rb
|
|
231
269
|
- lib/rubyn_code/context/manager.rb
|
|
232
270
|
- lib/rubyn_code/context/manual_compact.rb
|
|
233
271
|
- lib/rubyn_code/context/micro_compact.rb
|
|
272
|
+
- lib/rubyn_code/context/schema_filter.rb
|
|
234
273
|
- lib/rubyn_code/db/RUBYN.md
|
|
235
274
|
- lib/rubyn_code/db/connection.rb
|
|
236
275
|
- lib/rubyn_code/db/migrator.rb
|
|
@@ -241,13 +280,45 @@ files:
|
|
|
241
280
|
- lib/rubyn_code/hooks/registry.rb
|
|
242
281
|
- lib/rubyn_code/hooks/runner.rb
|
|
243
282
|
- lib/rubyn_code/hooks/user_hooks.rb
|
|
283
|
+
- lib/rubyn_code/ide/adapters/tool_output.rb
|
|
284
|
+
- lib/rubyn_code/ide/client.rb
|
|
285
|
+
- lib/rubyn_code/ide/handlers.rb
|
|
286
|
+
- lib/rubyn_code/ide/handlers/accept_edit_handler.rb
|
|
287
|
+
- lib/rubyn_code/ide/handlers/approve_tool_use_handler.rb
|
|
288
|
+
- lib/rubyn_code/ide/handlers/cancel_handler.rb
|
|
289
|
+
- lib/rubyn_code/ide/handlers/config_get_handler.rb
|
|
290
|
+
- lib/rubyn_code/ide/handlers/config_set_handler.rb
|
|
291
|
+
- lib/rubyn_code/ide/handlers/initialize_handler.rb
|
|
292
|
+
- lib/rubyn_code/ide/handlers/models_list_handler.rb
|
|
293
|
+
- lib/rubyn_code/ide/handlers/prompt_handler.rb
|
|
294
|
+
- lib/rubyn_code/ide/handlers/review_handler.rb
|
|
295
|
+
- lib/rubyn_code/ide/handlers/session_fork_handler.rb
|
|
296
|
+
- lib/rubyn_code/ide/handlers/session_list_handler.rb
|
|
297
|
+
- lib/rubyn_code/ide/handlers/session_reset_handler.rb
|
|
298
|
+
- lib/rubyn_code/ide/handlers/session_resume_handler.rb
|
|
299
|
+
- lib/rubyn_code/ide/handlers/shutdown_handler.rb
|
|
300
|
+
- lib/rubyn_code/ide/protocol.rb
|
|
301
|
+
- lib/rubyn_code/ide/server.rb
|
|
302
|
+
- lib/rubyn_code/index/codebase_index.rb
|
|
244
303
|
- lib/rubyn_code/learning/RUBYN.md
|
|
245
304
|
- lib/rubyn_code/learning/extractor.rb
|
|
246
305
|
- lib/rubyn_code/learning/injector.rb
|
|
247
306
|
- lib/rubyn_code/learning/instinct.rb
|
|
307
|
+
- lib/rubyn_code/learning/shortcut.rb
|
|
248
308
|
- lib/rubyn_code/llm/RUBYN.md
|
|
309
|
+
- lib/rubyn_code/llm/adapters/anthropic.rb
|
|
310
|
+
- lib/rubyn_code/llm/adapters/anthropic_compatible.rb
|
|
311
|
+
- lib/rubyn_code/llm/adapters/anthropic_streaming.rb
|
|
312
|
+
- lib/rubyn_code/llm/adapters/base.rb
|
|
313
|
+
- lib/rubyn_code/llm/adapters/json_parsing.rb
|
|
314
|
+
- lib/rubyn_code/llm/adapters/openai.rb
|
|
315
|
+
- lib/rubyn_code/llm/adapters/openai_compatible.rb
|
|
316
|
+
- lib/rubyn_code/llm/adapters/openai_message_translator.rb
|
|
317
|
+
- lib/rubyn_code/llm/adapters/openai_streaming.rb
|
|
318
|
+
- lib/rubyn_code/llm/adapters/prompt_caching.rb
|
|
249
319
|
- lib/rubyn_code/llm/client.rb
|
|
250
320
|
- lib/rubyn_code/llm/message_builder.rb
|
|
321
|
+
- lib/rubyn_code/llm/model_router.rb
|
|
251
322
|
- lib/rubyn_code/llm/streaming.rb
|
|
252
323
|
- lib/rubyn_code/mcp/RUBYN.md
|
|
253
324
|
- lib/rubyn_code/mcp/client.rb
|
|
@@ -264,6 +335,8 @@ files:
|
|
|
264
335
|
- lib/rubyn_code/observability/budget_enforcer.rb
|
|
265
336
|
- lib/rubyn_code/observability/cost_calculator.rb
|
|
266
337
|
- lib/rubyn_code/observability/models.rb
|
|
338
|
+
- lib/rubyn_code/observability/skill_analytics.rb
|
|
339
|
+
- lib/rubyn_code/observability/token_analytics.rb
|
|
267
340
|
- lib/rubyn_code/observability/token_counter.rb
|
|
268
341
|
- lib/rubyn_code/observability/usage_reporter.rb
|
|
269
342
|
- lib/rubyn_code/output/RUBYN.md
|
|
@@ -278,10 +351,12 @@ files:
|
|
|
278
351
|
- lib/rubyn_code/protocols/interrupt_handler.rb
|
|
279
352
|
- lib/rubyn_code/protocols/plan_approval.rb
|
|
280
353
|
- lib/rubyn_code/protocols/shutdown_handshake.rb
|
|
354
|
+
- lib/rubyn_code/self_test.rb
|
|
281
355
|
- lib/rubyn_code/skills/RUBYN.md
|
|
282
356
|
- lib/rubyn_code/skills/catalog.rb
|
|
283
357
|
- lib/rubyn_code/skills/document.rb
|
|
284
358
|
- lib/rubyn_code/skills/loader.rb
|
|
359
|
+
- lib/rubyn_code/skills/ttl_manager.rb
|
|
285
360
|
- lib/rubyn_code/sub_agents/RUBYN.md
|
|
286
361
|
- lib/rubyn_code/sub_agents/runner.rb
|
|
287
362
|
- lib/rubyn_code/sub_agents/summarizer.rb
|
|
@@ -294,6 +369,7 @@ files:
|
|
|
294
369
|
- lib/rubyn_code/teams/manager.rb
|
|
295
370
|
- lib/rubyn_code/teams/teammate.rb
|
|
296
371
|
- lib/rubyn_code/tools/RUBYN.md
|
|
372
|
+
- lib/rubyn_code/tools/ask_user.rb
|
|
297
373
|
- lib/rubyn_code/tools/background_run.rb
|
|
298
374
|
- lib/rubyn_code/tools/base.rb
|
|
299
375
|
- lib/rubyn_code/tools/bash.rb
|
|
@@ -303,15 +379,19 @@ files:
|
|
|
303
379
|
- lib/rubyn_code/tools/db_migrate.rb
|
|
304
380
|
- lib/rubyn_code/tools/edit_file.rb
|
|
305
381
|
- lib/rubyn_code/tools/executor.rb
|
|
382
|
+
- lib/rubyn_code/tools/file_cache.rb
|
|
306
383
|
- lib/rubyn_code/tools/git_commit.rb
|
|
307
384
|
- lib/rubyn_code/tools/git_diff.rb
|
|
308
385
|
- lib/rubyn_code/tools/git_log.rb
|
|
309
386
|
- lib/rubyn_code/tools/git_status.rb
|
|
310
387
|
- lib/rubyn_code/tools/glob.rb
|
|
311
388
|
- lib/rubyn_code/tools/grep.rb
|
|
389
|
+
- lib/rubyn_code/tools/ide_diagnostics.rb
|
|
390
|
+
- lib/rubyn_code/tools/ide_symbols.rb
|
|
312
391
|
- lib/rubyn_code/tools/load_skill.rb
|
|
313
392
|
- lib/rubyn_code/tools/memory_search.rb
|
|
314
393
|
- lib/rubyn_code/tools/memory_write.rb
|
|
394
|
+
- lib/rubyn_code/tools/output_compressor.rb
|
|
315
395
|
- lib/rubyn_code/tools/rails_generate.rb
|
|
316
396
|
- lib/rubyn_code/tools/read_file.rb
|
|
317
397
|
- lib/rubyn_code/tools/read_inbox.rb
|
|
@@ -322,6 +402,7 @@ files:
|
|
|
322
402
|
- lib/rubyn_code/tools/send_message.rb
|
|
323
403
|
- lib/rubyn_code/tools/spawn_agent.rb
|
|
324
404
|
- lib/rubyn_code/tools/spawn_teammate.rb
|
|
405
|
+
- lib/rubyn_code/tools/spec_output_parser.rb
|
|
325
406
|
- lib/rubyn_code/tools/task.rb
|
|
326
407
|
- lib/rubyn_code/tools/web_fetch.rb
|
|
327
408
|
- lib/rubyn_code/tools/web_search.rb
|
|
@@ -431,6 +512,7 @@ files:
|
|
|
431
512
|
- skills/ruby_project/cli_tools.md
|
|
432
513
|
- skills/ruby_project/rake_tasks.md
|
|
433
514
|
- skills/ruby_project/structure.md
|
|
515
|
+
- skills/rubyn_self_test.md
|
|
434
516
|
- skills/sinatra/application_structure.md
|
|
435
517
|
- skills/sinatra/middleware_and_deployment.md
|
|
436
518
|
- skills/sinatra/testing.md
|