agentnova 0.3.2__tar.gz → 0.3.3__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.
Files changed (94) hide show
  1. {agentnova-0.3.2 → agentnova-0.3.3}/PKG-INFO +54 -2
  2. {agentnova-0.3.2 → agentnova-0.3.3}/README.md +321 -269
  3. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/__init__.py +1 -1
  4. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/acp_plugin.py +149 -0
  5. agentnova-0.3.3/agentnova/agent.py +1020 -0
  6. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/backends/__init__.py +11 -3
  7. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/backends/ollama.py +358 -2
  8. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/cli.py +45 -6
  9. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/config.py +15 -4
  10. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/__init__.py +59 -7
  11. agentnova-0.3.3/agentnova/core/error_recovery.py +725 -0
  12. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/helpers.py +16 -1
  13. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/memory.py +30 -10
  14. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/models.py +12 -2
  15. agentnova-0.3.3/agentnova/core/openresponses.py +812 -0
  16. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/prompts.py +54 -166
  17. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/tool_parse.py +118 -212
  18. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/types.py +15 -1
  19. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/00_basic_agent.py +22 -6
  20. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/01_quick_diagnostic.py +16 -4
  21. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/02_tool_test.py +46 -19
  22. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/04_gsm8k_benchmark.py +1 -1
  23. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/__init__.py +16 -2
  24. agentnova-0.3.3/agentnova/skills/loader.py +1893 -0
  25. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/soul/__init__.py +99 -97
  26. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/soul/loader.py +514 -5
  27. agentnova-0.3.3/agentnova/souls/nova-helper/IDENTITY.md +14 -0
  28. agentnova-0.3.3/agentnova/souls/nova-helper/SOUL.md +127 -0
  29. agentnova-0.3.3/agentnova/souls/nova-helper/STYLE.md +83 -0
  30. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/souls/nova-helper/soul.json +30 -30
  31. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/tools/builtins.py +22 -5
  32. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova.egg-info/PKG-INFO +54 -2
  33. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova.egg-info/SOURCES.txt +2 -0
  34. {agentnova-0.3.2 → agentnova-0.3.3}/pyproject.toml +1 -1
  35. agentnova-0.3.2/agentnova/agent.py +0 -981
  36. agentnova-0.3.2/agentnova/skills/loader.py +0 -445
  37. agentnova-0.3.2/agentnova/souls/nova-helper/IDENTITY.md +0 -36
  38. agentnova-0.3.2/agentnova/souls/nova-helper/SOUL.md +0 -51
  39. agentnova-0.3.2/agentnova/souls/nova-helper/STYLE.md +0 -49
  40. {agentnova-0.3.2 → agentnova-0.3.3}/LICENSE +0 -0
  41. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/__main__.py +0 -0
  42. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/agent_mode.py +0 -0
  43. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/backends/base.py +0 -0
  44. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/backends/bitnet.py +0 -0
  45. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/args_normal.py +0 -0
  46. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/math_prompts.py +0 -0
  47. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/model_config.py +0 -0
  48. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/core/model_family_config.py +0 -0
  49. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/03_reasoning_test.py +0 -0
  50. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/05_common_sense.py +0 -0
  51. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/06_causal_reasoning.py +0 -0
  52. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/07_logical_deduction.py +0 -0
  53. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/08_reading_comprehension.py +0 -0
  54. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/09_general_knowledge.py +0 -0
  55. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/10_implicit_reasoning.py +0 -0
  56. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/11_analogical_reasoning.py +0 -0
  57. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/examples/__init__.py +0 -0
  58. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/model_discovery.py +0 -0
  59. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/orchestrator.py +0 -0
  60. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/orchestrator_enhanced.py +0 -0
  61. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/py.typed +0 -0
  62. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/shared_args.py +0 -0
  63. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/acp/SKILL.md +0 -0
  64. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/datetime/SKILL.md +0 -0
  65. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/SKILL.md +0 -0
  66. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/__init__.py +0 -0
  67. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/aggregate_benchmark.py +0 -0
  68. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/generate_report.py +0 -0
  69. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/improve_description.py +0 -0
  70. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/init_skill.py +0 -0
  71. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/package_skill.py +0 -0
  72. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/quick_validate.py +0 -0
  73. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/run_eval.py +0 -0
  74. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/run_loop.py +0 -0
  75. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/security_scan.py +0 -0
  76. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/test_package_skill.py +0 -0
  77. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/test_quick_validate.py +0 -0
  78. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/utils.py +0 -0
  79. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/skill-creator/scripts/validate.py +0 -0
  80. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/skills/web-search/SKILL.md +0 -0
  81. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/soul/types.py +0 -0
  82. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/tools/__init__.py +0 -0
  83. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/tools/registry.py +0 -0
  84. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova/tools/sandboxed_repl.py +0 -0
  85. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova.egg-info/dependency_links.txt +0 -0
  86. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova.egg-info/entry_points.txt +0 -0
  87. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova.egg-info/requires.txt +0 -0
  88. {agentnova-0.3.2 → agentnova-0.3.3}/agentnova.egg-info/top_level.txt +0 -0
  89. {agentnova-0.3.2 → agentnova-0.3.3}/localclaw/__init__.py +0 -0
  90. {agentnova-0.3.2 → agentnova-0.3.3}/localclaw-redirect/localclaw/__init__.py +0 -0
  91. {agentnova-0.3.2 → agentnova-0.3.3}/setup.cfg +0 -0
  92. {agentnova-0.3.2 → agentnova-0.3.3}/tests/test_acp_integration.py +0 -0
  93. {agentnova-0.3.2 → agentnova-0.3.3}/tests/test_acp_subagents.py +0 -0
  94. {agentnova-0.3.2 → agentnova-0.3.3}/tests/test_agent.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentnova
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: ⚛️ AgentNova - A minimal, hackable agentic framework for local LLM inference
5
5
  Author-email: VTSTech <veritas@vts-tech.org>
