aru-code 0.5.0__tar.gz → 0.7.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.5.0 → aru_code-0.7.0}/PKG-INFO +9 -2
- {aru_code-0.5.0 → aru_code-0.7.0}/README.md +8 -1
- aru_code-0.7.0/aru/__init__.py +1 -0
- aru_code-0.7.0/aru/agent_factory.py +66 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/agents/planner.py +1 -1
- aru_code-0.7.0/aru/cli.py +568 -0
- aru_code-0.7.0/aru/commands.py +102 -0
- aru_code-0.7.0/aru/completers.py +300 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/config.py +8 -0
- aru_code-0.7.0/aru/display.py +334 -0
- aru_code-0.7.0/aru/runner.py +448 -0
- aru_code-0.7.0/aru/session.py +475 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru_code.egg-info/PKG-INFO +9 -2
- {aru_code-0.5.0 → aru_code-0.7.0}/aru_code.egg-info/SOURCES.txt +6 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/pyproject.toml +1 -1
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_advanced.py +3 -3
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_shell.py +17 -17
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_config.py +24 -7
- aru_code-0.5.0/aru/__init__.py +0 -1
- aru_code-0.5.0/aru/cli.py +0 -2270
- {aru_code-0.5.0 → aru_code-0.7.0}/LICENSE +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/agents/__init__.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/agents/base.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/agents/executor.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/context.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/permissions.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/providers.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/__init__.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/ast_tools.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/codebase.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/gitignore.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/mcp_client.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/ranker.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru/tools/tasklist.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru_code.egg-info/dependency_links.txt +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru_code.egg-info/entry_points.txt +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru_code.egg-info/requires.txt +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/aru_code.egg-info/top_level.txt +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/setup.cfg +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_agents_base.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_ast_tools.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_base.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_completers.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_new.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_run_cli.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_cli_session.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_codebase.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_context.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_executor.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_gitignore.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_main.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_mcp_client.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_permissions.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_planner.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.0}/tests/test_providers.py +0 -0
- {aru_code-0.5.0 → aru_code-0.7.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.7.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
|
|
@@ -452,7 +452,14 @@ Aru can load tools from MCP servers. Configure in `.aru/mcp_config.json`:
|
|
|
452
452
|
```
|
|
453
453
|
aru-code/
|
|
454
454
|
├── aru/
|
|
455
|
-
│ ├── cli.py #
|
|
455
|
+
│ ├── cli.py # Main REPL loop, argument parsing, and entry point
|
|
456
|
+
│ ├── agent_factory.py # Agent instantiation (general and custom agents)
|
|
457
|
+
│ ├── commands.py # Slash commands, help display, shell execution
|
|
458
|
+
│ ├── completers.py # Input completions, paste detection, @file mentions
|
|
459
|
+
│ ├── context.py # Token optimization (pruning, truncation, compaction)
|
|
460
|
+
│ ├── display.py # Terminal display (logo, status bar, streaming output)
|
|
461
|
+
│ ├── runner.py # Agent execution orchestration with streaming
|
|
462
|
+
│ ├── session.py # Session state, persistence, plan tracking
|
|
456
463
|
│ ├── config.py # Configuration loader (AGENTS.md, .agents/)
|
|
457
464
|
│ ├── providers.py # Multi-provider LLM abstraction
|
|
458
465
|
│ ├── permissions.py # Granular permission system (allow/ask/deny)
|
|
@@ -405,7 +405,14 @@ Aru can load tools from MCP servers. Configure in `.aru/mcp_config.json`:
|
|
|
405
405
|
```
|
|
406
406
|
aru-code/
|
|
407
407
|
├── aru/
|
|
408
|
-
│ ├── cli.py #
|
|
408
|
+
│ ├── cli.py # Main REPL loop, argument parsing, and entry point
|
|
409
|
+
│ ├── agent_factory.py # Agent instantiation (general and custom agents)
|
|
410
|
+
│ ├── commands.py # Slash commands, help display, shell execution
|
|
411
|
+
│ ├── completers.py # Input completions, paste detection, @file mentions
|
|
412
|
+
│ ├── context.py # Token optimization (pruning, truncation, compaction)
|
|
413
|
+
│ ├── display.py # Terminal display (logo, status bar, streaming output)
|
|
414
|
+
│ ├── runner.py # Agent execution orchestration with streaming
|
|
415
|
+
│ ├── session.py # Session state, persistence, plan tracking
|
|
409
416
|
│ ├── config.py # Configuration loader (AGENTS.md, .agents/)
|
|
410
417
|
│ ├── providers.py # Multi-provider LLM abstraction
|
|
411
418
|
│ ├── permissions.py # Granular permission system (allow/ask/deny)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.7.0"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""Agent creation: general-purpose and custom agent instantiation."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from aru.agents.base import build_instructions as _build_instructions
|
|
6
|
+
from aru.config import AgentConfig, CustomAgent
|
|
7
|
+
from aru.providers import create_model
|
|
8
|
+
from aru.session import Session
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def create_general_agent(session: Session, config: AgentConfig | None = None):
|
|
12
|
+
"""Create the general-purpose agent."""
|
|
13
|
+
from agno.agent import Agent
|
|
14
|
+
from agno.compression.manager import CompressionManager
|
|
15
|
+
|
|
16
|
+
from aru.tools.codebase import GENERAL_TOOLS, _get_small_model_ref
|
|
17
|
+
|
|
18
|
+
extra = config.get_extra_instructions() if config else ""
|
|
19
|
+
|
|
20
|
+
return Agent(
|
|
21
|
+
name="Aru",
|
|
22
|
+
model=create_model(session.model_ref, max_tokens=8192),
|
|
23
|
+
tools=GENERAL_TOOLS,
|
|
24
|
+
instructions=_build_instructions("general", extra),
|
|
25
|
+
markdown=True,
|
|
26
|
+
compress_tool_results=True,
|
|
27
|
+
compression_manager=CompressionManager(
|
|
28
|
+
model=create_model(_get_small_model_ref(), max_tokens=1024),
|
|
29
|
+
compress_tool_results=True,
|
|
30
|
+
compress_tool_results_limit=15,
|
|
31
|
+
),
|
|
32
|
+
tool_call_limit=20,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def create_custom_agent_instance(agent_def: CustomAgent, session: Session,
|
|
37
|
+
config: AgentConfig | None = None):
|
|
38
|
+
"""Create an Agno Agent from a CustomAgent definition."""
|
|
39
|
+
from agno.agent import Agent
|
|
40
|
+
from agno.compression.manager import CompressionManager
|
|
41
|
+
from aru.agents.base import BASE_INSTRUCTIONS
|
|
42
|
+
from aru.tools.codebase import resolve_tools, _get_small_model_ref
|
|
43
|
+
|
|
44
|
+
model_ref = agent_def.model or session.model_ref
|
|
45
|
+
tools = resolve_tools(agent_def.tools)
|
|
46
|
+
|
|
47
|
+
extra = config.get_extra_instructions() if config else ""
|
|
48
|
+
parts = [agent_def.system_prompt, BASE_INSTRUCTIONS]
|
|
49
|
+
if extra:
|
|
50
|
+
parts.append(extra)
|
|
51
|
+
instructions = "\n\n".join(parts)
|
|
52
|
+
|
|
53
|
+
return Agent(
|
|
54
|
+
name=agent_def.name,
|
|
55
|
+
model=create_model(model_ref, max_tokens=8192),
|
|
56
|
+
tools=tools,
|
|
57
|
+
instructions=instructions,
|
|
58
|
+
markdown=True,
|
|
59
|
+
compress_tool_results=True,
|
|
60
|
+
compression_manager=CompressionManager(
|
|
61
|
+
model=create_model(_get_small_model_ref(), max_tokens=1024),
|
|
62
|
+
compress_tool_results=True,
|
|
63
|
+
compress_tool_results_limit=15,
|
|
64
|
+
),
|
|
65
|
+
tool_call_limit=agent_def.max_turns or 20,
|
|
66
|
+
)
|
|
@@ -79,7 +79,7 @@ def create_planner(model_ref: str = "anthropic/claude-sonnet-4-5", extra_instruc
|
|
|
79
79
|
compression_manager=CompressionManager(
|
|
80
80
|
model=create_model(_get_small_model_ref(), max_tokens=1024),
|
|
81
81
|
compress_tool_results=True,
|
|
82
|
-
compress_tool_results_limit=
|
|
82
|
+
compress_tool_results_limit=15,
|
|
83
83
|
),
|
|
84
84
|
tool_call_limit=20,
|
|
85
85
|
)
|