mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
fix(hanzo-tools-agent): add missing semaphore in deprecated swarm tool
Fixes F821 undefined name error in swarm_tool_v1_deprecated.py
This commit is contained in:
Binary file not shown.
@@ -1,101 +0,0 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: hanzo-aci
|
||||
Version: 0.2.8
|
||||
Summary: An Agent-Computer Interface (ACI) designed for software development agents Dev.
|
||||
Author: Hanzo Industries Inc
|
||||
License: MIT
|
||||
Requires-Python: >=3.12
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Requires-Dist: numpy
|
||||
Requires-Dist: pandas
|
||||
Requires-Dist: scipy
|
||||
Requires-Dist: networkx
|
||||
Requires-Dist: litellm
|
||||
Requires-Dist: gitpython
|
||||
Requires-Dist: tree-sitter>=0.24.0
|
||||
Requires-Dist: tree-sitter-python>=0.23.6
|
||||
Requires-Dist: tree-sitter-javascript>=0.23.1
|
||||
Requires-Dist: tree-sitter-typescript>=0.23.2
|
||||
Requires-Dist: tree-sitter-ruby>=0.23.1
|
||||
Requires-Dist: grep-ast>=0.8.1
|
||||
Requires-Dist: flake8
|
||||
Requires-Dist: whatthepatch>=1.0.6
|
||||
Requires-Dist: binaryornot>=0.4.4
|
||||
Requires-Dist: cachetools>=5.5.2
|
||||
Requires-Dist: charset-normalizer>=3.4.1
|
||||
Provides-Extra: dev
|
||||
Requires-Dist: ruff>=0.7.2; extra == "dev"
|
||||
Requires-Dist: pre-commit>=4.0.1; extra == "dev"
|
||||
Provides-Extra: test
|
||||
Requires-Dist: pytest>=8.3.3; extra == "test"
|
||||
Requires-Dist: psutil>=5.9.8; extra == "test"
|
||||
Dynamic: license-file
|
||||
|
||||
# Agent-Computer Interface (ACI) for Dev
|
||||
|
||||
An Agent-Computer Interface (ACI) designed for software development agents [Dev](https://github.com/hanzoai/Dev). This package provides essential tools and interfaces for AI agents to interact with computer systems for software development tasks.
|
||||
|
||||
## Features
|
||||
|
||||
- **Code Editor Interface**: Sophisticated editing capabilities through the `editor` module
|
||||
- File creation and modification
|
||||
- Code editing
|
||||
- Configuration management
|
||||
|
||||
- **Code Linting**: Built-in linting capabilities via the `linter` module
|
||||
- Tree-sitter based code analysis
|
||||
- Python-specific linting support
|
||||
|
||||
- **Utility Functions**: Helper modules for common operations
|
||||
- Shell command execution utilities
|
||||
- Diff generation and analysis
|
||||
- Logging functionality
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install dev-aci
|
||||
```
|
||||
|
||||
Or using Poetry:
|
||||
|
||||
```bash
|
||||
poetry add dev-aci
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
dev_aci/
|
||||
├── editor/ # Code editing functionality
|
||||
├── linter/ # Code linting capabilities
|
||||
└── utils/ # Utility functions
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/hanzoai/dev-aci.git
|
||||
cd dev-aci
|
||||
```
|
||||
|
||||
2. Install development dependencies:
|
||||
```bash
|
||||
poetry install
|
||||
```
|
||||
|
||||
3. Configure pre-commit-hooks
|
||||
```bash
|
||||
make install-pre-commit-hooks
|
||||
```
|
||||
|
||||
4. Run tests:
|
||||
```bash
|
||||
poetry run pytest
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License.
|
||||
@@ -1,27 +0,0 @@
|
||||
LICENSE
|
||||
README.md
|
||||
pyproject.toml
|
||||
dev_aci/__init__.py
|
||||
dev_aci/editor/__init__.py
|
||||
dev_aci/editor/config.py
|
||||
dev_aci/editor/editor.py
|
||||
dev_aci/editor/encoding.py
|
||||
dev_aci/editor/exceptions.py
|
||||
dev_aci/editor/file_cache.py
|
||||
dev_aci/editor/history.py
|
||||
dev_aci/editor/prompts.py
|
||||
dev_aci/editor/results.py
|
||||
dev_aci/linter/__init__.py
|
||||
dev_aci/linter/base.py
|
||||
dev_aci/linter/linter.py
|
||||
dev_aci/linter/impl/python.py
|
||||
dev_aci/linter/impl/treesitter.py
|
||||
dev_aci/linter/impl/treesitter_compat.py
|
||||
dev_aci/utils/diff.py
|
||||
dev_aci/utils/logger.py
|
||||
dev_aci/utils/shell.py
|
||||
hanzo_aci.egg-info/PKG-INFO
|
||||
hanzo_aci.egg-info/SOURCES.txt
|
||||
hanzo_aci.egg-info/dependency_links.txt
|
||||
hanzo_aci.egg-info/requires.txt
|
||||
hanzo_aci.egg-info/top_level.txt
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
numpy
|
||||
pandas
|
||||
scipy
|
||||
networkx
|
||||
litellm
|
||||
gitpython
|
||||
tree-sitter>=0.24.0
|
||||
tree-sitter-python>=0.23.6
|
||||
tree-sitter-javascript>=0.23.1
|
||||
tree-sitter-typescript>=0.23.2
|
||||
tree-sitter-ruby>=0.23.1
|
||||
grep-ast>=0.8.1
|
||||
flake8
|
||||
whatthepatch>=1.0.6
|
||||
binaryornot>=0.4.4
|
||||
cachetools>=5.5.2
|
||||
charset-normalizer>=3.4.1
|
||||
|
||||
[dev]
|
||||
ruff>=0.7.2
|
||||
pre-commit>=4.0.1
|
||||
|
||||
[test]
|
||||
pytest>=8.3.3
|
||||
psutil>=5.9.8
|
||||
@@ -1 +0,0 @@
|
||||
dev_aci
|
||||
@@ -1,315 +0,0 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: hanzo-memory
|
||||
Version: 1.0.1
|
||||
Summary: AI memory service with FastAPI and MCP support
|
||||
Author-email: "Hanzo Industries Inc." <[email protected]>
|
||||
License: BSD
|
||||
Project-URL: Homepage, https://github.com/hanzoai/memory
|
||||
Project-URL: Documentation, https://docs.hanzo.ai/memory
|
||||
Project-URL: Repository, https://github.com/hanzoai/memory
|
||||
Project-URL: Issues, https://github.com/hanzoai/memory/issues
|
||||
Keywords: ai,memory,mcp,fastapi,embeddings
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Requires-Python: >=3.10
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Requires-Dist: fastapi>=0.115.0
|
||||
Requires-Dist: uvicorn[standard]>=0.32.0
|
||||
Requires-Dist: pydantic>=2.9.0
|
||||
Requires-Dist: pydantic-settings>=2.6.0
|
||||
Requires-Dist: fastembed>=0.4.0
|
||||
Requires-Dist: litellm>=1.56.0
|
||||
Requires-Dist: httpx>=0.28.0
|
||||
Requires-Dist: python-multipart>=0.0.12
|
||||
Requires-Dist: python-jose[cryptography]>=3.3.0
|
||||
Requires-Dist: passlib[bcrypt]>=1.7.0
|
||||
Requires-Dist: redis>=5.2.0
|
||||
Requires-Dist: orjson>=3.10.0
|
||||
Requires-Dist: mcp>=1.2.0
|
||||
Requires-Dist: structlog>=24.4.0
|
||||
Requires-Dist: rich>=13.7.1
|
||||
Requires-Dist: tiktoken>=0.8.0
|
||||
Requires-Dist: tenacity>=9.0.0
|
||||
Requires-Dist: aiocache>=0.12.0
|
||||
Requires-Dist: numpy>=1.26.0
|
||||
Requires-Dist: scikit-learn>=1.5.0
|
||||
Requires-Dist: polars>=1.15.0
|
||||
Requires-Dist: chromadb>=0.5.0
|
||||
Requires-Dist: lancedb>=0.8.0
|
||||
Requires-Dist: sentence-transformers>=5.0.0
|
||||
Provides-Extra: dev
|
||||
Requires-Dist: pytest>=8.3.0; extra == "dev"
|
||||
Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
|
||||
Requires-Dist: pytest-cov>=6.0.0; extra == "dev"
|
||||
Requires-Dist: ruff>=0.8.0; extra == "dev"
|
||||
Requires-Dist: mypy>=1.13.0; extra == "dev"
|
||||
Requires-Dist: black>=24.10.0; extra == "dev"
|
||||
Requires-Dist: pre-commit>=4.0.0; extra == "dev"
|
||||
Requires-Dist: ipython>=8.29.0; extra == "dev"
|
||||
Requires-Dist: ipdb>=0.13.0; extra == "dev"
|
||||
Requires-Dist: twine>=4.0.0; extra == "dev"
|
||||
Provides-Extra: test
|
||||
Requires-Dist: pytest>=8.3.0; extra == "test"
|
||||
Requires-Dist: pytest-asyncio>=0.24.0; extra == "test"
|
||||
Requires-Dist: pytest-cov>=6.0.0; extra == "test"
|
||||
Requires-Dist: pytest-mock>=3.14.0; extra == "test"
|
||||
Requires-Dist: faker>=30.0.0; extra == "test"
|
||||
Requires-Dist: factory-boy>=3.3.0; extra == "test"
|
||||
Requires-Dist: respx>=0.21.0; extra == "test"
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: mkdocs>=1.6.0; extra == "docs"
|
||||
Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
|
||||
Requires-Dist: mkdocstrings[python]>=0.27.0; extra == "docs"
|
||||
Dynamic: license-file
|
||||
|
||||
# Hanzo Memory Service
|
||||
|
||||
## Add memory to any AI application!
|
||||
|
||||
A high-performance FastAPI service that provides memory and knowledge management capabilities for AI applications. Built with LanceDB vector database (works on all platforms including browsers via WASM), local embeddings, and LiteLLM for flexible LLM integration.
|
||||
|
||||
## Features
|
||||
|
||||
- **🧠 Intelligent Memory Management**: Store and retrieve contextual memories with semantic search
|
||||
- **📚 Knowledge Base System**: Organize facts in hierarchical knowledge bases with parent-child relationships
|
||||
- **💬 Chat History**: Store and search conversation history with de-duplication
|
||||
- **🔍 Unified Search API**: Fast semantic search using FastEmbed embeddings
|
||||
- **🤖 Flexible LLM Support**: Use any LLM via LiteLLM (OpenAI, Anthropic, Ollama, etc.)
|
||||
- **🔐 Multi-tenancy**: Secure user and project-based data isolation
|
||||
- **🚀 High Performance**: Local embeddings and efficient vector storage
|
||||
- **🗄️ Cross-Platform Database**: LanceDB works everywhere - Linux, macOS, Windows, and even browsers
|
||||
- **🔌 MCP Support**: Model Context Protocol server for AI tool integration
|
||||
- **📦 Easy Deployment**: Docker support and uvx compatibility
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ FastAPI │────▶│ Vector DB │────▶│ Embeddings │
|
||||
│ Server │ │ (LanceDB/ │ │ (FastEmbed/ │
|
||||
└─────────────────┘ │ InfinityDB) │ │ LanceDB) │
|
||||
│ └─────────────────┘ └─────────────────┘
|
||||
▼ │
|
||||
┌─────────────────┐ ┌─────────────────┐
|
||||
│ LiteLLM │ │ Local Models │
|
||||
│ (LLM Bridge) │ │ (BGE, etc.) │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Install with uvx
|
||||
|
||||
```bash
|
||||
# Install and run directly with uvx
|
||||
uvx hanzo-memory
|
||||
|
||||
# Or install globally
|
||||
uvx install hanzo-memory
|
||||
```
|
||||
|
||||
### Install from source
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/hanzoai/memory
|
||||
cd memory
|
||||
|
||||
# Install with uv
|
||||
make setup
|
||||
|
||||
# Run the server
|
||||
make dev
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
# Using docker-compose
|
||||
docker-compose up
|
||||
|
||||
# Or build and run manually
|
||||
docker build -t hanzo-memory .
|
||||
docker run -p 4000:4000 -v $(pwd)/data:/app/data hanzo-memory
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Create a `.env` file (see `.env.example`):
|
||||
|
||||
```env
|
||||
# API Authentication
|
||||
HANZO_API_KEY=your-api-key-here
|
||||
HANZO_DISABLE_AUTH=false # Set to true for local development
|
||||
|
||||
# LLM Configuration (choose one)
|
||||
# OpenAI
|
||||
HANZO_LLM_MODEL=gpt-4o-mini
|
||||
OPENAI_API_KEY=your-openai-key
|
||||
|
||||
# Anthropic
|
||||
HANZO_LLM_MODEL=claude-3-haiku-20240307
|
||||
ANTHROPIC_API_KEY=your-anthropic-key
|
||||
|
||||
# Local Models (Ollama)
|
||||
HANZO_LLM_MODEL=ollama/llama3.2
|
||||
HANZO_LLM_API_BASE=http://localhost:11434
|
||||
|
||||
# Embedding Model
|
||||
HANZO_EMBEDDING_MODEL=BAAI/bge-small-en-v1.5
|
||||
|
||||
# Database Backend (optional, defaults to lancedb)
|
||||
HANZO_DB_BACKEND=lancedb
|
||||
HANZO_LANCEDB_PATH=data/lancedb
|
||||
```
|
||||
|
||||
## Database Backends
|
||||
|
||||
Hanzo Memory supports multiple vector database backends:
|
||||
|
||||
### LanceDB (Default)
|
||||
- Modern embedded vector database that works on ALL platforms
|
||||
- Cross-platform: Linux, macOS, Windows, ARM, and even browsers (via WASM)
|
||||
- Built-in support for FastEmbed and sentence-transformers
|
||||
- Efficient columnar storage format (Apache Arrow/Parquet)
|
||||
- Native vector similarity search
|
||||
- Can be embedded in Python, JavaScript/TypeScript, Rust applications
|
||||
|
||||
### InfinityDB (Alternative, Linux/Windows only)
|
||||
- High-performance embedded vector database
|
||||
- Not available on macOS
|
||||
- Optimized for production workloads
|
||||
- Built-in vector indexing
|
||||
|
||||
To configure the database backend:
|
||||
|
||||
```env
|
||||
# Use LanceDB
|
||||
HANZO_DB_BACKEND=lancedb
|
||||
HANZO_LANCEDB_PATH=data/lancedb
|
||||
|
||||
# Use InfinityDB
|
||||
HANZO_DB_BACKEND=infinity
|
||||
HANZO_INFINITY_DB_PATH=data/infinity_db
|
||||
```
|
||||
|
||||
## API Documentation
|
||||
|
||||
For complete API documentation including all endpoints, request/response formats, and examples, see [docs/API.md](docs/API.md).
|
||||
|
||||
### Quick API Overview
|
||||
|
||||
- **Memory Management**: `/v1/remember`, `/v1/memories/*`
|
||||
- **Knowledge Bases**: `/v1/kb/*`, `/v1/kb/facts/*`
|
||||
- **Chat Sessions**: `/v1/chat/sessions/*`, `/v1/chat/messages/*`
|
||||
- **Search**: Unified semantic search across all data types
|
||||
- **MCP Server**: Model Context Protocol integration for AI tools
|
||||
|
||||
### LLM Features
|
||||
|
||||
The service can:
|
||||
- **Summarize content** for knowledge extraction
|
||||
- **Generate knowledge update instructions** in JSON format
|
||||
- **Filter search results** for relevance
|
||||
- **Strip PII** from stored content
|
||||
|
||||
Example summarization request:
|
||||
```python
|
||||
llm_service.summarize_for_knowledge(
|
||||
content="Long document...",
|
||||
skip_summarization=False, # Set to True to skip
|
||||
provided_summary="Optional pre-made summary"
|
||||
)
|
||||
```
|
||||
|
||||
Returns:
|
||||
```json
|
||||
{
|
||||
"summary": "Concise summary of content",
|
||||
"knowledge_instructions": {
|
||||
"action": "add_fact",
|
||||
"facts": [{"content": "Extracted fact", "metadata": {...}}],
|
||||
"reasoning": "Why these facts are important"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
make test
|
||||
|
||||
# Run with coverage
|
||||
make test-cov
|
||||
|
||||
# Run specific test
|
||||
uvx pytest tests/test_memory_api.py -v
|
||||
```
|
||||
|
||||
### Code Quality
|
||||
|
||||
```bash
|
||||
# Format code
|
||||
make format
|
||||
|
||||
# Run linter
|
||||
make lint
|
||||
|
||||
# Type checking
|
||||
make type-check
|
||||
```
|
||||
|
||||
### Project Structure
|
||||
|
||||
```
|
||||
memory/
|
||||
├── src/hanzo_memory/
|
||||
│ ├── api/ # API authentication
|
||||
│ ├── db/ # InfinityDB client
|
||||
│ ├── models/ # Pydantic models
|
||||
│ ├── services/ # Business logic
|
||||
│ ├── config.py # Settings
|
||||
│ └── server.py # FastAPI app
|
||||
├── tests/ # Pytest tests
|
||||
├── Makefile # Build automation
|
||||
└── pyproject.toml # Project config
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
### Production Checklist
|
||||
|
||||
1. Set strong `HANZO_API_KEY`
|
||||
2. Configure appropriate LLM model and API keys
|
||||
3. Set `HANZO_DISABLE_AUTH=false`
|
||||
4. Configure data persistence volume
|
||||
5. Set up monitoring and logging
|
||||
6. Configure rate limiting if needed
|
||||
|
||||
### Scaling Considerations
|
||||
|
||||
- InfinityDB embedded runs in-process (no separate DB server)
|
||||
- FastEmbed generates embeddings locally (no API calls)
|
||||
- LLM calls can be directed to local models for full offline operation
|
||||
- Use Redis for caching in high-traffic scenarios
|
||||
|
||||
## Contributing
|
||||
|
||||
Pull requests are welcome! Please:
|
||||
1. Write tests for new features
|
||||
2. Follow existing code style
|
||||
3. Update documentation as needed
|
||||
4. Run `make check` before submitting
|
||||
|
||||
## License
|
||||
|
||||
BSD License - see LICENSE file for details.
|
||||
@@ -1,52 +0,0 @@
|
||||
LICENSE
|
||||
README.md
|
||||
pyproject.toml
|
||||
src/hanzo_memory/__init__.py
|
||||
src/hanzo_memory/cli.py
|
||||
src/hanzo_memory/config.py
|
||||
src/hanzo_memory/memory.py
|
||||
src/hanzo_memory/server.py
|
||||
src/hanzo_memory.egg-info/PKG-INFO
|
||||
src/hanzo_memory.egg-info/SOURCES.txt
|
||||
src/hanzo_memory.egg-info/dependency_links.txt
|
||||
src/hanzo_memory.egg-info/entry_points.txt
|
||||
src/hanzo_memory.egg-info/requires.txt
|
||||
src/hanzo_memory.egg-info/top_level.txt
|
||||
src/hanzo_memory/api/__init__.py
|
||||
src/hanzo_memory/api/auth.py
|
||||
src/hanzo_memory/db/__init__.py
|
||||
src/hanzo_memory/db/base.py
|
||||
src/hanzo_memory/db/client.py
|
||||
src/hanzo_memory/db/factory.py
|
||||
src/hanzo_memory/db/kuzudb_client.py
|
||||
src/hanzo_memory/db/lancedb_client.py
|
||||
src/hanzo_memory/db/local_client.py
|
||||
src/hanzo_memory/db/markdown_reader.py
|
||||
src/hanzo_memory/db/mock_infinity.py
|
||||
src/hanzo_memory/db/backends/__init__.py
|
||||
src/hanzo_memory/db/backends/backend_registry.py
|
||||
src/hanzo_memory/mcp/__init__.py
|
||||
src/hanzo_memory/mcp/__main__.py
|
||||
src/hanzo_memory/mcp/server.py
|
||||
src/hanzo_memory/models/__init__.py
|
||||
src/hanzo_memory/models/base.py
|
||||
src/hanzo_memory/models/chat.py
|
||||
src/hanzo_memory/models/knowledge.py
|
||||
src/hanzo_memory/models/memory.py
|
||||
src/hanzo_memory/models/project.py
|
||||
src/hanzo_memory/services/__init__.py
|
||||
src/hanzo_memory/services/embeddings.py
|
||||
src/hanzo_memory/services/embeddings_lancedb.py
|
||||
src/hanzo_memory/services/llm.py
|
||||
src/hanzo_memory/services/memory.py
|
||||
tests/test_additional_coverage.py
|
||||
tests/test_auth.py
|
||||
tests/test_chat_api.py
|
||||
tests/test_cli.py
|
||||
tests/test_embeddings.py
|
||||
tests/test_embeddings_edge_cases.py
|
||||
tests/test_infinity_client.py
|
||||
tests/test_knowledge_api.py
|
||||
tests/test_llm_service.py
|
||||
tests/test_mcp_server.py
|
||||
tests/test_memory_api.py
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[console_scripts]
|
||||
hanzo-memory = hanzo_memory.cli:main
|
||||
hanzo-memory-mcp = hanzo_memory.mcp.server:main
|
||||
hanzo-memory-server = hanzo_memory.server:run
|
||||
@@ -1,50 +0,0 @@
|
||||
fastapi>=0.115.0
|
||||
uvicorn[standard]>=0.32.0
|
||||
pydantic>=2.9.0
|
||||
pydantic-settings>=2.6.0
|
||||
fastembed>=0.4.0
|
||||
litellm>=1.56.0
|
||||
httpx>=0.28.0
|
||||
python-multipart>=0.0.12
|
||||
python-jose[cryptography]>=3.3.0
|
||||
passlib[bcrypt]>=1.7.0
|
||||
redis>=5.2.0
|
||||
orjson>=3.10.0
|
||||
mcp>=1.2.0
|
||||
structlog>=24.4.0
|
||||
rich>=13.7.1
|
||||
tiktoken>=0.8.0
|
||||
tenacity>=9.0.0
|
||||
aiocache>=0.12.0
|
||||
numpy>=1.26.0
|
||||
scikit-learn>=1.5.0
|
||||
polars>=1.15.0
|
||||
chromadb>=0.5.0
|
||||
lancedb>=0.8.0
|
||||
sentence-transformers>=5.0.0
|
||||
|
||||
[dev]
|
||||
pytest>=8.3.0
|
||||
pytest-asyncio>=0.24.0
|
||||
pytest-cov>=6.0.0
|
||||
ruff>=0.8.0
|
||||
mypy>=1.13.0
|
||||
black>=24.10.0
|
||||
pre-commit>=4.0.0
|
||||
ipython>=8.29.0
|
||||
ipdb>=0.13.0
|
||||
twine>=4.0.0
|
||||
|
||||
[docs]
|
||||
mkdocs>=1.6.0
|
||||
mkdocs-material>=9.5.0
|
||||
mkdocstrings[python]>=0.27.0
|
||||
|
||||
[test]
|
||||
pytest>=8.3.0
|
||||
pytest-asyncio>=0.24.0
|
||||
pytest-cov>=6.0.0
|
||||
pytest-mock>=3.14.0
|
||||
faker>=30.0.0
|
||||
factory-boy>=3.3.0
|
||||
respx>=0.21.0
|
||||
@@ -1 +0,0 @@
|
||||
hanzo_memory
|
||||
@@ -228,6 +228,7 @@ Models can be specified as:
|
||||
reviewer_query = params.get("reviewer_query")
|
||||
common_context = params.get("common_context", "")
|
||||
max_concurrent = params.get("max_concurrent", 10)
|
||||
semaphore = asyncio.Semaphore(max_concurrent)
|
||||
|
||||
if not agents:
|
||||
await tool_ctx.error("No agents provided")
|
||||
|
||||
Reference in New Issue
Block a user