chore: uv for all

This commit is contained in:
Timothy
2026-02-04 19:57:41 -08:00
parent 3114af75e4
commit 8f32ef8064
45 changed files with 239 additions and 156 deletions
+3 -3
View File
@@ -107,7 +107,7 @@ Creates the complete agent architecture:
- ✅ 1-5 constraints defined - ✅ 1-5 constraints defined
- ✅ 5-10 nodes specified in nodes/__init__.py - ✅ 5-10 nodes specified in nodes/__init__.py
- ✅ 8-15 edges connecting workflow - ✅ 8-15 edges connecting workflow
- ✅ Validated structure (passes `python -m agent_name validate`) - ✅ Validated structure (passes `uv run python -m agent_name validate`)
- ✅ README.md with usage instructions - ✅ README.md with usage instructions
- ✅ CLI commands (info, validate, run, shell) - ✅ CLI commands (info, validate, run, shell)
@@ -345,7 +345,7 @@ agent-workflow (meta-skill)
- Check node IDs match between nodes/__init__.py and agent.py - Check node IDs match between nodes/__init__.py and agent.py
- Verify all edges reference valid node IDs - Verify all edges reference valid node IDs
- Ensure entry_node exists in nodes list - Ensure entry_node exists in nodes list
- Run: `PYTHONPATH=core:exports python -m agent_name validate` - Run: `PYTHONPATH=exports uv run python -m agent_name validate`
### "Agent has structure but won't run" ### "Agent has structure but won't run"
@@ -371,7 +371,7 @@ Run these checks:
ls exports/my_agent/agent.py ls exports/my_agent/agent.py
# Check if it validates # Check if it validates
PYTHONPATH=core:exports python -m my_agent validate PYTHONPATH=exports uv run python -m my_agent validate
# Check if tests exist # Check if tests exist
ls exports/my_agent/tests/ ls exports/my_agent/tests/
@@ -75,10 +75,10 @@ initialize → list → identify → check
### Step 5: Finalize ### Step 5: Finalize
```bash ```bash
$ PYTHONPATH=core:exports python -m file_monitor_agent validate $ PYTHONPATH=exports uv run python -m file_monitor_agent validate
✓ Agent is valid ✓ Agent is valid
$ PYTHONPATH=core:exports python -m file_monitor_agent info $ PYTHONPATH=exports uv run python -m file_monitor_agent info
Agent: File Monitor & Copy Agent Agent: File Monitor & Copy Agent
Nodes: 7 Nodes: 7
Edges: 8 Edges: 8
@@ -131,7 +131,7 @@ Tests approved incrementally by user.
### Step 3: Run Tests ### Step 3: Run Tests
```bash ```bash
$ PYTHONPATH=core:exports pytest exports/file_monitor_agent/tests/ $ PYTHONPATH=exports uv run pytest exports/file_monitor_agent/tests/
test_constraints.py::test_preserves_originals PASSED test_constraints.py::test_preserves_originals PASSED
test_constraints.py::test_handles_errors PASSED test_constraints.py::test_handles_errors PASSED
@@ -162,7 +162,7 @@ test_edge_cases.py::test_large_files PASSED
./RUN_AGENT.sh ./RUN_AGENT.sh
# Or manually # Or manually
PYTHONPATH=core:exports:tools/src python -m file_monitor_agent run PYTHONPATH=exports uv run python -m file_monitor_agent run
``` ```
**Capabilities:** **Capabilities:**
@@ -287,8 +287,8 @@ This returns JSON with all the goal, nodes, edges, and MCP server configurations
> >
> ```bash > ```bash
> cd /home/timothy/oss/hive > cd /home/timothy/oss/hive
> PYTHONPATH=core:exports python -m AGENT_NAME validate > PYTHONPATH=exports uv run python -m AGENT_NAME validate
> PYTHONPATH=core:exports python -m AGENT_NAME info > PYTHONPATH=exports uv run python -m AGENT_NAME info
> ``` > ```
--- ---
@@ -298,7 +298,7 @@ This returns JSON with all the goal, nodes, edges, and MCP server configurations
**RUN validation:** **RUN validation:**
```bash ```bash
cd /home/timothy/oss/hive && PYTHONPATH=core:exports python -m AGENT_NAME validate cd /home/timothy/oss/hive && PYTHONPATH=exports uv run python -m AGENT_NAME validate
``` ```
- If valid: Agent is complete! - If valid: Agent is complete!
@@ -18,16 +18,16 @@ Deep-dive research agent that searches 10+ sources and produces comprehensive na
```bash ```bash
# Show agent info # Show agent info
python -m online_research_agent info uv run python -m online_research_agent info
# Validate structure # Validate structure
python -m online_research_agent validate uv run python -m online_research_agent validate
# Run research on a topic # Run research on a topic
python -m online_research_agent run --topic "impact of AI on healthcare" uv run python -m online_research_agent run --topic "impact of AI on healthcare"
# Interactive shell # Interactive shell
python -m online_research_agent shell uv run python -m online_research_agent shell
``` ```
### Python API ### Python API
@@ -294,7 +294,7 @@ When agent is complete, transition to testing phase:
### Pre-Testing Checklist ### Pre-Testing Checklist
- [ ] Agent structure validates: `python -m agent_name validate` - [ ] Agent structure validates: `uv run python -m agent_name validate`
- [ ] All nodes defined in nodes/__init__.py - [ ] All nodes defined in nodes/__init__.py
- [ ] All edges connect valid nodes with correct priorities - [ ] All edges connect valid nodes with correct priorities
- [ ] Feedback edge targets have `max_node_visits > 1` - [ ] Feedback edge targets have `max_node_visits > 1`
+1 -1
View File
@@ -126,7 +126,7 @@ jobs:
for agent_dir in "${agent_dirs[@]}"; do for agent_dir in "${agent_dirs[@]}"; do
if [ -f "$agent_dir/agent.json" ]; then if [ -f "$agent_dir/agent.json" ]; then
echo "Validating $agent_dir" echo "Validating $agent_dir"
python -c "import json; json.load(open('$agent_dir/agent.json'))" uv run python -c "import json; json.load(open('$agent_dir/agent.json'))"
validated=$((validated + 1)) validated=$((validated + 1))
fi fi
done done
+2 -2
View File
@@ -125,7 +125,7 @@ feat(component): add new feature description
> **Note:** When testing agents in `exports/`, always set PYTHONPATH: > **Note:** When testing agents in `exports/`, always set PYTHONPATH:
> >
> ```bash > ```bash
> PYTHONPATH=core:exports python -m agent_name test > PYTHONPATH=exports uv run python -m agent_name test
> ``` > ```
```bash ```bash
@@ -139,7 +139,7 @@ make test
cd core && pytest tests/ -v cd core && pytest tests/ -v
# Run tests for a specific agent # Run tests for a specific agent
PYTHONPATH=core:exports python -m agent_name test PYTHONPATH=exports uv run python -m agent_name test
``` ```
> **CI also validates** that all exported agent JSON files (`exports/*/agent.json`) are well-formed JSON. Ensure your agent exports are valid before submitting. > **CI also validates** that all exported agent JSON files (`exports/*/agent.json`) are well-formed JSON. Ensure your agent exports are valid before submitting.
+16 -16
View File
@@ -111,12 +111,12 @@ This installs agent-related Claude Code skills:
```bash ```bash
# Verify package imports # Verify package imports
python -c "import framework; print('✓ framework OK')" uv run python -c "import framework; print('✓ framework OK')"
python -c "import aden_tools; print('✓ aden_tools OK')" uv run python -c "import aden_tools; print('✓ aden_tools OK')"
python -c "import litellm; print('✓ litellm OK')" uv run python -c "import litellm; print('✓ litellm OK')"
# Run an agent (after building one via /building-agents-construction) # Run an agent (after building one via /building-agents-construction)
PYTHONPATH=core:exports python -m your_agent_name validate PYTHONPATH=exports uv run python -m your_agent_name validate
``` ```
--- ---
@@ -256,7 +256,7 @@ claude> /testing-agent
4. **Validate the Agent** 4. **Validate the Agent**
```bash ```bash
PYTHONPATH=core:exports python -m your_agent_name validate PYTHONPATH=exports uv run python -m your_agent_name validate
``` ```
5. **Test the Agent** 5. **Test the Agent**
@@ -302,19 +302,19 @@ If you prefer to build agents manually:
```bash ```bash
# Validate agent structure # Validate agent structure
PYTHONPATH=core:exports python -m agent_name validate PYTHONPATH=exports uv run python -m agent_name validate
# Show agent information # Show agent information
PYTHONPATH=core:exports python -m agent_name info PYTHONPATH=exports uv run python -m agent_name info
# Run agent with input # Run agent with input
PYTHONPATH=core:exports python -m agent_name run --input '{ PYTHONPATH=exports uv run python -m agent_name run --input '{
"ticket_content": "My login is broken", "ticket_content": "My login is broken",
"customer_id": "CUST-123" "customer_id": "CUST-123"
}' }'
# Run in mock mode (no LLM calls) # Run in mock mode (no LLM calls)
PYTHONPATH=core:exports python -m agent_name run --mock --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --mock --input '{...}'
``` ```
--- ---
@@ -338,17 +338,17 @@ This generates and runs:
```bash ```bash
# Run all tests for an agent # Run all tests for an agent
PYTHONPATH=core:exports python -m agent_name test PYTHONPATH=exports uv run python -m agent_name test
# Run specific test type # Run specific test type
PYTHONPATH=core:exports python -m agent_name test --type constraint PYTHONPATH=exports uv run python -m agent_name test --type constraint
PYTHONPATH=core:exports python -m agent_name test --type success PYTHONPATH=exports uv run python -m agent_name test --type success
# Run with parallel execution # Run with parallel execution
PYTHONPATH=core:exports python -m agent_name test --parallel 4 PYTHONPATH=exports uv run python -m agent_name test --parallel 4
# Fail fast (stop on first failure) # Fail fast (stop on first failure)
PYTHONPATH=core:exports python -m agent_name test --fail-fast PYTHONPATH=exports uv run python -m agent_name test --fail-fast
``` ```
### Writing Custom Tests ### Writing Custom Tests
@@ -635,10 +635,10 @@ import logging
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
# Run with verbose output # Run with verbose output
PYTHONPATH=core:exports python -m agent_name run --input '{...}' --verbose PYTHONPATH=exports uv run python -m agent_name run --input '{...}' --verbose
# Use mock mode to test without LLM calls # Use mock mode to test without LLM calls
PYTHONPATH=core:exports python -m agent_name run --mock --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --mock --input '{...}'
``` ```
--- ---
+27 -27
View File
@@ -69,9 +69,9 @@ apk add bash git python3 py3-pip nodejs npm curl build-base python3-dev linux-he
``` ```
2. Set up Virtual Environment (Required for Python 3.12+): 2. Set up Virtual Environment (Required for Python 3.12+):
``` ```
python3 -m venv venv uv venv
source venv/bin/activate source .venv/bin/activate
pip install --upgrade pip setuptools wheel # uv handles pip/setuptools/wheel automatically
``` ```
3. Run the Quickstart Script: 3. Run the Quickstart Script:
``` ```
@@ -86,29 +86,29 @@ If you prefer to set up manually or the script fails:
```bash ```bash
cd core cd core
pip install -e . uv pip install -e .
``` ```
### 2. Install Tools Package ### 2. Install Tools Package
```bash ```bash
cd tools cd tools
pip install -e . uv pip install -e .
``` ```
### 3. Upgrade OpenAI Package ### 3. Upgrade OpenAI Package
```bash ```bash
# litellm requires openai >= 1.0.0 # litellm requires openai >= 1.0.0
pip install --upgrade "openai>=1.0.0" uv pip install --upgrade "openai>=1.0.0"
``` ```
### 4. Verify Installation ### 4. Verify Installation
```bash ```bash
python -c "import framework; print('✓ framework OK')" uv run python -c "import framework; print('✓ framework OK')"
python -c "import aden_tools; print('✓ aden_tools OK')" uv run python -c "import aden_tools; print('✓ aden_tools OK')"
python -c "import litellm; print('✓ litellm OK')" uv run python -c "import litellm; print('✓ litellm OK')"
``` ```
> **Windows Tip:** > **Windows Tip:**
@@ -149,7 +149,7 @@ All agent commands must be run from the project root with `PYTHONPATH` set:
```bash ```bash
# From /hive/ directory # From /hive/ directory
PYTHONPATH=core:exports python -m agent_name COMMAND PYTHONPATH=exports uv run python -m agent_name COMMAND
``` ```
Windows (PowerShell): Windows (PowerShell):
@@ -163,18 +163,18 @@ python -m agent_name COMMAND
```bash ```bash
# Validate agent structure # Validate agent structure
PYTHONPATH=core:exports python -m your_agent_name validate PYTHONPATH=exports uv run python -m your_agent_name validate
# Show agent information # Show agent information
PYTHONPATH=core:exports python -m your_agent_name info PYTHONPATH=exports uv run python -m your_agent_name info
# Run agent with input # Run agent with input
PYTHONPATH=core:exports python -m your_agent_name run --input '{ PYTHONPATH=exports uv run python -m your_agent_name run --input '{
"task": "Your input here" "task": "Your input here"
}' }'
# Run in mock mode (no LLM calls) # Run in mock mode (no LLM calls)
PYTHONPATH=core:exports python -m your_agent_name run --mock --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --mock --input '{...}'
``` ```
## Building New Agents and Run Flow ## Building New Agents and Run Flow
@@ -279,7 +279,7 @@ This workflow orchestrates all agent-building skills to take you from idea → p
```bash ```bash
# Create virtual environment # Create virtual environment
python3 -m venv .venv uv venv
# Activate it # Activate it
source .venv/bin/activate # macOS/Linux source .venv/bin/activate # macOS/Linux
@@ -293,7 +293,7 @@ Always activate the venv before running agents:
```bash ```bash
source .venv/bin/activate source .venv/bin/activate
PYTHONPATH=core:exports python -m your_agent_name demo PYTHONPATH=exports uv run python -m your_agent_name demo
``` ```
### PowerShell: “running scripts is disabled on this system” ### PowerShell: “running scripts is disabled on this system”
@@ -309,7 +309,7 @@ Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
**Solution:** Install the core package: **Solution:** Install the core package:
```bash ```bash
cd core && pip install -e . cd core && uv pip install -e .
``` ```
### "ModuleNotFoundError: No module named 'aden_tools'" ### "ModuleNotFoundError: No module named 'aden_tools'"
@@ -317,7 +317,7 @@ cd core && pip install -e .
**Solution:** Install the tools package: **Solution:** Install the tools package:
```bash ```bash
cd tools && pip install -e . cd tools && uv pip install -e .
``` ```
Or run the setup script: Or run the setup script:
@@ -339,7 +339,7 @@ Windows:
**Solution:** Upgrade openai: **Solution:** Upgrade openai:
```bash ```bash
pip install --upgrade "openai>=1.0.0" uv pip install --upgrade "openai>=1.0.0"
``` ```
### "No module named 'your_agent_name'" ### "No module named 'your_agent_name'"
@@ -351,7 +351,7 @@ pip install --upgrade "openai>=1.0.0"
Linux/macOS: Linux/macOS:
```bash ```bash
PYTHONPATH=core:exports python -m your_agent_name validate PYTHONPATH=exports uv run python -m your_agent_name validate
``` ```
Windows: Windows:
@@ -369,7 +369,7 @@ python -m support_ticket_agent validate
```bash ```bash
# Remove broken installations # Remove broken installations
pip uninstall -y framework tools uv pip uninstall framework tools
# Reinstall correctly # Reinstall correctly
./quickstart.sh ./quickstart.sh
@@ -429,12 +429,12 @@ If you need to use both packages in a single script (e.g., for testing), you hav
```bash ```bash
# Option 1: Install both in a shared environment # Option 1: Install both in a shared environment
python -m venv .venv uv venv
source .venv/bin/activate source .venv/bin/activate
pip install -e core/ -e tools/ uv pip install -e core/ -e tools/
# Option 2: Use PYTHONPATH (for quick testing) # Option 2: Use PYTHONPATH (for quick testing)
PYTHONPATH=core:tools/src python your_script.py PYTHONPATH=tools/src uv run python your_script.py
``` ```
### MCP Server Configuration ### MCP Server Configuration
@@ -460,7 +460,7 @@ This ensures each MCP server runs with its correct dependencies.
### Why PYTHONPATH is Required ### Why PYTHONPATH is Required
The packages are installed in **editable mode** (`pip install -e`), which means: The packages are installed in **editable mode** (`uv pip install -e`), which means:
- `framework` and `aden_tools` are globally importable (no PYTHONPATH needed) - `framework` and `aden_tools` are globally importable (no PYTHONPATH needed)
- `exports` is NOT installed as a package (PYTHONPATH required) - `exports` is NOT installed as a package (PYTHONPATH required)
@@ -495,7 +495,7 @@ Enter goal: "Build an agent that processes customer support tickets"
### 3. Validate Agent ### 3. Validate Agent
```bash ```bash
PYTHONPATH=core:exports python -m your_agent_name validate PYTHONPATH=exports uv run python -m your_agent_name validate
``` ```
### 4. Test Agent ### 4. Test Agent
@@ -507,7 +507,7 @@ claude> /testing-agent
### 5. Run Agent ### 5. Run Agent
```bash ```bash
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
## IDE Setup ## IDE Setup
+2 -2
View File
@@ -19,8 +19,8 @@ check: ## Run all checks without modifying files (CI-safe)
cd tools && ruff format --check . cd tools && ruff format --check .
test: ## Run all tests test: ## Run all tests
cd core && python -m pytest tests/ -v cd core && uv run python -m pytest tests/ -v
install-hooks: ## Install pre-commit hooks install-hooks: ## Install pre-commit hooks
pip install pre-commit uv pip install pre-commit
pre-commit install pre-commit install
+3 -3
View File
@@ -121,7 +121,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Run your agent # Run your agent
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 Complete Setup Guide](ENVIRONMENT_SETUP.md)** - Detailed instructions for agent development **[📖 Complete Setup Guide](ENVIRONMENT_SETUP.md)** - Detailed instructions for agent development
@@ -207,7 +207,7 @@ flowchart LR
Aden Hive provides a list of featured agents that you can use and build on top of. Aden Hive provides a list of featured agents that you can use and build on top of.
### Run an agent shared by others ### Run an agent shared by others
Put the agent in `exports/` and run `PYTHONPATH=core:exports python -m your_agent_name run --input '{...}'` Put the agent in `exports/` and run `PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'`
For building and running goal-driven agents with the framework: For building and running goal-driven agents with the framework:
@@ -228,7 +228,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Run agents # Run agents
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
See [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) for complete setup instructions. See [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) for complete setup instructions.
+10 -10
View File
@@ -14,7 +14,7 @@ Framework provides a runtime framework that captures **decisions**, not just act
## Installation ## Installation
```bash ```bash
pip install -e . uv pip install -e .
``` ```
## MCP Server Setup ## MCP Server Setup
@@ -45,13 +45,13 @@ If you prefer manual setup:
```bash ```bash
# Install framework # Install framework
pip install -e . uv pip install -e .
# Install MCP dependencies # Install MCP dependencies
pip install mcp fastmcp uv pip install mcp fastmcp
# Test the server # Test the server
python -m framework.mcp.agent_builder_server uv run python -m framework.mcp.agent_builder_server
``` ```
### Using with MCP Clients ### Using with MCP Clients
@@ -86,13 +86,13 @@ Run an LLM-powered calculator:
```bash ```bash
# Single calculation # Single calculation
python -m framework calculate "2 + 3 * 4" uv run python -m framework calculate "2 + 3 * 4"
# Interactive mode # Interactive mode
python -m framework interactive uv run python -m framework interactive
# Analyze runs with Builder # Analyze runs with Builder
python -m framework analyze calculator uv run python -m framework analyze calculator
``` ```
### Using the Runtime ### Using the Runtime
@@ -136,13 +136,13 @@ Tests are generated using MCP tools (`generate_constraint_tests`, `generate_succ
```bash ```bash
# Run tests against an agent # Run tests against an agent
python -m framework test-run <agent_path> --goal <goal_id> --parallel 4 uv run python -m framework test-run <agent_path> --goal <goal_id> --parallel 4
# Debug failed tests # Debug failed tests
python -m framework test-debug <agent_path> <test_name> uv run python -m framework test-debug <agent_path> <test_name>
# List tests for a goal # List tests for a goal
python -m framework test-list <goal_id> uv run python -m framework test-list <goal_id>
``` ```
For detailed testing workflows, see the [testing-agent skill](../.claude/skills/testing-agent/SKILL.md). For detailed testing workflows, see the [testing-agent skill](../.claude/skills/testing-agent/SKILL.md).
+1 -1
View File
@@ -9,7 +9,7 @@ for understanding the core runtime loop:
Setup -> Graph definition -> Execution -> Result Setup -> Graph definition -> Execution -> Result
Run with: Run with:
PYTHONPATH=core python core/examples/manual_agent.py uv run python core/examples/manual_agent.py
""" """
import asyncio import asyncio
@@ -96,7 +96,7 @@ class BaseOAuth2Provider(CredentialProvider):
self._client = httpx.Client(timeout=self.config.request_timeout) self._client = httpx.Client(timeout=self.config.request_timeout)
except ImportError as e: except ImportError as e:
raise ImportError( raise ImportError(
"OAuth2 provider requires 'httpx'. Install with: pip install httpx" "OAuth2 provider requires 'httpx'. Install with: uv pip install httpx"
) from e ) from e
return self._client return self._client
+2 -1
View File
@@ -136,7 +136,8 @@ class EncryptedFileStorage(CredentialStorage):
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
except ImportError as e: except ImportError as e:
raise ImportError( raise ImportError(
"Encrypted storage requires 'cryptography'. Install with: pip install cryptography" "Encrypted storage requires 'cryptography'. "
"Install with: uv pip install cryptography"
) from e ) from e
self.base_path = Path(base_path or self.DEFAULT_PATH).expanduser() self.base_path = Path(base_path or self.DEFAULT_PATH).expanduser()
@@ -2,7 +2,7 @@
HashiCorp Vault storage adapter. HashiCorp Vault storage adapter.
Provides integration with HashiCorp Vault for enterprise secret management. Provides integration with HashiCorp Vault for enterprise secret management.
Requires the 'hvac' package: pip install hvac Requires the 'hvac' package: uv pip install hvac
""" """
from __future__ import annotations from __future__ import annotations
@@ -66,7 +66,7 @@ class HashiCorpVaultStorage(CredentialStorage):
- AWS IAM auth method - AWS IAM auth method
Requirements: Requirements:
pip install hvac uv pip install hvac
""" """
def __init__( def __init__(
@@ -97,7 +97,7 @@ class HashiCorpVaultStorage(CredentialStorage):
import hvac import hvac
except ImportError as e: except ImportError as e:
raise ImportError( raise ImportError(
"HashiCorp Vault support requires 'hvac'. Install with: pip install hvac" "HashiCorp Vault support requires 'hvac'. Install with: uv pip install hvac"
) from e ) from e
self._url = url self._url = url
+1 -1
View File
@@ -147,7 +147,7 @@ class LiteLLMProvider(LLMProvider):
if litellm is None: if litellm is None:
raise ImportError( raise ImportError(
"LiteLLM is not installed. Please install it with: pip install litellm" "LiteLLM is not installed. Please install it with: uv pip install litellm"
) )
def _completion_with_rate_limit_retry(self, **kwargs: Any) -> Any: def _completion_with_rate_limit_retry(self, **kwargs: Any) -> Any:
+1 -1
View File
@@ -4,7 +4,7 @@ MCP Server for Agent Building Tools
Exposes tools for building goal-driven agents via the Model Context Protocol. Exposes tools for building goal-driven agents via the Model Context Protocol.
Usage: Usage:
python -m framework.mcp.agent_builder_server uv run python -m framework.mcp.agent_builder_server
""" """
import json import json
+3 -3
View File
@@ -26,9 +26,9 @@ Testing tools are integrated into the main agent_builder_server.py:
## CLI Commands ## CLI Commands
```bash ```bash
python -m framework test-run <agent_path> --goal <goal_id> uv run python -m framework test-run <agent_path> --goal <goal_id>
python -m framework test-debug <goal_id> <test_id> uv run python -m framework test-debug <goal_id> <test_id>
python -m framework test-list <agent_path> --goal <goal_id> uv run python -m framework test-list <agent_path> --goal <goal_id>
``` ```
""" """
+1
View File
@@ -11,6 +11,7 @@ dependencies = [
"litellm>=1.81.0", "litellm>=1.81.0",
"mcp>=1.0.0", "mcp>=1.0.0",
"fastmcp>=2.0.0", "fastmcp>=2.0.0",
"textual>=1.0.0",
"pytest>=8.0", "pytest>=8.0",
"pytest-asyncio>=0.23", "pytest-asyncio>=0.23",
"pytest-xdist>=3.0", "pytest-xdist>=3.0",
+1 -1
View File
@@ -143,7 +143,7 @@ def main():
logger.info("The MCP server is now ready to use!") logger.info("The MCP server is now ready to use!")
logger.info("") logger.info("")
logger.info(f"{Colors.BLUE}To start the MCP server manually:{Colors.NC}") logger.info(f"{Colors.BLUE}To start the MCP server manually:{Colors.NC}")
logger.info(" python -m framework.mcp.agent_builder_server") logger.info(" uv run python -m framework.mcp.agent_builder_server")
logger.info("") logger.info("")
logger.info(f"{Colors.BLUE}MCP Configuration location:{Colors.NC}") logger.info(f"{Colors.BLUE}MCP Configuration location:{Colors.NC}")
logger.info(f" {mcp_config_path}") logger.info(f" {mcp_config_path}")
+4 -4
View File
@@ -19,7 +19,7 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR" cd "$SCRIPT_DIR"
echo -e "${YELLOW}Step 1: Installing framework package...${NC}" echo -e "${YELLOW}Step 1: Installing framework package...${NC}"
pip install -e . || { uv pip install -e . || {
echo -e "${RED}Failed to install framework package${NC}" echo -e "${RED}Failed to install framework package${NC}"
exit 1 exit 1
} }
@@ -27,7 +27,7 @@ echo -e "${GREEN}✓ Framework package installed${NC}"
echo "" echo ""
echo -e "${YELLOW}Step 2: Installing MCP dependencies...${NC}" echo -e "${YELLOW}Step 2: Installing MCP dependencies...${NC}"
pip install mcp fastmcp || { uv pip install mcp fastmcp || {
echo -e "${RED}Failed to install MCP dependencies${NC}" echo -e "${RED}Failed to install MCP dependencies${NC}"
exit 1 exit 1
} }
@@ -59,7 +59,7 @@ fi
echo "" echo ""
echo -e "${YELLOW}Step 4: Testing MCP server...${NC}" echo -e "${YELLOW}Step 4: Testing MCP server...${NC}"
python -c "from framework.mcp import agent_builder_server; print('✓ MCP server module loads successfully')" || { uv run python -c "from framework.mcp import agent_builder_server; print('✓ MCP server module loads successfully')" || {
echo -e "${RED}Failed to import MCP server module${NC}" echo -e "${RED}Failed to import MCP server module${NC}"
exit 1 exit 1
} }
@@ -71,7 +71,7 @@ echo ""
echo "The MCP server is now ready to use!" echo "The MCP server is now ready to use!"
echo "" echo ""
echo "To start the MCP server manually:" echo "To start the MCP server manually:"
echo " python -m framework.mcp.agent_builder_server" echo " uv run python -m framework.mcp.agent_builder_server"
echo "" echo ""
echo "MCP Configuration location:" echo "MCP Configuration location:"
echo " $SCRIPT_DIR/.mcp.json" echo " $SCRIPT_DIR/.mcp.json"
+1 -1
View File
@@ -2,7 +2,7 @@
Run with: Run with:
cd core cd core
pip install litellm pytest uv pip install litellm pytest
pytest tests/test_litellm_provider.py -v pytest tests/test_litellm_provider.py -v
For live tests (requires API keys): For live tests (requires API keys):
+1 -1
View File
@@ -4,7 +4,7 @@ Calls live LLM APIs and dumps stream events to JSON files for review.
Results are saved to core/tests/stream_event_dumps/{provider}_{model}_{scenario}.json Results are saved to core/tests/stream_event_dumps/{provider}_{model}_{scenario}.json
Run with: Run with:
cd core && python -m pytest tests/test_litellm_streaming.py -v -s -k "RealAPI" cd core && uv run python -m pytest tests/test_litellm_streaming.py -v -s -k "RealAPI"
Requires API keys set in environment: Requires API keys set in environment:
ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY (or via credential store) ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY (or via credential store)
+4 -4
View File
@@ -76,7 +76,7 @@ def main():
success(f"installed at {framework_path}") success(f"installed at {framework_path}")
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
error("framework package not found") error("framework package not found")
logger.info(f" Run: pip install -e {script_dir}") logger.info(f" Run: uv pip install -e {script_dir}")
all_checks_passed = False all_checks_passed = False
# Check 2: MCP dependencies # Check 2: MCP dependencies
@@ -90,7 +90,7 @@ def main():
if missing_deps: if missing_deps:
error(f"missing: {', '.join(missing_deps)}") error(f"missing: {', '.join(missing_deps)}")
logger.info(f" Run: pip install {' '.join(missing_deps)}") logger.info(f" Run: uv pip install {' '.join(missing_deps)}")
all_checks_passed = False all_checks_passed = False
else: else:
success("all installed") success("all installed")
@@ -194,7 +194,7 @@ def main():
logger.info("Your MCP server is ready to use.") logger.info("Your MCP server is ready to use.")
logger.info("") logger.info("")
logger.info(f"{Colors.BLUE}To start the server:{Colors.NC}") logger.info(f"{Colors.BLUE}To start the server:{Colors.NC}")
logger.info(" python -m framework.mcp.agent_builder_server") logger.info(" uv run python -m framework.mcp.agent_builder_server")
logger.info("") logger.info("")
logger.info(f"{Colors.BLUE}To use with Claude Desktop:{Colors.NC}") logger.info(f"{Colors.BLUE}To use with Claude Desktop:{Colors.NC}")
logger.info(" Add the configuration from .mcp.json to your") logger.info(" Add the configuration from .mcp.json to your")
@@ -203,7 +203,7 @@ def main():
logger.info(f"{Colors.RED}✗ Some checks failed{Colors.NC}") logger.info(f"{Colors.RED}✗ Some checks failed{Colors.NC}")
logger.info("") logger.info("")
logger.info("To fix issues, run:") logger.info("To fix issues, run:")
logger.info(f" python {script_dir / 'setup_mcp.py'}") logger.info(f" uv run python {script_dir / 'setup_mcp.py'}")
logger.info("") logger.info("")
+2 -2
View File
@@ -162,7 +162,7 @@ Add to `.vscode/settings.json`:
Install the core package: Install the core package:
```bash ```bash
cd core && pip install -e . cd core && uv pip install -e .
``` ```
### API key not found ### API key not found
@@ -184,7 +184,7 @@ $env:ANTHROPIC_API_KEY = "sk-ant-..."
Run from the project root with PYTHONPATH: Run from the project root with PYTHONPATH:
```bash ```bash
PYTHONPATH=core:exports python -m my_agent validate PYTHONPATH=exports uv run python -m my_agent validate
``` ```
See [Environment Setup](../ENVIRONMENT_SETUP.md) for detailed installation instructions. See [Environment Setup](../ENVIRONMENT_SETUP.md) for detailed installation instructions.
+2 -2
View File
@@ -8,7 +8,7 @@ Hive uses [Ruff](https://docs.astral.sh/ruff/) for all Python linting and format
```bash ```bash
# 1. Install dev dependencies # 1. Install dev dependencies
cd core && pip install -e ".[dev]" cd core && uv pip install -e ".[dev]"
# 2. Install pre-commit hooks (runs ruff automatically before each commit) # 2. Install pre-commit hooks (runs ruff automatically before each commit)
make install-hooks make install-hooks
@@ -142,7 +142,7 @@ The single source of truth for lint rules is the `[tool.ruff]` section in each p
## FAQ ## FAQ
**Q: Do I need to install anything beyond `pip install -e ".[dev]"`?** **Q: Do I need to install anything beyond `uv pip install -e ".[dev]"`?**
Only if you want pre-commit hooks: `make install-hooks`. Everything else (VS Code settings, editorconfig) works automatically. Only if you want pre-commit hooks: `make install-hooks`. Everything else (VS Code settings, editorconfig) works automatically.
**Q: Can I use a different formatter (black, autopep8)?** **Q: Can I use a different formatter (black, autopep8)?**
+2 -2
View File
@@ -1202,7 +1202,7 @@ class HashiCorpVaultStorage(CredentialStorage):
""" """
HashiCorp Vault storage adapter. HashiCorp Vault storage adapter.
Requires: pip install hvac Requires: uv pip install hvac
Features: Features:
- KV v2 secrets engine support - KV v2 secrets engine support
@@ -1243,7 +1243,7 @@ class HashiCorpVaultStorage(CredentialStorage):
except ImportError: except ImportError:
raise ImportError( raise ImportError(
"HashiCorp Vault support requires 'hvac'. " "HashiCorp Vault support requires 'hvac'. "
"Install with: pip install hvac" "Install with: uv pip install hvac"
) )
import os import os
+13 -13
View File
@@ -22,7 +22,7 @@ cd hive
./quickstart.sh ./quickstart.sh
# 3. Verify installation (optional, quickstart.sh already verifies) # 3. Verify installation (optional, quickstart.sh already verifies)
python -c "import framework; import aden_tools; print('✓ Setup complete')" uv run python -c "import framework; import aden_tools; print('✓ Setup complete')"
``` ```
## Building Your First Agent ## Building Your First Agent
@@ -55,7 +55,7 @@ cd exports/my_agent
# Create agent.json, tools.py, README.md (see DEVELOPER.md for structure) # Create agent.json, tools.py, README.md (see DEVELOPER.md for structure)
# Validate the agent # Validate the agent
PYTHONPATH=core:exports python -m my_agent validate PYTHONPATH=exports uv run python -m my_agent validate
``` ```
### Option 3: Manual Code-First (Minimal Example) ### Option 3: Manual Code-First (Minimal Example)
@@ -67,7 +67,7 @@ If you prefer to start with code rather than CLI wizards, check out the manual a
cat core/examples/manual_agent.py cat core/examples/manual_agent.py
# Run it (no API keys required) # Run it (no API keys required)
PYTHONPATH=core python core/examples/manual_agent.py uv run python core/examples/manual_agent.py
``` ```
This demonstrates the core runtime loop using pure Python functions, skipping the complexity of LLM setup and file-based configuration. This demonstrates the core runtime loop using pure Python functions, skipping the complexity of LLM setup and file-based configuration.
@@ -116,18 +116,18 @@ hive/
```bash ```bash
# Validate agent structure # Validate agent structure
PYTHONPATH=core:exports python -m my_agent validate PYTHONPATH=exports uv run python -m my_agent validate
# Show agent information # Show agent information
PYTHONPATH=core:exports python -m my_agent info PYTHONPATH=exports uv run python -m my_agent info
# Run agent with input # Run agent with input
PYTHONPATH=core:exports python -m my_agent run --input '{ PYTHONPATH=exports uv run python -m my_agent run --input '{
"task": "Your input here" "task": "Your input here"
}' }'
# Run in mock mode (no LLM calls) # Run in mock mode (no LLM calls)
PYTHONPATH=core:exports python -m my_agent run --mock --input '{...}' PYTHONPATH=exports uv run python -m my_agent run --mock --input '{...}'
``` ```
## API Keys Setup ## API Keys Setup
@@ -153,11 +153,11 @@ Get your API keys:
claude> /testing-agent claude> /testing-agent
# Or manually # Or manually
PYTHONPATH=core:exports python -m my_agent test PYTHONPATH=exports uv run python -m my_agent test
# Run with specific test type # Run with specific test type
PYTHONPATH=core:exports python -m my_agent test --type constraint PYTHONPATH=exports uv run python -m my_agent test --type constraint
PYTHONPATH=core:exports python -m my_agent test --type success PYTHONPATH=exports uv run python -m my_agent test --type success
``` ```
## Next Steps ## Next Steps
@@ -175,7 +175,7 @@ PYTHONPATH=core:exports python -m my_agent test --type success
```bash ```bash
# Reinstall framework package # Reinstall framework package
cd core cd core
pip install -e . uv pip install -e .
``` ```
### ModuleNotFoundError: No module named 'aden_tools' ### ModuleNotFoundError: No module named 'aden_tools'
@@ -183,7 +183,7 @@ pip install -e .
```bash ```bash
# Reinstall tools package # Reinstall tools package
cd tools cd tools
pip install -e . uv pip install -e .
``` ```
### LLM API Errors ### LLM API Errors
@@ -193,7 +193,7 @@ pip install -e .
echo $ANTHROPIC_API_KEY echo $ANTHROPIC_API_KEY
# Run in mock mode to test without API # Run in mock mode to test without API
PYTHONPATH=core:exports python -m my_agent run --mock --input '{...}' PYTHONPATH=exports uv run python -m my_agent run --mock --input '{...}'
``` ```
### Package Installation Issues ### Package Installation Issues
+2 -2
View File
@@ -95,7 +95,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Ejecutar tu agente # Ejecutar tu agente
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 Guía de Configuración Completa](ENVIRONMENT_SETUP.md)** - Instrucciones detalladas para desarrollo de agentes **[📖 Guía de Configuración Completa](ENVIRONMENT_SETUP.md)** - Instrucciones detalladas para desarrollo de agentes
@@ -241,7 +241,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Ejecutar agentes # Ejecutar agentes
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
Consulta [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) para instrucciones de configuración completas. Consulta [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) para instrucciones de configuración completas.
+2 -2
View File
@@ -104,7 +104,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# अपने एजेंट को चलाएँ # अपने एजेंट को चलाएँ
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 पूर्ण कॉन्फ़िगरेशन गाइड](ENVIRONMENT_SETUP.md)** - एजेंट विकास के लिए विस्तृत निर्देश **[📖 पूर्ण कॉन्फ़िगरेशन गाइड](ENVIRONMENT_SETUP.md)** - एजेंट विकास के लिए विस्तृत निर्देश
@@ -250,7 +250,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# एजेंट चलाएँ # एजेंट चलाएँ
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
पूरी कॉन्फ़िगरेशन निर्देशों के लिए ENVIRONMENT_SETUP.md देखें। पूरी कॉन्फ़िगरेशन निर्देशों के लिए ENVIRONMENT_SETUP.md देखें।
+2 -2
View File
@@ -97,7 +97,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# エージェントを実行 # エージェントを実行
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 完全セットアップガイド](ENVIRONMENT_SETUP.md)** - エージェント開発の詳細な手順 **[📖 完全セットアップガイド](ENVIRONMENT_SETUP.md)** - エージェント開発の詳細な手順
@@ -243,7 +243,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# エージェントを実行 # エージェントを実行
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
完全なセットアップ手順については、[ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md)を参照してください。 完全なセットアップ手順については、[ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md)を参照してください。
+2 -2
View File
@@ -97,7 +97,7 @@ claude> /building-agents
claude> /testing-agent claude> /testing-agent
# 에이전트 실행 # 에이전트 실행
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 전체 설정 가이드](ENVIRONMENT_SETUP.md)** - 에이전트 개발을 위한 상세한 설명 **[📖 전체 설정 가이드](ENVIRONMENT_SETUP.md)** - 에이전트 개발을 위한 상세한 설명
@@ -254,7 +254,7 @@ claude> /building-agents
claude> /testing-agent claude> /testing-agent
# 에이전트 실행 # 에이전트 실행
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
전체 설정 방법은 [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) 를 참고하세요. 전체 설정 방법은 [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) 를 참고하세요.
+2 -2
View File
@@ -97,7 +97,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Executar seu agente # Executar seu agente
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 Guia Completo de Configuração](ENVIRONMENT_SETUP.md)** - Instruções detalhadas para desenvolvimento de agentes **[📖 Guia Completo de Configuração](ENVIRONMENT_SETUP.md)** - Instruções detalhadas para desenvolvimento de agentes
@@ -243,7 +243,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Executar agentes # Executar agentes
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
Consulte [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) para instruções completas de configuração. Consulte [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) para instruções completas de configuração.
+2 -2
View File
@@ -97,7 +97,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Запустить агента # Запустить агента
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 Полное руководство по настройке](ENVIRONMENT_SETUP.md)** - Подробные инструкции для разработки агентов **[📖 Полное руководство по настройке](ENVIRONMENT_SETUP.md)** - Подробные инструкции для разработки агентов
@@ -243,7 +243,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# Запустить агентов # Запустить агентов
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
Обратитесь к [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) для полных инструкций по настройке. Обратитесь к [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md) для полных инструкций по настройке.
+2 -2
View File
@@ -97,7 +97,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# 运行您的智能体 # 运行您的智能体
PYTHONPATH=core:exports python -m your_agent_name run --input '{...}' PYTHONPATH=exports uv run python -m your_agent_name run --input '{...}'
``` ```
**[📖 完整设置指南](ENVIRONMENT_SETUP.md)** - 智能体开发的详细说明 **[📖 完整设置指南](ENVIRONMENT_SETUP.md)** - 智能体开发的详细说明
@@ -243,7 +243,7 @@ claude> /building-agents-construction
claude> /testing-agent claude> /testing-agent
# 运行智能体 # 运行智能体
PYTHONPATH=core:exports python -m agent_name run --input '{...}' PYTHONPATH=exports uv run python -m agent_name run --input '{...}'
``` ```
完整设置说明请参阅 [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md)。 完整设置说明请参阅 [ENVIRONMENT_SETUP.md](ENVIRONMENT_SETUP.md)。
+1 -1
View File
@@ -31,7 +31,7 @@ cp -r examples/templates/marketing_agent exports/my_agent
# 2. Edit the goal, nodes, and edges in agent.py and nodes/__init__.py # 2. Edit the goal, nodes, and edges in agent.py and nodes/__init__.py
# 3. Run it # 3. Run it
PYTHONPATH=core python -m exports.my_agent --help uv run python -m exports.my_agent --help
``` ```
## How to use a recipe ## How to use a recipe
+1 -1
View File
@@ -28,7 +28,7 @@ cp -r examples/templates/marketing_agent exports/my_marketing_agent
# 3. Customize goal, nodes, edges, and prompts # 3. Customize goal, nodes, edges, and prompts
# 4. Run it # 4. Run it
PYTHONPATH=core python -m exports.my_marketing_agent --input '{"product_description": "..."}' uv run python -m exports.my_marketing_agent --input '{"product_description": "..."}'
``` ```
## Available templates ## Available templates
+2 -2
View File
@@ -25,10 +25,10 @@ A multi-channel marketing content generator. Given a product and audience, this
```bash ```bash
# From the repo root # From the repo root
PYTHONPATH=core python -m examples.templates.marketing_agent uv run python -m examples.templates.marketing_agent
# With custom input # With custom input
PYTHONPATH=core python -m examples.templates.marketing_agent --input '{ uv run python -m examples.templates.marketing_agent --input '{
"product_description": "A fitness tracking app", "product_description": "A fitness tracking app",
"target_audience": "Health-conscious millennials", "target_audience": "Health-conscious millennials",
"brand_voice": "Energetic and motivational", "brand_voice": "Energetic and motivational",
+83 -2
View File
@@ -581,10 +581,76 @@ fi
echo "" echo ""
# ============================================================ # ============================================================
# Step 4: Verify Setup # Step 5: Initialize Credential Store
# ============================================================ # ============================================================
echo -e "${YELLOW}${NC} ${BLUE}${BOLD}Step 4: Verifying installation...${NC}" echo -e "${YELLOW}${NC} ${BLUE}${BOLD}Step 5: Initializing credential store...${NC}"
echo ""
echo -e "${DIM}The credential store encrypts API keys and secrets for your agents.${NC}"
echo ""
HIVE_CRED_DIR="$HOME/.hive/credentials"
# Check if HIVE_CREDENTIAL_KEY already exists (from env or .env)
if [ -n "$HIVE_CREDENTIAL_KEY" ]; then
echo -e "${GREEN} ✓ HIVE_CREDENTIAL_KEY already set${NC}"
else
# Generate a new Fernet encryption key
echo -n " Generating encryption key... "
GENERATED_KEY=$(uv run python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" 2>/dev/null)
if [ -z "$GENERATED_KEY" ]; then
echo -e "${RED}failed${NC}"
echo -e "${YELLOW} ⚠ Credential store will not be available.${NC}"
echo -e "${YELLOW} You can set HIVE_CREDENTIAL_KEY manually later.${NC}"
else
echo -e "${GREEN}ok${NC}"
# Save to .env file
if [ ! -f "$SCRIPT_DIR/.env" ]; then
touch "$SCRIPT_DIR/.env"
fi
echo "" >> "$SCRIPT_DIR/.env"
echo "# Encryption key for Hive credential store (~/.hive/credentials)" >> "$SCRIPT_DIR/.env"
echo "HIVE_CREDENTIAL_KEY=$GENERATED_KEY" >> "$SCRIPT_DIR/.env"
export HIVE_CREDENTIAL_KEY="$GENERATED_KEY"
echo -e "${GREEN} ✓ Encryption key saved to .env${NC}"
fi
fi
# Create credential store directories
if [ -n "$HIVE_CREDENTIAL_KEY" ]; then
mkdir -p "$HIVE_CRED_DIR/credentials"
mkdir -p "$HIVE_CRED_DIR/metadata"
# Initialize the metadata index
if [ ! -f "$HIVE_CRED_DIR/metadata/index.json" ]; then
echo '{}' > "$HIVE_CRED_DIR/metadata/index.json"
fi
echo -e "${GREEN} ✓ Credential store initialized at ~/.hive/credentials/${NC}"
# Verify the store works
echo -n " Verifying credential store... "
if uv run python -c "
from framework.credentials.storage import EncryptedFileStorage
storage = EncryptedFileStorage()
print('ok')
" 2>/dev/null | grep -q "ok"; then
echo -e "${GREEN}ok${NC}"
else
echo -e "${YELLOW}--${NC}"
fi
fi
echo ""
# ============================================================
# Step 6: Verify Setup
# ============================================================
echo -e "${YELLOW}${NC} ${BLUE}${BOLD}Step 6: Verifying installation...${NC}"
echo "" echo ""
ERRORS=0 ERRORS=0
@@ -628,6 +694,13 @@ else
echo -e "${YELLOW}--${NC}" echo -e "${YELLOW}--${NC}"
fi fi
echo -n " ⬡ credential store... "
if [ -n "$HIVE_CREDENTIAL_KEY" ] && [ -d "$HOME/.hive/credentials/credentials" ]; then
echo -e "${GREEN}ok${NC}"
else
echo -e "${YELLOW}--${NC}"
fi
echo "" echo ""
if [ $ERRORS -gt 0 ]; then if [ $ERRORS -gt 0 ]; then
@@ -659,6 +732,14 @@ if [ -n "$SELECTED_PROVIDER_ID" ]; then
echo "" echo ""
fi fi
# Show credential store status
if [ -n "$HIVE_CREDENTIAL_KEY" ]; then
echo -e "${BOLD}Credential Store:${NC}"
echo -e " ${GREEN}${NC} ${DIM}~/.hive/credentials/${NC} (encrypted)"
echo -e " ${DIM}Set up agent credentials with:${NC} ${CYAN}/setup-credentials${NC}"
echo ""
fi
echo -e "${BOLD}Quick Start:${NC}" echo -e "${BOLD}Quick Start:${NC}"
echo "" echo ""
echo -e " 1. Open Claude Code in this directory:" echo -e " 1. Open Claude Code in this directory:"
+7 -7
View File
@@ -227,17 +227,17 @@ Write-Host ""
Write-Host "To run agents on Windows (PowerShell):" Write-Host "To run agents on Windows (PowerShell):"
Write-Host "" Write-Host ""
Write-Host "1. From the project root, set PYTHONPATH:" Write-Host "1. From the project root, set PYTHONPATH:"
Write-Host " `$env:PYTHONPATH=`"core;exports`"" Write-Host " `$env:PYTHONPATH=`"exports`""
Write-Host "" Write-Host ""
Write-Host "2. Run an agent command:" Write-Host "2. Run an agent command:"
Write-Host " python -m agent_name validate" Write-Host " uv run python -m agent_name validate"
Write-Host " python -m agent_name info" Write-Host " uv run python -m agent_name info"
Write-Host " python -m agent_name run --input '{...}'" Write-Host " uv run python -m agent_name run --input '{...}'"
Write-Host "" Write-Host ""
Write-Host "Example (support_ticket_agent):" Write-Host "Example (support_ticket_agent):"
Write-Host " python -m support_ticket_agent validate" Write-Host " uv run python -m support_ticket_agent validate"
Write-Host " python -m support_ticket_agent info" Write-Host " uv run python -m support_ticket_agent info"
Write-Host " python -m support_ticket_agent run --input '{""ticket_content"":""..."",""customer_id"":""..."",""ticket_id"":""...""}'" Write-Host " uv run python -m support_ticket_agent run --input '{""ticket_content"":""..."",""customer_id"":""..."",""ticket_id"":""...""}'"
Write-Host "" Write-Host ""
Write-Host "Notes:" Write-Host "Notes:"
Write-Host " - Ensure the virtual environment is activated (.venv)" Write-Host " - Ensure the virtual environment is activated (.venv)"
+7 -7
View File
@@ -181,7 +181,7 @@ if $PYTHON_CMD -c "import playwright" > /dev/null 2>&1; then
echo -e "${GREEN}${NC} Playwright Chromium installed" echo -e "${GREEN}${NC} Playwright Chromium installed"
else else
echo -e "${YELLOW}${NC} Playwright browser install failed (web_scrape tool may not work)" echo -e "${YELLOW}${NC} Playwright browser install failed (web_scrape tool may not work)"
echo " Run manually: python -m playwright install chromium" echo " Run manually: uv run python -m playwright install chromium"
fi fi
else else
echo -e "${YELLOW}${NC} Playwright not found, skipping browser install" echo -e "${YELLOW}${NC} Playwright not found, skipping browser install"
@@ -290,14 +290,14 @@ echo ""
echo "To run agents, use:" echo "To run agents, use:"
echo "" echo ""
echo " ${BLUE}# From project root:${NC}" echo " ${BLUE}# From project root:${NC}"
echo " PYTHONPATH=core:exports ${PYTHON_CMD} -m agent_name validate" echo " PYTHONPATH=exports uv run python -m agent_name validate"
echo " PYTHONPATH=core:exports ${PYTHON_CMD} -m agent_name info" echo " PYTHONPATH=exports uv run python -m agent_name info"
echo " PYTHONPATH=core:exports ${PYTHON_CMD} -m agent_name run --input '{...}'" echo " PYTHONPATH=exports uv run python -m agent_name run --input '{...}'"
echo "" echo ""
echo "Available commands for your new agent:" echo "Available commands for your new agent:"
echo " PYTHONPATH=core:exports ${PYTHON_CMD} -m support_ticket_agent validate" echo " PYTHONPATH=exports uv run python -m support_ticket_agent validate"
echo " PYTHONPATH=core:exports ${PYTHON_CMD} -m support_ticket_agent info" echo " PYTHONPATH=exports uv run python -m support_ticket_agent info"
echo " PYTHONPATH=core:exports ${PYTHON_CMD} -m support_ticket_agent run --input '{\"ticket_content\":\"...\",\"customer_id\":\"...\",\"ticket_id\":\"...\"}'" echo " PYTHONPATH=exports uv run python -m support_ticket_agent run --input '{\"ticket_content\":\"...\",\"customer_id\":\"...\",\"ticket_id\":\"...\"}'"
echo "" echo ""
echo "To build new agents, use Claude Code skills:" echo "To build new agents, use Claude Code skills:"
echo " • /building-agents - Build a new agent" echo " • /building-agents - Build a new agent"
+2 -2
View File
@@ -5,13 +5,13 @@ Tool library for the Aden agent framework. Provides a collection of tools that A
## Installation ## Installation
```bash ```bash
pip install -e tools uv pip install -e tools
``` ```
For development: For development:
```bash ```bash
pip install -e "tools[dev]" uv pip install -e "tools[dev]"
``` ```
## Environment Setup ## Environment Setup
@@ -314,7 +314,7 @@ def register_tools(mcp: FastMCP) -> None:
return { return {
"error": ( "error": (
"DuckDB not installed. Install with: " "DuckDB not installed. Install with: "
"pip install duckdb or pip install tools[sql]" "uv pip install duckdb or uv pip install tools[sql]"
) )
} }
@@ -21,8 +21,8 @@ Use when you need to read the content of a specific URL, extract data from a web
Requires Chromium browser binaries: Requires Chromium browser binaries:
```bash ```bash
pip install playwright playwright-stealth uv pip install playwright playwright-stealth
playwright install chromium uv run playwright install chromium
``` ```
## Environment Variables ## Environment Variables