rubyn-code 0.2.2 → 0.3.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 +91 -3
- data/lib/rubyn_code/agent/background_job_handler.rb +71 -0
- data/lib/rubyn_code/agent/conversation.rb +55 -56
- data/lib/rubyn_code/agent/dynamic_tool_schema.rb +99 -0
- data/lib/rubyn_code/agent/feedback_handler.rb +49 -0
- data/lib/rubyn_code/agent/llm_caller.rb +149 -0
- data/lib/rubyn_code/agent/loop.rb +175 -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 +205 -0
- data/lib/rubyn_code/agent/tool_processor.rb +158 -0
- data/lib/rubyn_code/agent/usage_tracker.rb +59 -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 +31 -44
- data/lib/rubyn_code/autonomous/daemon.rb +29 -18
- data/lib/rubyn_code/autonomous/idle_poller.rb +4 -4
- data/lib/rubyn_code/autonomous/task_claimer.rb +36 -40
- data/lib/rubyn_code/background/worker.rb +64 -76
- data/lib/rubyn_code/cli/app.rb +128 -114
- data/lib/rubyn_code/cli/commands/model.rb +75 -18
- data/lib/rubyn_code/cli/commands/new_session.rb +45 -0
- data/lib/rubyn_code/cli/daemon_runner.rb +28 -11
- data/lib/rubyn_code/cli/renderer.rb +109 -60
- data/lib/rubyn_code/cli/repl.rb +42 -373
- data/lib/rubyn_code/cli/repl_commands.rb +176 -0
- data/lib/rubyn_code/cli/repl_lifecycle.rb +75 -0
- data/lib/rubyn_code/cli/repl_setup.rb +145 -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 +10 -0
- data/lib/rubyn_code/config/project_profile.rb +185 -0
- data/lib/rubyn_code/config/settings.rb +100 -1
- data/lib/rubyn_code/context/auto_compact.rb +1 -1
- data/lib/rubyn_code/context/context_budget.rb +167 -0
- data/lib/rubyn_code/context/decision_compactor.rb +99 -0
- data/lib/rubyn_code/context/manager.rb +7 -5
- 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/index/codebase_index.rb +245 -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 +270 -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 +46 -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 +55 -252
- 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 +9 -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/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/skills/document.rb +33 -29
- 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/tools/ask_user.rb +44 -0
- data/lib/rubyn_code/tools/background_run.rb +2 -1
- data/lib/rubyn_code/tools/base.rb +26 -32
- data/lib/rubyn_code/tools/bash.rb +2 -1
- data/lib/rubyn_code/tools/edit_file.rb +74 -18
- data/lib/rubyn_code/tools/executor.rb +74 -24
- 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 +23 -7
- data/lib/rubyn_code/tools/grep.rb +2 -1
- 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 +185 -0
- data/lib/rubyn_code/tools/read_file.rb +11 -6
- 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 +59 -1
- data/lib/rubyn_code/version.rb +1 -1
- data/lib/rubyn_code.rb +40 -1
- data/skills/rubyn_self_test.md +121 -0
- metadata +53 -1
|
@@ -0,0 +1,121 @@
|
|
|
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. Architecture Integrity
|
|
102
|
+
- **grep**: Search for `autoload` in `lib/rubyn_code.rb`. PASS if at least 40 autoload entries found.
|
|
103
|
+
- **glob**: Check that all 16 layer directories exist under `lib/rubyn_code/`. PASS if at least 14 found.
|
|
104
|
+
- **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.
|
|
105
|
+
|
|
106
|
+
## Scoring
|
|
107
|
+
|
|
108
|
+
Count total PASS results out of total tests run. Report the percentage.
|
|
109
|
+
|
|
110
|
+
- **90-100%**: Rubyn is healthy. All major systems operational.
|
|
111
|
+
- **75-89%**: Rubyn is mostly working. Check the failures — they may be config/environment issues.
|
|
112
|
+
- **50-74%**: Something is wrong. Multiple subsystems are broken.
|
|
113
|
+
- **Below 50%**: Rubyn needs repair. Check installation, dependencies, and database.
|
|
114
|
+
|
|
115
|
+
## Important
|
|
116
|
+
|
|
117
|
+
- Do NOT skip tests. Run all of them.
|
|
118
|
+
- Do NOT stop on failures. Record and continue.
|
|
119
|
+
- Clean up any temp files you create.
|
|
120
|
+
- The self-test should take less than 60 seconds.
|
|
121
|
+
- 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.3.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
|
|
@@ -172,9 +186,19 @@ files:
|
|
|
172
186
|
- exe/rubyn-code
|
|
173
187
|
- lib/rubyn_code.rb
|
|
174
188
|
- lib/rubyn_code/agent/RUBYN.md
|
|
189
|
+
- lib/rubyn_code/agent/background_job_handler.rb
|
|
175
190
|
- lib/rubyn_code/agent/conversation.rb
|
|
191
|
+
- lib/rubyn_code/agent/dynamic_tool_schema.rb
|
|
192
|
+
- lib/rubyn_code/agent/feedback_handler.rb
|
|
193
|
+
- lib/rubyn_code/agent/llm_caller.rb
|
|
176
194
|
- lib/rubyn_code/agent/loop.rb
|
|
177
195
|
- lib/rubyn_code/agent/loop_detector.rb
|
|
196
|
+
- lib/rubyn_code/agent/prompts.rb
|
|
197
|
+
- lib/rubyn_code/agent/response_modes.rb
|
|
198
|
+
- lib/rubyn_code/agent/response_parser.rb
|
|
199
|
+
- lib/rubyn_code/agent/system_prompt_builder.rb
|
|
200
|
+
- lib/rubyn_code/agent/tool_processor.rb
|
|
201
|
+
- lib/rubyn_code/agent/usage_tracker.rb
|
|
178
202
|
- lib/rubyn_code/auth/RUBYN.md
|
|
179
203
|
- lib/rubyn_code/auth/oauth.rb
|
|
180
204
|
- lib/rubyn_code/auth/server.rb
|
|
@@ -201,6 +225,7 @@ files:
|
|
|
201
225
|
- lib/rubyn_code/cli/commands/doctor.rb
|
|
202
226
|
- lib/rubyn_code/cli/commands/help.rb
|
|
203
227
|
- lib/rubyn_code/cli/commands/model.rb
|
|
228
|
+
- lib/rubyn_code/cli/commands/new_session.rb
|
|
204
229
|
- lib/rubyn_code/cli/commands/plan.rb
|
|
205
230
|
- lib/rubyn_code/cli/commands/quit.rb
|
|
206
231
|
- lib/rubyn_code/cli/commands/registry.rb
|
|
@@ -216,6 +241,9 @@ files:
|
|
|
216
241
|
- lib/rubyn_code/cli/input_handler.rb
|
|
217
242
|
- lib/rubyn_code/cli/renderer.rb
|
|
218
243
|
- lib/rubyn_code/cli/repl.rb
|
|
244
|
+
- lib/rubyn_code/cli/repl_commands.rb
|
|
245
|
+
- lib/rubyn_code/cli/repl_lifecycle.rb
|
|
246
|
+
- lib/rubyn_code/cli/repl_setup.rb
|
|
219
247
|
- lib/rubyn_code/cli/setup.rb
|
|
220
248
|
- lib/rubyn_code/cli/spinner.rb
|
|
221
249
|
- lib/rubyn_code/cli/stream_formatter.rb
|
|
@@ -223,14 +251,18 @@ files:
|
|
|
223
251
|
- lib/rubyn_code/config/RUBYN.md
|
|
224
252
|
- lib/rubyn_code/config/defaults.rb
|
|
225
253
|
- lib/rubyn_code/config/project_config.rb
|
|
254
|
+
- lib/rubyn_code/config/project_profile.rb
|
|
226
255
|
- lib/rubyn_code/config/settings.rb
|
|
227
256
|
- lib/rubyn_code/context/RUBYN.md
|
|
228
257
|
- lib/rubyn_code/context/auto_compact.rb
|
|
229
258
|
- lib/rubyn_code/context/compactor.rb
|
|
259
|
+
- lib/rubyn_code/context/context_budget.rb
|
|
230
260
|
- lib/rubyn_code/context/context_collapse.rb
|
|
261
|
+
- lib/rubyn_code/context/decision_compactor.rb
|
|
231
262
|
- lib/rubyn_code/context/manager.rb
|
|
232
263
|
- lib/rubyn_code/context/manual_compact.rb
|
|
233
264
|
- lib/rubyn_code/context/micro_compact.rb
|
|
265
|
+
- lib/rubyn_code/context/schema_filter.rb
|
|
234
266
|
- lib/rubyn_code/db/RUBYN.md
|
|
235
267
|
- lib/rubyn_code/db/connection.rb
|
|
236
268
|
- lib/rubyn_code/db/migrator.rb
|
|
@@ -241,13 +273,25 @@ files:
|
|
|
241
273
|
- lib/rubyn_code/hooks/registry.rb
|
|
242
274
|
- lib/rubyn_code/hooks/runner.rb
|
|
243
275
|
- lib/rubyn_code/hooks/user_hooks.rb
|
|
276
|
+
- lib/rubyn_code/index/codebase_index.rb
|
|
244
277
|
- lib/rubyn_code/learning/RUBYN.md
|
|
245
278
|
- lib/rubyn_code/learning/extractor.rb
|
|
246
279
|
- lib/rubyn_code/learning/injector.rb
|
|
247
280
|
- lib/rubyn_code/learning/instinct.rb
|
|
281
|
+
- lib/rubyn_code/learning/shortcut.rb
|
|
248
282
|
- lib/rubyn_code/llm/RUBYN.md
|
|
283
|
+
- lib/rubyn_code/llm/adapters/anthropic.rb
|
|
284
|
+
- lib/rubyn_code/llm/adapters/anthropic_streaming.rb
|
|
285
|
+
- lib/rubyn_code/llm/adapters/base.rb
|
|
286
|
+
- lib/rubyn_code/llm/adapters/json_parsing.rb
|
|
287
|
+
- lib/rubyn_code/llm/adapters/openai.rb
|
|
288
|
+
- lib/rubyn_code/llm/adapters/openai_compatible.rb
|
|
289
|
+
- lib/rubyn_code/llm/adapters/openai_message_translator.rb
|
|
290
|
+
- lib/rubyn_code/llm/adapters/openai_streaming.rb
|
|
291
|
+
- lib/rubyn_code/llm/adapters/prompt_caching.rb
|
|
249
292
|
- lib/rubyn_code/llm/client.rb
|
|
250
293
|
- lib/rubyn_code/llm/message_builder.rb
|
|
294
|
+
- lib/rubyn_code/llm/model_router.rb
|
|
251
295
|
- lib/rubyn_code/llm/streaming.rb
|
|
252
296
|
- lib/rubyn_code/mcp/RUBYN.md
|
|
253
297
|
- lib/rubyn_code/mcp/client.rb
|
|
@@ -264,6 +308,8 @@ files:
|
|
|
264
308
|
- lib/rubyn_code/observability/budget_enforcer.rb
|
|
265
309
|
- lib/rubyn_code/observability/cost_calculator.rb
|
|
266
310
|
- lib/rubyn_code/observability/models.rb
|
|
311
|
+
- lib/rubyn_code/observability/skill_analytics.rb
|
|
312
|
+
- lib/rubyn_code/observability/token_analytics.rb
|
|
267
313
|
- lib/rubyn_code/observability/token_counter.rb
|
|
268
314
|
- lib/rubyn_code/observability/usage_reporter.rb
|
|
269
315
|
- lib/rubyn_code/output/RUBYN.md
|
|
@@ -282,6 +328,7 @@ files:
|
|
|
282
328
|
- lib/rubyn_code/skills/catalog.rb
|
|
283
329
|
- lib/rubyn_code/skills/document.rb
|
|
284
330
|
- lib/rubyn_code/skills/loader.rb
|
|
331
|
+
- lib/rubyn_code/skills/ttl_manager.rb
|
|
285
332
|
- lib/rubyn_code/sub_agents/RUBYN.md
|
|
286
333
|
- lib/rubyn_code/sub_agents/runner.rb
|
|
287
334
|
- lib/rubyn_code/sub_agents/summarizer.rb
|
|
@@ -294,6 +341,7 @@ files:
|
|
|
294
341
|
- lib/rubyn_code/teams/manager.rb
|
|
295
342
|
- lib/rubyn_code/teams/teammate.rb
|
|
296
343
|
- lib/rubyn_code/tools/RUBYN.md
|
|
344
|
+
- lib/rubyn_code/tools/ask_user.rb
|
|
297
345
|
- lib/rubyn_code/tools/background_run.rb
|
|
298
346
|
- lib/rubyn_code/tools/base.rb
|
|
299
347
|
- lib/rubyn_code/tools/bash.rb
|
|
@@ -303,6 +351,7 @@ files:
|
|
|
303
351
|
- lib/rubyn_code/tools/db_migrate.rb
|
|
304
352
|
- lib/rubyn_code/tools/edit_file.rb
|
|
305
353
|
- lib/rubyn_code/tools/executor.rb
|
|
354
|
+
- lib/rubyn_code/tools/file_cache.rb
|
|
306
355
|
- lib/rubyn_code/tools/git_commit.rb
|
|
307
356
|
- lib/rubyn_code/tools/git_diff.rb
|
|
308
357
|
- lib/rubyn_code/tools/git_log.rb
|
|
@@ -312,6 +361,7 @@ files:
|
|
|
312
361
|
- lib/rubyn_code/tools/load_skill.rb
|
|
313
362
|
- lib/rubyn_code/tools/memory_search.rb
|
|
314
363
|
- lib/rubyn_code/tools/memory_write.rb
|
|
364
|
+
- lib/rubyn_code/tools/output_compressor.rb
|
|
315
365
|
- lib/rubyn_code/tools/rails_generate.rb
|
|
316
366
|
- lib/rubyn_code/tools/read_file.rb
|
|
317
367
|
- lib/rubyn_code/tools/read_inbox.rb
|
|
@@ -322,6 +372,7 @@ files:
|
|
|
322
372
|
- lib/rubyn_code/tools/send_message.rb
|
|
323
373
|
- lib/rubyn_code/tools/spawn_agent.rb
|
|
324
374
|
- lib/rubyn_code/tools/spawn_teammate.rb
|
|
375
|
+
- lib/rubyn_code/tools/spec_output_parser.rb
|
|
325
376
|
- lib/rubyn_code/tools/task.rb
|
|
326
377
|
- lib/rubyn_code/tools/web_fetch.rb
|
|
327
378
|
- lib/rubyn_code/tools/web_search.rb
|
|
@@ -431,6 +482,7 @@ files:
|
|
|
431
482
|
- skills/ruby_project/cli_tools.md
|
|
432
483
|
- skills/ruby_project/rake_tasks.md
|
|
433
484
|
- skills/ruby_project/structure.md
|
|
485
|
+
- skills/rubyn_self_test.md
|
|
434
486
|
- skills/sinatra/application_structure.md
|
|
435
487
|
- skills/sinatra/middleware_and_deployment.md
|
|
436
488
|
- skills/sinatra/testing.md
|