agentnova 0.2.4__tar.gz → 0.2.5__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.
- {agentnova-0.2.4 → agentnova-0.2.5}/PKG-INFO +17 -17
- {agentnova-0.2.4 → agentnova-0.2.5}/README.md +16 -16
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/__init__.py +212 -211
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/__main__.py +27 -27
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/acp_plugin.py +2353 -2353
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/agent_mode.py +831 -831
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/bitnet_client.py +151 -151
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/bitnet_setup.py +30 -30
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/cli.py +2699 -2699
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/config.py +99 -99
- agentnova-0.2.5/agentnova/core/agent.py +1284 -0
- agentnova-0.2.5/agentnova/core/args_normal.py +324 -0
- agentnova-0.2.5/agentnova/core/helpers.py +250 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/math_prompts.py +396 -396
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/memory.py +191 -191
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/model_family_config.py +485 -485
- agentnova-0.2.5/agentnova/core/models.py +47 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/ollama_client.py +553 -553
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/orchestrator.py +191 -191
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/orchestrator_enhanced.py +393 -393
- agentnova-0.2.5/agentnova/core/prompts.py +180 -0
- agentnova-0.2.5/agentnova/core/tool_parse.py +413 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/core/tools.py +304 -304
- agentnova-0.2.5/agentnova/core/types.py +11 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/00_backend_demo.py +211 -211
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/01_basic_agent.py +182 -182
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/02_tool_agent.py +276 -276
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/03_orchestrator.py +209 -209
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/04_comprehensive_test.py +267 -267
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/05_tool_tests.py +494 -494
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/06_interactive_chat.py +216 -216
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/07_model_comparison.py +534 -534
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/08_robust_comparison.py +531 -531
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/09_expanded_benchmark.py +412 -412
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/10_skills_demo.py +366 -366
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/11_skill_creator_test.py +525 -525
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/12_batch_operations.py +214 -214
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/13_shutdown_demo.py +191 -191
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/14_gsm8k_benchmark.py +428 -428
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/examples/15_quick_diagnostic.py +296 -296
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/model_discovery.py +341 -341
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/shared_args.py +146 -146
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/__init__.py +24 -24
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/loader.py +445 -445
- agentnova-0.2.5/agentnova/skills/skill-creator/scripts/__init__.py +1 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/aggregate_benchmark.py +401 -401
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/generate_report.py +326 -326
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/improve_description.py +247 -247
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/init_skill.py +378 -378
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/package_skill.py +139 -139
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/quick_validate.py +159 -159
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/run_eval.py +310 -310
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/run_loop.py +328 -328
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/security_scan.py +144 -144
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/test_package_skill.py +160 -160
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/test_quick_validate.py +72 -72
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/utils.py +47 -47
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/scripts/validate.py +147 -147
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/tools/builtins.py +702 -702
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/tools/sandboxed_repl.py +523 -523
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova.egg-info/PKG-INFO +17 -17
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova.egg-info/SOURCES.txt +6 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/localclaw/__init__.py +115 -115
- {agentnova-0.2.4 → agentnova-0.2.5}/localclaw/__main__.py +23 -23
- {agentnova-0.2.4 → agentnova-0.2.5}/pyproject.toml +1 -1
- {agentnova-0.2.4 → agentnova-0.2.5}/tests/test_acp_integration.py +217 -217
- {agentnova-0.2.4 → agentnova-0.2.5}/tests/test_acp_subagents.py +310 -310
- {agentnova-0.2.4 → agentnova-0.2.5}/tests/test_agent.py +266 -266
- agentnova-0.2.4/agentnova/core/agent.py +0 -2770
- agentnova-0.2.4/agentnova/skills/skill-creator/scripts/__init__.py +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/LICENSE +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/acp/SKILL.md +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/datetime/SKILL.md +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/skill-creator/SKILL.md +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova/skills/web_search/SKILL.md +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova.egg-info/dependency_links.txt +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova.egg-info/entry_points.txt +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova.egg-info/requires.txt +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/agentnova.egg-info/top_level.txt +0 -0
- {agentnova-0.2.4 → agentnova-0.2.5}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentnova
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5
|
|
4
4
|
Summary: A minimal, hackable agentic framework for Ollama and BitNet - local-first AI agent toolkit
|
|
5
5
|
Author-email: VTSTech <veritas@vts-tech.org>
|
|
6
6
|
Maintainer-email: VTSTech <veritas@vts-tech.org>
|
|
@@ -34,7 +34,7 @@ Requires-Dist: black>=23.0; extra == "dev"
|
|
|
34
34
|
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
35
35
|
Dynamic: license-file
|
|
36
36
|
|
|
37
|
-
# ⚛️ AgentNova R02.
|
|
37
|
+
# ⚛️ AgentNova R02.5
|
|
38
38
|
|
|
39
39
|
A minimal, hackable agentic framework engineered to run **entirely locally** with [Ollama](https://ollama.com) or [BitNet](https://github.com/microsoft/BitNet).
|
|
40
40
|
|
|
@@ -45,7 +45,7 @@ Inspired by the architecture of OpenClaw, rebuilt from scratch for local-first o
|
|
|
45
45
|
[](https://colab.research.google.com/github/VTSTech/AgentNova/blob/main/AgentNova.ipynb)
|
|
46
46
|
[](https://GitHub.com/VTSTech/AgentNova/commit/) [](https://GitHub.com/VTSTech/AgentNova/commit/)
|
|
47
47
|
|
|
48
|
-
[](https://pypi.org/project/agentnova/) [](https://pypi.python.org/pypi/agentnova/) [](https://pypi.
|
|
48
|
+
[](https://pypi.org/project/agentnova/) [](https://pypi.python.org/pypi/agentnova/) [](https://pypi.org/project/agentnova/) [](https://pypi.python.org/pypi/agentnova/)
|
|
49
49
|
|
|
50
50
|
[](#license) [](https://python.org)
|
|
51
51
|
|
|
@@ -201,7 +201,7 @@ agentnova models --tool_support
|
|
|
201
201
|
|
|
202
202
|
### Performance by Tool Support
|
|
203
203
|
|
|
204
|
-
R02.
|
|
204
|
+
R02.5 benchmark results (15-test suite):
|
|
205
205
|
|
|
206
206
|
| Model | Params | Tool Support | Score | Time |
|
|
207
207
|
|-------|--------|--------------|-------|------|
|
|
@@ -213,19 +213,19 @@ R02.3 benchmark results (15-test suite):
|
|
|
213
213
|
|
|
214
214
|
**Quick Diagnostic (Test 15 - 5 questions, ~30s/model):**
|
|
215
215
|
|
|
216
|
-
| Model | Score | Tool Support |
|
|
217
|
-
|
|
218
|
-
| **`
|
|
219
|
-
| **`
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
| `
|
|
216
|
+
| Model | Score | Time | Tool Support |
|
|
217
|
+
|-------|-------|------|--------------|
|
|
218
|
+
| **`dolphin3.0-llama3:1b`** | **100%** | 48.7s | native |
|
|
219
|
+
| **`granite4:350m`** | **100%** | 75.2s | native |
|
|
220
|
+
| **`qwen2.5-coder:0.5b`** | **100%** | 76.0s | react |
|
|
221
|
+
| **`qwen3:0.6b`** | **100%** | 151.0s | react |
|
|
222
|
+
| `functiongemma:270m` | 80% | 28.5s | native |
|
|
223
|
+
| `dolphin3.0-qwen2.5:0.5b` | 80% | 38.4s | none |
|
|
223
224
|
|
|
224
|
-
**Key improvements in R02.
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
- **
|
|
228
|
-
- **qwen3.5:0.8b** new sub-1B champion with 100% on quick diagnostic
|
|
225
|
+
**Key improvements in R02.5**:
|
|
226
|
+
- **4 models achieve 100%** on quick diagnostic (dolphin3.0-llama3:1b fastest at 48.7s)
|
|
227
|
+
- **Module refactoring** - agent.py split into 6 focused modules (~1550 lines from ~2770)
|
|
228
|
+
- **All tests passing** after module separation, backward compatibility maintained
|
|
229
229
|
|
|
230
230
|
---
|
|
231
231
|
|
|
@@ -276,7 +276,7 @@ Output shows:
|
|
|
276
276
|
- **Tool Support** - `✓ native`, `ReAct`, `○ none`, or `untested`
|
|
277
277
|
|
|
278
278
|
```
|
|
279
|
-
⚛️ AgentNova R02.
|
|
279
|
+
⚛️ AgentNova R02.5 Models
|
|
280
280
|
Model Family Context Tool Support
|
|
281
281
|
──────────────────────────────────────────────────────────────────────────────
|
|
282
282
|
gemma3:270m gemma3 32K ○ none
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ⚛️ AgentNova R02.
|
|
1
|
+
# ⚛️ AgentNova R02.5
|
|
2
2
|
|
|
3
3
|
A minimal, hackable agentic framework engineered to run **entirely locally** with [Ollama](https://ollama.com) or [BitNet](https://github.com/microsoft/BitNet).
|
|
4
4
|
|
|
@@ -9,7 +9,7 @@ Inspired by the architecture of OpenClaw, rebuilt from scratch for local-first o
|
|
|
9
9
|
[](https://colab.research.google.com/github/VTSTech/AgentNova/blob/main/AgentNova.ipynb)
|
|
10
10
|
[](https://GitHub.com/VTSTech/AgentNova/commit/) [](https://GitHub.com/VTSTech/AgentNova/commit/)
|
|
11
11
|
|
|
12
|
-
[](https://pypi.org/project/agentnova/) [](https://pypi.python.org/pypi/agentnova/) [](https://pypi.
|
|
12
|
+
[](https://pypi.org/project/agentnova/) [](https://pypi.python.org/pypi/agentnova/) [](https://pypi.org/project/agentnova/) [](https://pypi.python.org/pypi/agentnova/)
|
|
13
13
|
|
|
14
14
|
[](#license) [](https://python.org)
|
|
15
15
|
|
|
@@ -165,7 +165,7 @@ agentnova models --tool_support
|
|
|
165
165
|
|
|
166
166
|
### Performance by Tool Support
|
|
167
167
|
|
|
168
|
-
R02.
|
|
168
|
+
R02.5 benchmark results (15-test suite):
|
|
169
169
|
|
|
170
170
|
| Model | Params | Tool Support | Score | Time |
|
|
171
171
|
|-------|--------|--------------|-------|------|
|
|
@@ -177,19 +177,19 @@ R02.3 benchmark results (15-test suite):
|
|
|
177
177
|
|
|
178
178
|
**Quick Diagnostic (Test 15 - 5 questions, ~30s/model):**
|
|
179
179
|
|
|
180
|
-
| Model | Score | Tool Support |
|
|
181
|
-
|
|
182
|
-
| **`
|
|
183
|
-
| **`
|
|
184
|
-
|
|
|
185
|
-
|
|
|
186
|
-
| `
|
|
180
|
+
| Model | Score | Time | Tool Support |
|
|
181
|
+
|-------|-------|------|--------------|
|
|
182
|
+
| **`dolphin3.0-llama3:1b`** | **100%** | 48.7s | native |
|
|
183
|
+
| **`granite4:350m`** | **100%** | 75.2s | native |
|
|
184
|
+
| **`qwen2.5-coder:0.5b`** | **100%** | 76.0s | react |
|
|
185
|
+
| **`qwen3:0.6b`** | **100%** | 151.0s | react |
|
|
186
|
+
| `functiongemma:270m` | 80% | 28.5s | native |
|
|
187
|
+
| `dolphin3.0-qwen2.5:0.5b` | 80% | 38.4s | none |
|
|
187
188
|
|
|
188
|
-
**Key improvements in R02.
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
- **
|
|
192
|
-
- **qwen3.5:0.8b** new sub-1B champion with 100% on quick diagnostic
|
|
189
|
+
**Key improvements in R02.5**:
|
|
190
|
+
- **4 models achieve 100%** on quick diagnostic (dolphin3.0-llama3:1b fastest at 48.7s)
|
|
191
|
+
- **Module refactoring** - agent.py split into 6 focused modules (~1550 lines from ~2770)
|
|
192
|
+
- **All tests passing** after module separation, backward compatibility maintained
|
|
193
193
|
|
|
194
194
|
---
|
|
195
195
|
|
|
@@ -240,7 +240,7 @@ Output shows:
|
|
|
240
240
|
- **Tool Support** - `✓ native`, `ReAct`, `○ none`, or `untested`
|
|
241
241
|
|
|
242
242
|
```
|
|
243
|
-
⚛️ AgentNova R02.
|
|
243
|
+
⚛️ AgentNova R02.5 Models
|
|
244
244
|
Model Family Context Tool Support
|
|
245
245
|
──────────────────────────────────────────────────────────────────────────────
|
|
246
246
|
gemma3:270m gemma3 32K ○ none
|
|
@@ -1,211 +1,212 @@
|
|
|
1
|
-
"""
|
|
2
|
-
⚛️ AgentNova R02.
|
|
3
|
-
|
|
4
|
-
Written by VTSTech
|
|
5
|
-
https://www.vts-tech.org
|
|
6
|
-
https://github.com/VTSTech/AgentNova
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import os
|
|
10
|
-
|
|
11
|
-
from .core.agent import Agent
|
|
12
|
-
from .core.
|
|
13
|
-
from .core.
|
|
14
|
-
from .core.
|
|
15
|
-
from .core.
|
|
16
|
-
from .
|
|
17
|
-
from .
|
|
18
|
-
from .
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
>>>
|
|
122
|
-
>>>
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
>>>
|
|
126
|
-
>>>
|
|
127
|
-
""
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
"
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
"
|
|
196
|
-
"
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
"
|
|
200
|
-
"
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
1
|
+
"""
|
|
2
|
+
⚛️ AgentNova R02.5 - A minimal, hackable agentic framework for Ollama and BitNet
|
|
3
|
+
|
|
4
|
+
Written by VTSTech
|
|
5
|
+
https://www.vts-tech.org
|
|
6
|
+
https://github.com/VTSTech/AgentNova
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
|
|
11
|
+
from .core.agent import Agent
|
|
12
|
+
from .core.models import AgentRun, StepResult
|
|
13
|
+
from .core.memory import Memory
|
|
14
|
+
from .core.tools import Tool, ToolRegistry, ToolParam
|
|
15
|
+
from .core.ollama_client import OllamaClient
|
|
16
|
+
from .core.orchestrator import Orchestrator, AgentCard
|
|
17
|
+
from .skills import SkillLoader, Skill, SkillRegistry
|
|
18
|
+
from .acp_plugin import ACPPlugin, create_acp_agent
|
|
19
|
+
from .core.model_family_config import (
|
|
20
|
+
ModelFamilyConfig, FAMILY_CONFIGS,
|
|
21
|
+
get_family_config, get_stop_tokens, supports_tools,
|
|
22
|
+
get_tool_format, get_preferred_temperature, should_use_few_shot,
|
|
23
|
+
get_few_shot_style, has_known_issues, get_react_system_suffix,
|
|
24
|
+
get_native_tool_hints,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# Config exports
|
|
28
|
+
from .config import (
|
|
29
|
+
OLLAMA_BASE_URL,
|
|
30
|
+
BITNET_BASE_URL,
|
|
31
|
+
ACP_BASE_URL,
|
|
32
|
+
ACP_USER,
|
|
33
|
+
ACP_PASS,
|
|
34
|
+
DEFAULT_MODEL,
|
|
35
|
+
AGENTNOVA_BACKEND,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
# R02: BitNet backend support
|
|
39
|
+
try:
|
|
40
|
+
from .bitnet_client import BitnetClient, KNOWN_MODELS
|
|
41
|
+
_BITNET_AVAILABLE = True
|
|
42
|
+
except ImportError:
|
|
43
|
+
_BITNET_AVAILABLE = False
|
|
44
|
+
BitnetClient = None
|
|
45
|
+
KNOWN_MODELS = []
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_default_client():
|
|
49
|
+
"""
|
|
50
|
+
Get the default client based on AGENTNOVA_BACKEND setting.
|
|
51
|
+
|
|
52
|
+
Returns
|
|
53
|
+
-------
|
|
54
|
+
OllamaClient or BitnetClient
|
|
55
|
+
The appropriate client for the configured backend.
|
|
56
|
+
|
|
57
|
+
Examples
|
|
58
|
+
--------
|
|
59
|
+
>>> # With AGENTNOVA_BACKEND=ollama (default)
|
|
60
|
+
>>> client = get_default_client() # Returns OllamaClient
|
|
61
|
+
|
|
62
|
+
>>> # With AGENTNOVA_BACKEND=bitnet
|
|
63
|
+
>>> client = get_default_client() # Returns BitnetClient
|
|
64
|
+
"""
|
|
65
|
+
if AGENTNOVA_BACKEND == "bitnet":
|
|
66
|
+
if not _BITNET_AVAILABLE:
|
|
67
|
+
raise ImportError("BitNet backend requested but bitnet_client not available")
|
|
68
|
+
return BitnetClient()
|
|
69
|
+
else:
|
|
70
|
+
return OllamaClient()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def get_available_models(client=None):
|
|
74
|
+
"""
|
|
75
|
+
Get list of available models from the configured backend.
|
|
76
|
+
|
|
77
|
+
Parameters
|
|
78
|
+
----------
|
|
79
|
+
client : OllamaClient or BitnetClient, optional
|
|
80
|
+
Client to use. Creates one via get_default_client() if not provided.
|
|
81
|
+
|
|
82
|
+
Returns
|
|
83
|
+
-------
|
|
84
|
+
list[str]
|
|
85
|
+
List of model names available on the backend.
|
|
86
|
+
"""
|
|
87
|
+
if client is None:
|
|
88
|
+
client = get_default_client()
|
|
89
|
+
|
|
90
|
+
if not client.is_running():
|
|
91
|
+
return []
|
|
92
|
+
|
|
93
|
+
return client.list_models() or []
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def get_system_prompt(model: str, client=None, default_prompt: str = None):
|
|
97
|
+
"""
|
|
98
|
+
Get the system prompt based on AGENTNOVA_USE_MF_SYS environment variable.
|
|
99
|
+
|
|
100
|
+
If AGENTNOVA_USE_MF_SYS=1, returns the Modelfile's system prompt for the model.
|
|
101
|
+
Otherwise returns the provided default_prompt.
|
|
102
|
+
|
|
103
|
+
Parameters
|
|
104
|
+
----------
|
|
105
|
+
model : str
|
|
106
|
+
Model name to get system prompt for.
|
|
107
|
+
client : OllamaClient or BitnetClient, optional
|
|
108
|
+
Client to use. Creates one via get_default_client() if not provided.
|
|
109
|
+
default_prompt : str, optional
|
|
110
|
+
Default system prompt to use if AGENTNOVA_USE_MF_SYS is not set.
|
|
111
|
+
If None and AGENTNOVA_USE_MF_SYS=1 but no Modelfile system prompt,
|
|
112
|
+
returns None (agent will use its own default).
|
|
113
|
+
|
|
114
|
+
Returns
|
|
115
|
+
-------
|
|
116
|
+
str or None
|
|
117
|
+
The system prompt to use, or None.
|
|
118
|
+
|
|
119
|
+
Examples
|
|
120
|
+
--------
|
|
121
|
+
>>> # Without AGENTNOVA_USE_MF_SYS set
|
|
122
|
+
>>> sys_prompt = get_system_prompt("llama3.2", default_prompt="You are helpful.")
|
|
123
|
+
>>> print(sys_prompt) # "You are helpful."
|
|
124
|
+
|
|
125
|
+
>>> # With AGENTNOVA_USE_MF_SYS=1
|
|
126
|
+
>>> sys_prompt = get_system_prompt("qwen2.5-coder", default_prompt="You are helpful.")
|
|
127
|
+
>>> print(sys_prompt) # Modelfile's system prompt, e.g., "You are Qwen..."
|
|
128
|
+
"""
|
|
129
|
+
use_mf_sys = os.environ.get("AGENTNOVA_USE_MF_SYS", "0") == "1"
|
|
130
|
+
|
|
131
|
+
if use_mf_sys:
|
|
132
|
+
if client is None:
|
|
133
|
+
client = get_default_client()
|
|
134
|
+
|
|
135
|
+
# Only OllamaClient has get_modelfile_system_prompt
|
|
136
|
+
if hasattr(client, "get_modelfile_system_prompt"):
|
|
137
|
+
mf_sys = client.get_modelfile_system_prompt(model)
|
|
138
|
+
if mf_sys:
|
|
139
|
+
print(f" 📜 Using Modelfile system prompt ({len(mf_sys)} chars)")
|
|
140
|
+
return mf_sys
|
|
141
|
+
else:
|
|
142
|
+
print(f" ⚠ No SYSTEM prompt in Modelfile for '{model}', using default")
|
|
143
|
+
return default_prompt
|
|
144
|
+
|
|
145
|
+
return default_prompt
|
|
146
|
+
|
|
147
|
+
# R02 Enhancements
|
|
148
|
+
from .core.orchestrator_enhanced import Orchestrator as EnhancedOrchestrator, AgentCard as EnhancedAgentCard
|
|
149
|
+
|
|
150
|
+
# Tool support detection
|
|
151
|
+
from .cli import get_tool_support
|
|
152
|
+
|
|
153
|
+
# Shared args for test scripts
|
|
154
|
+
from .shared_args import add_shared_args, parse_shared_args, SharedConfig
|
|
155
|
+
|
|
156
|
+
# R02: Agent Mode
|
|
157
|
+
from .agent_mode import (
|
|
158
|
+
AgentMode, AgentState, TaskPlan, Step, Action,
|
|
159
|
+
create_file_write_action, create_file_delete_action,
|
|
160
|
+
create_mkdir_action, create_shell_action,
|
|
161
|
+
format_status, format_progress,
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
__all__ = [
|
|
165
|
+
# Core
|
|
166
|
+
"Agent", "AgentRun", "StepResult",
|
|
167
|
+
"Memory", "Tool", "ToolRegistry", "ToolParam",
|
|
168
|
+
"OllamaClient", "Orchestrator", "AgentCard",
|
|
169
|
+
# Skills
|
|
170
|
+
"SkillLoader", "Skill", "SkillRegistry",
|
|
171
|
+
# R02 Enhancements
|
|
172
|
+
"EnhancedOrchestrator", "EnhancedAgentCard",
|
|
173
|
+
"ACPPlugin",
|
|
174
|
+
# R02: Backend-agnostic helpers
|
|
175
|
+
"get_default_client",
|
|
176
|
+
"get_available_models",
|
|
177
|
+
"get_system_prompt",
|
|
178
|
+
"get_tool_support", # Tool support detection
|
|
179
|
+
"model_discovery",
|
|
180
|
+
"add_shared_args", # Shared CLI args for test scripts
|
|
181
|
+
"parse_shared_args",
|
|
182
|
+
"SharedConfig",
|
|
183
|
+
# R02: Agent Mode
|
|
184
|
+
"AgentMode", "AgentState", "TaskPlan", "Step", "Action",
|
|
185
|
+
"create_file_write_action", "create_file_delete_action",
|
|
186
|
+
"create_mkdir_action", "create_shell_action",
|
|
187
|
+
"format_status", "format_progress",
|
|
188
|
+
# R02.5: Model Family Configuration
|
|
189
|
+
"ModelFamilyConfig", "FAMILY_CONFIGS",
|
|
190
|
+
"get_family_config", "get_stop_tokens", "supports_tools",
|
|
191
|
+
"get_tool_format", "get_preferred_temperature", "should_use_few_shot",
|
|
192
|
+
"get_few_shot_style", "has_known_issues", "get_react_system_suffix",
|
|
193
|
+
"get_native_tool_hints",
|
|
194
|
+
# Config exports
|
|
195
|
+
"OLLAMA_BASE_URL",
|
|
196
|
+
"BITNET_BASE_URL",
|
|
197
|
+
"ACP_BASE_URL",
|
|
198
|
+
"ACP_USER",
|
|
199
|
+
"ACP_PASS",
|
|
200
|
+
"DEFAULT_MODEL",
|
|
201
|
+
"AGENTNOVA_BACKEND",
|
|
202
|
+
]
|
|
203
|
+
|
|
204
|
+
# Conditionally export BitNet
|
|
205
|
+
if _BITNET_AVAILABLE:
|
|
206
|
+
__all__.extend(["BitnetClient", "KNOWN_MODELS"])
|
|
207
|
+
|
|
208
|
+
__version__ = "0.2.5"
|
|
209
|
+
__author__ = "VTSTech"
|
|
210
|
+
__author_email__ = "veritas@vts-tech.org"
|
|
211
|
+
__url__ = "https://github.com/VTSTech/AgentNova"
|
|
212
|
+
__website__ = "https://www.vts-tech.org"
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
⚛️ AgentNova
|
|
4
|
-
|
|
5
|
-
Entry point for: python -m agentnova [command] [options]
|
|
6
|
-
|
|
7
|
-
Commands:
|
|
8
|
-
run Run the agent on a single prompt and exit
|
|
9
|
-
chat Interactive multi-turn conversation with memory
|
|
10
|
-
models List models available in Ollama
|
|
11
|
-
tools List available built-in tools
|
|
12
|
-
skills List available Agent Skills
|
|
13
|
-
|
|
14
|
-
Examples:
|
|
15
|
-
python -m agentnova run "What is the capital of France?"
|
|
16
|
-
python -m agentnova chat --model llama3.1:8b --tools calculator,shell
|
|
17
|
-
python -m agentnova models
|
|
18
|
-
python -m agentnova tools
|
|
19
|
-
python -m agentnova skills
|
|
20
|
-
|
|
21
|
-
Written by VTSTech · https://www.vts-tech.org · https://github.com/VTSTech/AgentNova
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
from agentnova.cli import main
|
|
25
|
-
|
|
26
|
-
if __name__ == "__main__":
|
|
27
|
-
main()
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
⚛️ AgentNova R02 — Command Line Interface
|
|
4
|
+
|
|
5
|
+
Entry point for: python -m agentnova [command] [options]
|
|
6
|
+
|
|
7
|
+
Commands:
|
|
8
|
+
run Run the agent on a single prompt and exit
|
|
9
|
+
chat Interactive multi-turn conversation with memory
|
|
10
|
+
models List models available in Ollama
|
|
11
|
+
tools List available built-in tools
|
|
12
|
+
skills List available Agent Skills
|
|
13
|
+
|
|
14
|
+
Examples:
|
|
15
|
+
python -m agentnova run "What is the capital of France?"
|
|
16
|
+
python -m agentnova chat --model llama3.1:8b --tools calculator,shell
|
|
17
|
+
python -m agentnova models
|
|
18
|
+
python -m agentnova tools
|
|
19
|
+
python -m agentnova skills
|
|
20
|
+
|
|
21
|
+
Written by VTSTech · https://www.vts-tech.org · https://github.com/VTSTech/AgentNova
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from agentnova.cli import main
|
|
25
|
+
|
|
26
|
+
if __name__ == "__main__":
|
|
27
|
+
main()
|