aru-code 0.3.0__tar.gz → 0.4.0__tar.gz
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.
- {aru_code-0.3.0 → aru_code-0.4.0}/PKG-INFO +11 -13
- {aru_code-0.3.0 → aru_code-0.4.0}/README.md +9 -12
- aru_code-0.4.0/aru/__init__.py +1 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/cli.py +9 -11
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/config.py +8 -5
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/providers.py +5 -4
- {aru_code-0.3.0 → aru_code-0.4.0}/aru_code.egg-info/PKG-INFO +11 -13
- {aru_code-0.3.0 → aru_code-0.4.0}/aru_code.egg-info/requires.txt +1 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/pyproject.toml +83 -82
- aru_code-0.3.0/aru/__init__.py +0 -1
- {aru_code-0.3.0 → aru_code-0.4.0}/LICENSE +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/agents/__init__.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/agents/base.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/agents/executor.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/agents/planner.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/context.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/__init__.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/ast_tools.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/codebase.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/gitignore.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/mcp_client.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/ranker.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru/tools/tasklist.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru_code.egg-info/SOURCES.txt +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru_code.egg-info/dependency_links.txt +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru_code.egg-info/entry_points.txt +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/aru_code.egg-info/top_level.txt +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/setup.cfg +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_agents_base.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_ast_tools.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_advanced.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_base.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_completers.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_new.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_run_cli.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_session.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_cli_shell.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_codebase.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_config.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_context.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_executor.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_gitignore.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_main.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_mcp_client.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_planner.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_providers.py +0 -0
- {aru_code-0.3.0 → aru_code-0.4.0}/tests/test_ranker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aru-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: A Claude Code clone built with Agno agents
|
|
5
5
|
Author-email: Estevao <estevaofon@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -29,6 +29,7 @@ Requires-Dist: tree-sitter>=0.23
|
|
|
29
29
|
Requires-Dist: tree-sitter-python>=0.23
|
|
30
30
|
Requires-Dist: mcp>=1.0
|
|
31
31
|
Requires-Dist: openai>=2.29.0
|
|
32
|
+
Requires-Dist: pytest-asyncio>=1.3.0
|
|
32
33
|
Provides-Extra: dev
|
|
33
34
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
34
35
|
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
@@ -47,14 +48,8 @@ Dynamic: license-file
|
|
|
47
48
|
# aru
|
|
48
49
|
|
|
49
50
|
An intelligent coding assistant for the terminal, powered by LLMs and [Agno](https://github.com/agno-agi/agno) agents.
|
|
50
|
-
</br></br>
|
|
51
|
-
<img width="600" alt="image" src="https://github.com/user-attachments/assets/36001faa-3163-4374-84fd-da8704a4ed9d" />
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
https://github.com/user-attachments/assets/17674bfc-3d49-4e25-bdc7-dc445d5a089d
|
|
56
|
-
|
|
57
51
|
|
|
52
|
+

|
|
58
53
|
|
|
59
54
|
## Highlights
|
|
60
55
|
|
|
@@ -148,6 +143,7 @@ By default, aru uses **Claude Sonnet 4.6** (Anthropic). You can switch to any su
|
|
|
148
143
|
| **OpenAI** | `/model openai/gpt-4o` | `OPENAI_API_KEY` | `pip install "aru-code[openai]"` |
|
|
149
144
|
| **Groq** | `/model groq/llama-3.3-70b-versatile` | `GROQ_API_KEY` | `pip install "aru-code[groq]"` |
|
|
150
145
|
| **OpenRouter** | `/model openrouter/deepseek/deepseek-chat-v3-0324` | `OPENROUTER_API_KEY` | `pip install "aru-code[openai]"` |
|
|
146
|
+
| **MiniMax** | `/model openrouter/minimax/minimax-m2.7` | `OPENROUTER_API_KEY` | `pip install "aru-code[openai]"` |
|
|
151
147
|
|
|
152
148
|
To install all providers at once:
|
|
153
149
|
|
|
@@ -173,9 +169,10 @@ You can set the default provider/model in `aru.json` so you don't need to switch
|
|
|
173
169
|
|
|
174
170
|
```json
|
|
175
171
|
{
|
|
176
|
-
"
|
|
177
|
-
|
|
172
|
+
"default_model": "openrouter/minimax/minimax-m2.7",
|
|
173
|
+
"model_aliases": {
|
|
178
174
|
"minimax": "openrouter/minimax/minimax-m2.5",
|
|
175
|
+
"minimax-m2.7": "openrouter/minimax/minimax-m2.7",
|
|
179
176
|
"deepseek-v3": "openrouter/deepseek/deepseek-chat-v3-0324",
|
|
180
177
|
"sonnet-4-6": "anthropic/claude-sonnet-4-6",
|
|
181
178
|
"opus-4-6": "anthropic/claude-opus-4-6"
|
|
@@ -183,7 +180,7 @@ You can set the default provider/model in `aru.json` so you don't need to switch
|
|
|
183
180
|
}
|
|
184
181
|
```
|
|
185
182
|
|
|
186
|
-
The `
|
|
183
|
+
The `default_model` field sets the main model. The `model_aliases` are shortcuts that can be used with `/model <alias>`.
|
|
187
184
|
|
|
188
185
|
#### Custom providers
|
|
189
186
|
|
|
@@ -194,12 +191,13 @@ You can configure custom providers with specific token limits:
|
|
|
194
191
|
"providers": {
|
|
195
192
|
"deepseek": {
|
|
196
193
|
"models": {
|
|
197
|
-
"deepseek-chat-v3-0324": {
|
|
194
|
+
"deepseek-chat-v3-0324": { "max_tokens": 16384 }
|
|
198
195
|
}
|
|
199
196
|
},
|
|
200
197
|
"openrouter": {
|
|
201
198
|
"models": {
|
|
202
|
-
"minimax/minimax-m2.5": {
|
|
199
|
+
"minimax/minimax-m2.5": { "max_tokens": 65536 },
|
|
200
|
+
"minimax/minimax-m2.7": { "max_tokens": 131072 }
|
|
203
201
|
}
|
|
204
202
|
}
|
|
205
203
|
}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
# aru
|
|
2
2
|
|
|
3
3
|
An intelligent coding assistant for the terminal, powered by LLMs and [Agno](https://github.com/agno-agi/agno) agents.
|
|
4
|
-
</br></br>
|
|
5
|
-
<img width="600" alt="image" src="https://github.com/user-attachments/assets/36001faa-3163-4374-84fd-da8704a4ed9d" />
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
https://github.com/user-attachments/assets/17674bfc-3d49-4e25-bdc7-dc445d5a089d
|
|
10
|
-
|
|
11
4
|
|
|
5
|
+

|
|
12
6
|
|
|
13
7
|
## Highlights
|
|
14
8
|
|
|
@@ -102,6 +96,7 @@ By default, aru uses **Claude Sonnet 4.6** (Anthropic). You can switch to any su
|
|
|
102
96
|
| **OpenAI** | `/model openai/gpt-4o` | `OPENAI_API_KEY` | `pip install "aru-code[openai]"` |
|
|
103
97
|
| **Groq** | `/model groq/llama-3.3-70b-versatile` | `GROQ_API_KEY` | `pip install "aru-code[groq]"` |
|
|
104
98
|
| **OpenRouter** | `/model openrouter/deepseek/deepseek-chat-v3-0324` | `OPENROUTER_API_KEY` | `pip install "aru-code[openai]"` |
|
|
99
|
+
| **MiniMax** | `/model openrouter/minimax/minimax-m2.7` | `OPENROUTER_API_KEY` | `pip install "aru-code[openai]"` |
|
|
105
100
|
|
|
106
101
|
To install all providers at once:
|
|
107
102
|
|
|
@@ -127,9 +122,10 @@ You can set the default provider/model in `aru.json` so you don't need to switch
|
|
|
127
122
|
|
|
128
123
|
```json
|
|
129
124
|
{
|
|
130
|
-
"
|
|
131
|
-
|
|
125
|
+
"default_model": "openrouter/minimax/minimax-m2.7",
|
|
126
|
+
"model_aliases": {
|
|
132
127
|
"minimax": "openrouter/minimax/minimax-m2.5",
|
|
128
|
+
"minimax-m2.7": "openrouter/minimax/minimax-m2.7",
|
|
133
129
|
"deepseek-v3": "openrouter/deepseek/deepseek-chat-v3-0324",
|
|
134
130
|
"sonnet-4-6": "anthropic/claude-sonnet-4-6",
|
|
135
131
|
"opus-4-6": "anthropic/claude-opus-4-6"
|
|
@@ -137,7 +133,7 @@ You can set the default provider/model in `aru.json` so you don't need to switch
|
|
|
137
133
|
}
|
|
138
134
|
```
|
|
139
135
|
|
|
140
|
-
The `
|
|
136
|
+
The `default_model` field sets the main model. The `model_aliases` are shortcuts that can be used with `/model <alias>`.
|
|
141
137
|
|
|
142
138
|
#### Custom providers
|
|
143
139
|
|
|
@@ -148,12 +144,13 @@ You can configure custom providers with specific token limits:
|
|
|
148
144
|
"providers": {
|
|
149
145
|
"deepseek": {
|
|
150
146
|
"models": {
|
|
151
|
-
"deepseek-chat-v3-0324": {
|
|
147
|
+
"deepseek-chat-v3-0324": { "max_tokens": 16384 }
|
|
152
148
|
}
|
|
153
149
|
},
|
|
154
150
|
"openrouter": {
|
|
155
151
|
"models": {
|
|
156
|
-
"minimax/minimax-m2.5": {
|
|
152
|
+
"minimax/minimax-m2.5": { "max_tokens": 65536 },
|
|
153
|
+
"minimax/minimax-m2.7": { "max_tokens": 131072 }
|
|
157
154
|
}
|
|
158
155
|
}
|
|
159
156
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.0"
|
|
@@ -1689,7 +1689,7 @@ async def run_cli(skip_permissions: bool = False, resume_id: str | None = None):
|
|
|
1689
1689
|
"""Sync the model IDs to the tools module from the session's model_ref."""
|
|
1690
1690
|
set_model_id(sess.model_id)
|
|
1691
1691
|
# Determine small model for sub-agents based on provider
|
|
1692
|
-
small_ref = config.
|
|
1692
|
+
small_ref = config.model_aliases.get("small") if config else None
|
|
1693
1693
|
if not small_ref:
|
|
1694
1694
|
provider_key, _ = resolve_model_ref(sess.model_ref)
|
|
1695
1695
|
# Use same provider but pick a small/fast model
|
|
@@ -1742,8 +1742,8 @@ async def run_cli(skip_permissions: bool = False, resume_id: str | None = None):
|
|
|
1742
1742
|
else:
|
|
1743
1743
|
session = Session()
|
|
1744
1744
|
# Apply default model from config if set
|
|
1745
|
-
if config.
|
|
1746
|
-
session.model_ref = config.
|
|
1745
|
+
if config.default_model:
|
|
1746
|
+
session.model_ref = config.default_model
|
|
1747
1747
|
_sync_model(session)
|
|
1748
1748
|
_render_home(session, skip_permissions)
|
|
1749
1749
|
|
|
@@ -1826,13 +1826,11 @@ async def run_cli(skip_permissions: bool = False, resume_id: str | None = None):
|
|
|
1826
1826
|
console.print(f"[bold]Current model:[/bold] {session.model_display} ({session.model_id})")
|
|
1827
1827
|
console.print()
|
|
1828
1828
|
# Show model aliases from aru.json
|
|
1829
|
-
if config.
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
console.print("[
|
|
1833
|
-
|
|
1834
|
-
console.print(f" [cyan]{alias}[/cyan] → {ref}")
|
|
1835
|
-
console.print()
|
|
1829
|
+
if config.model_aliases:
|
|
1830
|
+
console.print("[bold]Model aliases (aru.json):[/bold]")
|
|
1831
|
+
for alias, ref in config.model_aliases.items():
|
|
1832
|
+
console.print(f" [cyan]{alias}[/cyan] → {ref}")
|
|
1833
|
+
console.print()
|
|
1836
1834
|
console.print("[bold]Aliases:[/bold]")
|
|
1837
1835
|
for alias, ref in MODEL_ALIASES.items():
|
|
1838
1836
|
console.print(f" [cyan]{alias}[/cyan] → {ref}")
|
|
@@ -1847,7 +1845,7 @@ async def run_cli(skip_permissions: bool = False, resume_id: str | None = None):
|
|
|
1847
1845
|
arg_lower = arg.lower()
|
|
1848
1846
|
try:
|
|
1849
1847
|
# Resolve config aliases (aru.json "models" section) first
|
|
1850
|
-
resolved_ref = config.
|
|
1848
|
+
resolved_ref = config.model_aliases.get(arg_lower, arg_lower) if config.model_aliases else arg_lower
|
|
1851
1849
|
# Validate the model reference resolves to a known provider
|
|
1852
1850
|
provider_key, model_name = resolve_model_ref(resolved_ref)
|
|
1853
1851
|
from aru.providers import get_provider
|
|
@@ -46,7 +46,8 @@ class AgentConfig:
|
|
|
46
46
|
commands: dict[str, CustomCommand] = field(default_factory=dict)
|
|
47
47
|
skills: dict[str, Skill] = field(default_factory=dict)
|
|
48
48
|
permissions: dict[str, Any] = field(default_factory=dict)
|
|
49
|
-
|
|
49
|
+
default_model: str | None = None
|
|
50
|
+
model_aliases: dict[str, str] = field(default_factory=dict)
|
|
50
51
|
plan_reviewer: bool = True
|
|
51
52
|
|
|
52
53
|
@property
|
|
@@ -213,12 +214,14 @@ def load_config(cwd: str | None = None) -> AgentConfig:
|
|
|
213
214
|
if "permission" in data:
|
|
214
215
|
config.permissions = data["permission"]
|
|
215
216
|
# Load provider configuration
|
|
216
|
-
if "providers" in data
|
|
217
|
+
if "providers" in data:
|
|
217
218
|
from aru.providers import load_providers_from_config
|
|
218
219
|
load_providers_from_config(data)
|
|
219
|
-
# Store model
|
|
220
|
-
if "
|
|
221
|
-
config.
|
|
220
|
+
# Store default model and aliases for CLI
|
|
221
|
+
if "default_model" in data:
|
|
222
|
+
config.default_model = data["default_model"]
|
|
223
|
+
if "model_aliases" in data and isinstance(data["model_aliases"], dict):
|
|
224
|
+
config.model_aliases = data["model_aliases"]
|
|
222
225
|
if "plan_reviewer" in data:
|
|
223
226
|
config.plan_reviewer = bool(data["plan_reviewer"])
|
|
224
227
|
break
|
|
@@ -141,6 +141,11 @@ def load_providers_from_config(config_data: dict[str, Any]):
|
|
|
141
141
|
|
|
142
142
|
Expected format in aru.json:
|
|
143
143
|
{
|
|
144
|
+
"default_model": "anthropic/claude-sonnet-4-5",
|
|
145
|
+
"model_aliases": {
|
|
146
|
+
"small": "anthropic/claude-haiku-4-5",
|
|
147
|
+
"deepseek-v3": "openrouter/deepseek/deepseek-chat-v3-0324"
|
|
148
|
+
},
|
|
144
149
|
"providers": {
|
|
145
150
|
"ollama": {
|
|
146
151
|
"base_url": "http://localhost:11434",
|
|
@@ -157,10 +162,6 @@ def load_providers_from_config(config_data: dict[str, Any]):
|
|
|
157
162
|
"my-model": {"id": "my-model-v1"}
|
|
158
163
|
}
|
|
159
164
|
}
|
|
160
|
-
},
|
|
161
|
-
"models": {
|
|
162
|
-
"default": "anthropic/claude-sonnet-4-5",
|
|
163
|
-
"small": "anthropic/claude-haiku-4-5"
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aru-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: A Claude Code clone built with Agno agents
|
|
5
5
|
Author-email: Estevao <estevaofon@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -29,6 +29,7 @@ Requires-Dist: tree-sitter>=0.23
|
|
|
29
29
|
Requires-Dist: tree-sitter-python>=0.23
|
|
30
30
|
Requires-Dist: mcp>=1.0
|
|
31
31
|
Requires-Dist: openai>=2.29.0
|
|
32
|
+
Requires-Dist: pytest-asyncio>=1.3.0
|
|
32
33
|
Provides-Extra: dev
|
|
33
34
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
34
35
|
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
@@ -47,14 +48,8 @@ Dynamic: license-file
|
|
|
47
48
|
# aru
|
|
48
49
|
|
|
49
50
|
An intelligent coding assistant for the terminal, powered by LLMs and [Agno](https://github.com/agno-agi/agno) agents.
|
|
50
|
-
</br></br>
|
|
51
|
-
<img width="600" alt="image" src="https://github.com/user-attachments/assets/36001faa-3163-4374-84fd-da8704a4ed9d" />
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
https://github.com/user-attachments/assets/17674bfc-3d49-4e25-bdc7-dc445d5a089d
|
|
56
|
-
|
|
57
51
|
|
|
52
|
+

|
|
58
53
|
|
|
59
54
|
## Highlights
|
|
60
55
|
|
|
@@ -148,6 +143,7 @@ By default, aru uses **Claude Sonnet 4.6** (Anthropic). You can switch to any su
|
|
|
148
143
|
| **OpenAI** | `/model openai/gpt-4o` | `OPENAI_API_KEY` | `pip install "aru-code[openai]"` |
|
|
149
144
|
| **Groq** | `/model groq/llama-3.3-70b-versatile` | `GROQ_API_KEY` | `pip install "aru-code[groq]"` |
|
|
150
145
|
| **OpenRouter** | `/model openrouter/deepseek/deepseek-chat-v3-0324` | `OPENROUTER_API_KEY` | `pip install "aru-code[openai]"` |
|
|
146
|
+
| **MiniMax** | `/model openrouter/minimax/minimax-m2.7` | `OPENROUTER_API_KEY` | `pip install "aru-code[openai]"` |
|
|
151
147
|
|
|
152
148
|
To install all providers at once:
|
|
153
149
|
|
|
@@ -173,9 +169,10 @@ You can set the default provider/model in `aru.json` so you don't need to switch
|
|
|
173
169
|
|
|
174
170
|
```json
|
|
175
171
|
{
|
|
176
|
-
"
|
|
177
|
-
|
|
172
|
+
"default_model": "openrouter/minimax/minimax-m2.7",
|
|
173
|
+
"model_aliases": {
|
|
178
174
|
"minimax": "openrouter/minimax/minimax-m2.5",
|
|
175
|
+
"minimax-m2.7": "openrouter/minimax/minimax-m2.7",
|
|
179
176
|
"deepseek-v3": "openrouter/deepseek/deepseek-chat-v3-0324",
|
|
180
177
|
"sonnet-4-6": "anthropic/claude-sonnet-4-6",
|
|
181
178
|
"opus-4-6": "anthropic/claude-opus-4-6"
|
|
@@ -183,7 +180,7 @@ You can set the default provider/model in `aru.json` so you don't need to switch
|
|
|
183
180
|
}
|
|
184
181
|
```
|
|
185
182
|
|
|
186
|
-
The `
|
|
183
|
+
The `default_model` field sets the main model. The `model_aliases` are shortcuts that can be used with `/model <alias>`.
|
|
187
184
|
|
|
188
185
|
#### Custom providers
|
|
189
186
|
|
|
@@ -194,12 +191,13 @@ You can configure custom providers with specific token limits:
|
|
|
194
191
|
"providers": {
|
|
195
192
|
"deepseek": {
|
|
196
193
|
"models": {
|
|
197
|
-
"deepseek-chat-v3-0324": {
|
|
194
|
+
"deepseek-chat-v3-0324": { "max_tokens": 16384 }
|
|
198
195
|
}
|
|
199
196
|
},
|
|
200
197
|
"openrouter": {
|
|
201
198
|
"models": {
|
|
202
|
-
"minimax/minimax-m2.5": {
|
|
199
|
+
"minimax/minimax-m2.5": { "max_tokens": 65536 },
|
|
200
|
+
"minimax/minimax-m2.7": { "max_tokens": 131072 }
|
|
203
201
|
}
|
|
204
202
|
}
|
|
205
203
|
}
|
|
@@ -1,82 +1,83 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=75.0", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "aru-code"
|
|
7
|
-
version = "0.
|
|
8
|
-
description = "A Claude Code clone built with Agno agents"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
license = "MIT"
|
|
11
|
-
requires-python = ">=3.11"
|
|
12
|
-
authors = [
|
|
13
|
-
{ name = "Estevao", email = "estevaofon@gmail.com" },
|
|
14
|
-
]
|
|
15
|
-
keywords = ["ai", "coding-assistant", "claude", "cli", "agents"]
|
|
16
|
-
classifiers = [
|
|
17
|
-
"Development Status :: 3 - Alpha",
|
|
18
|
-
"Environment :: Console",
|
|
19
|
-
"Intended Audience :: Developers",
|
|
20
|
-
"Programming Language :: Python :: 3.11",
|
|
21
|
-
"Programming Language :: Python :: 3.12",
|
|
22
|
-
"Programming Language :: Python :: 3.13",
|
|
23
|
-
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
24
|
-
]
|
|
25
|
-
|
|
26
|
-
dependencies = [
|
|
27
|
-
"agno>=2.5.10,<3",
|
|
28
|
-
"anthropic",
|
|
29
|
-
"httpx",
|
|
30
|
-
"pathspec>=0.12",
|
|
31
|
-
"python-dotenv>=1.2.2",
|
|
32
|
-
"prompt-toolkit>=3.0",
|
|
33
|
-
"rich",
|
|
34
|
-
"tree-sitter>=0.23",
|
|
35
|
-
"tree-sitter-python>=0.23",
|
|
36
|
-
"mcp>=1.0",
|
|
37
|
-
"openai>=2.29.0",
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"pytest
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
"
|
|
72
|
-
"--
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=75.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "aru-code"
|
|
7
|
+
version = "0.4.0"
|
|
8
|
+
description = "A Claude Code clone built with Agno agents"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "Estevao", email = "estevaofon@gmail.com" },
|
|
14
|
+
]
|
|
15
|
+
keywords = ["ai", "coding-assistant", "claude", "cli", "agents"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Programming Language :: Python :: 3.13",
|
|
23
|
+
"Topic :: Software Development :: Libraries :: Application Frameworks",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
dependencies = [
|
|
27
|
+
"agno>=2.5.10,<3",
|
|
28
|
+
"anthropic",
|
|
29
|
+
"httpx",
|
|
30
|
+
"pathspec>=0.12",
|
|
31
|
+
"python-dotenv>=1.2.2",
|
|
32
|
+
"prompt-toolkit>=3.0",
|
|
33
|
+
"rich",
|
|
34
|
+
"tree-sitter>=0.23",
|
|
35
|
+
"tree-sitter-python>=0.23",
|
|
36
|
+
"mcp>=1.0",
|
|
37
|
+
"openai>=2.29.0",
|
|
38
|
+
"pytest-asyncio>=1.3.0",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[project.urls]
|
|
42
|
+
Homepage = "https://github.com/estevaofon/aru"
|
|
43
|
+
Repository = "https://github.com/estevaofon/aru"
|
|
44
|
+
Issues = "https://github.com/estevaofon/aru/issues"
|
|
45
|
+
|
|
46
|
+
[project.optional-dependencies]
|
|
47
|
+
dev = [
|
|
48
|
+
"pytest>=8.0",
|
|
49
|
+
"pytest-asyncio>=0.23",
|
|
50
|
+
]
|
|
51
|
+
openai = ["openai>=1.0"]
|
|
52
|
+
ollama = ["ollama>=0.4"]
|
|
53
|
+
groq = ["groq>=0.4"]
|
|
54
|
+
all-providers = [
|
|
55
|
+
"openai>=1.0",
|
|
56
|
+
"ollama>=0.4",
|
|
57
|
+
"groq>=0.4",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[project.scripts]
|
|
61
|
+
aru = "aru.cli:main"
|
|
62
|
+
|
|
63
|
+
[tool.pytest.ini_options]
|
|
64
|
+
testpaths = ["tests"]
|
|
65
|
+
python_files = ["test_*.py"]
|
|
66
|
+
python_classes = ["Test*"]
|
|
67
|
+
python_functions = ["test_*"]
|
|
68
|
+
asyncio_mode = "auto"
|
|
69
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
70
|
+
addopts = [
|
|
71
|
+
"-v",
|
|
72
|
+
"--strict-markers",
|
|
73
|
+
"--tb=short",
|
|
74
|
+
]
|
|
75
|
+
markers = [
|
|
76
|
+
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
77
|
+
"integration: marks tests as integration tests",
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
[dependency-groups]
|
|
81
|
+
dev = [
|
|
82
|
+
"pytest-cov>=7.1.0",
|
|
83
|
+
]
|
aru_code-0.3.0/aru/__init__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.3.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|