6
6
  Maintainer-email: VTSTech <veritas@vts-tech.org>
@@ -32,7 +32,7 @@ Requires-Dist: black>=23.0; extra == "dev"
32
32
  Requires-Dist: ruff>=0.1.0; extra == "dev"
33
33
  Dynamic: license-file
34
34
 
35
- # ⚛️ AgentNova R03.2
35
+ # ⚛️ AgentNova R03.3
36
36
 
37
37
  **Status: Alpha**
38
38
 
@@ -63,10 +63,14 @@ Inspired by the architecture of OpenClaw, rebuilt from scratch for local-first o
63
63
 
64
64
  - **Zero dependencies** — Uses Python stdlib only (urllib for HTTP)
65
65
  - **Ollama + BitNet backends** — Switch with `--backend` flag
66
+ - **Dual API support** — OpenResponses (`--api resp`) and Chat-Completions (`--api comp`)
66
67
  - **Three-tier tool support** — Native, ReAct, or none (auto-detected)
67
68
  - **Small model optimized** — Fuzzy matching, argument normalization
68
69
  - **Built-in security** — Path validation, command blocklist, SSRF protection
69
70
  - **Multi-agent orchestration** — Router, pipeline, and parallel modes
71
+ - **Soul Spec v0.5** — Persona packages with progressive disclosure
72
+ - **ACP v1.0.5 integration** — Agent Control Panel for monitoring and control
73
+ - **AgentSkills spec** — Skill loading with SPDX license validation
70
74
 
71
75
  ## Installation
72
76
 
@@ -94,6 +98,9 @@ agentnova chat -m qwen2.5:0.5b --tools calculator,shell
94
98
  # Autonomous agent mode
95
99
  agentnova agent -m qwen2.5:7b --tools calculator,shell,write_file
96
100
 
101
+ # Use Chat-Completions API (OpenAI-compatible)
102
+ agentnova chat -m qwen2.5:0.5b --api comp
103
+
97
104
  # List available models
98
105
  agentnova models
99
106
 
@@ -123,6 +130,37 @@ print(result.final_answer)
123
130
  print(f"Completed in {result.total_ms:.0f}ms")
124
131
  ```
125
132
 
133
+ ### Chat-Completions Streaming
134
+
135
+ ```python
136
+ from agentnova.backends import get_backend
137
+ from agentnova.core.types import ApiMode
138
+
139
+ # Use Chat-Completions mode with streaming
140
+ backend = get_backend("ollama", api_mode=ApiMode.COMPLETIONS)
141
+
142
+ for chunk in backend.generate_completions_stream(
143
+ model="qwen2.5:0.5b",
144
+ messages=[{"role": "user", "content": "Hello!"}],
145
+ response_format={"type": "json_object"}
146
+ ):
147
+ print(chunk["delta"], end="", flush=True)
148
+ ```
149
+
150
+ ### Skill License Validation
151
+
152
+ ```python
153
+ from agentnova.skills import validate_spdx_license, parse_compatibility
154
+
155
+ # Validate SPDX license identifier
156
+ valid, msg = validate_spdx_license("MIT") # (True, "Valid SPDX identifier: MIT")
157
+ valid, msg = validate_spdx_license("Custom") # (False, "Unknown license...")
158
+
159
+ # Parse compatibility requirements
160
+ compat = parse_compatibility("python>=3.8, ollama")
161
+ # Returns: {"python": ">=3.8", "runtimes": ["ollama"], "frameworks": []}
162
+ ```
163
+
126
164
  ### Multi-Agent Orchestration
127
165
 
128
166
  ```python
@@ -218,6 +256,20 @@ agentnova config
218
256
  agentnova config --urls # Show only URLs
219
257
  ```
220
258
 
259
+ ### CLI Options (run, chat, agent)
260
+
261
+ | Option | Description |
262
+ |--------|-------------|
263
+ | `--api resp\|comp` | API mode: OpenResponses (default) or Chat-Completions |
264
+ | `--response-format text\|json` | Response format (Chat-Completions mode) |
265
+ | `--truncation auto\|disabled` | Truncation behavior for long responses |
266
+ | `--soul <path>` | Load Soul Spec persona package |
267
+ | `--soul-level 1-3` | Progressive disclosure level |
268
+ | `--num-ctx <tokens>` | Context window size (default: 4096) |
269
+ | `--timeout <seconds>` | Request timeout (default: 120) |
270
+ | `--acp` | Enable ACP (Agent Control Panel) logging |
271
+ | `--acp-url <url>` | ACP server URL |
272
+
221
273
  ## LocalClaw Redirect
222
274
 
223
275
  The `localclaw` command is provided for backward compatibility: