feat: Major directory reorganization and cleanup

Reorganized project structure for better maintainability and reduced
disk usage by 95.9% (11 GB -> 451 MB).

Directory Reorganization (85% reduction in root files):
- Created docs/ with subdirectories (deployment, testing, database, etc.)
- Created infrastructure/vpn-configs/ for VPN scripts
- Moved 90+ files from root to organized locations
- Archived obsolete documentation (context system, offline mode, zombie debugging)
- Moved all test files to tests/ directory
- Root directory: 119 files -> 18 files

Disk Cleanup (10.55 GB recovered):
- Deleted Rust build artifacts: 9.6 GB (target/ directories)
- Deleted Python virtual environments: 161 MB (venv/ directories)
- Deleted Python cache: 50 KB (__pycache__/)

New Structure:
- docs/ - All documentation organized by category
- docs/archives/ - Obsolete but preserved documentation
- infrastructure/ - VPN configs and SSH setup
- tests/ - All test files consolidated
- logs/ - Ready for future logs

Benefits:
- Cleaner root directory (18 vs 119 files)
- Logical organization of documentation
- 95.9% disk space reduction
- Faster navigation and discovery
- Better portability (build artifacts excluded)

Build artifacts can be regenerated:
- Rust: cargo build --release (5-15 min per project)
- Python: pip install -r requirements.txt (2-3 min)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 20:42:28 -07:00
parent 89e5118306
commit 06f7617718
96 changed files with 54 additions and 2639 deletions

View File

@@ -1,149 +0,0 @@
# Recall Endpoint Deployment Guide
## Issue
The ClaudeTools API on RMM server (172.16.3.30) is running OLD code that doesn't include the security fixes and proper return format for the `/api/conversation-contexts/recall` endpoint.
## What Was Fixed (Already Committed)
Git commit `a534a72`: "Fix recall endpoint: Add search_term, input validation, and proper contexts array return"
Changes:
- Added `search_term` parameter with regex validation
- Added tag validation to prevent SQL injection
- Changed return format from `{"context": string}` to `{"total": ..., "contexts": array}`
- Use ConversationContextResponse schema for proper serialization
## Manual Deployment Steps
### Option 1: Git Pull on RMM Server (Recommended if git repo exists)
```bash
# SSH to RMM server
plink 172.16.3.30
# Navigate to ClaudeTools directory
cd /opt/claudetools
# Pull latest changes
git fetch origin
git pull origin main
# Restart API service
sudo systemctl restart claudetools-api
# Check status
sudo systemctl status claudetools-api
# Exit
exit
```
### Option 2: Manual File Copy
```powershell
# In PowerShell on local machine:
# Copy file to RMM
pscp D:\ClaudeTools\api\routers\conversation_contexts.py 172.16.3.30:/tmp/conversation_contexts.py
# SSH to RMM and move file
plink 172.16.3.30
# Once connected:
sudo mv /tmp/conversation_contexts.py /opt/claudetools/api/routers/conversation_contexts.py
sudo chown claudetools:claudetools /opt/claudetools/api/routers/conversation_contexts.py
sudo systemctl restart claudetools-api
exit
```
### Option 3: Use PowerShell Script (If Authentication Works)
```powershell
# Run the deployment script
.\deploy_to_rmm.ps1
```
## Verification
After deployment, test the recall endpoint:
```python
import requests
jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJpbXBvcnQtc2NyaXB0Iiwic2NvcGVzIjpbImFkbWluIiwiaW1wb3J0Il0sImV4cCI6MTc3MTI3NTEyOX0.-DJF50tq0MaNwVQBdO7cGYNuO5pQuXte-tTj5DpHi2U"
response = requests.get(
"http://172.16.3.30:8001/api/conversation-contexts/recall",
headers={"Authorization": f"Bearer {jwt_token}"},
params={"search_term": "dataforth", "limit": 2}
)
data = response.json()
print(f"Status: {response.status_code}")
print(f"Keys: {list(data.keys())}")
# Should see: ['total', 'limit', 'search_term', 'project_id', 'tags', 'min_relevance_score', 'contexts']
# NOT: ['context', 'project_id', 'tags', 'limit', 'min_relevance_score']
if "contexts" in data:
print(f"[SUCCESS] Deployment successful!")
print(f"Found {len(data['contexts'])} contexts")
else:
print(f"[FAILED] Still showing old format")
```
## Completed Work Summary
### Network Configuration ✅
- MariaDB bind-address: 0.0.0.0 (listening on all interfaces)
- User grants: claudetools@172.16.%, claudetools@100.% (Tailscale)
- Firewall rules: UFW allows 3306 from 172.16.0.0/24 and 100.0.0.0/8
- Direct database connections: WORKING
### Database Optimization ✅
- FULLTEXT indexes applied: idx_fulltext_summary, idx_fulltext_title
- Composite indexes applied: idx_project_type_relevance, idx_type_relevance_created
- Query performance: 100x improvement
- Database contains: 711 conversation contexts including Dataforth data
### Code Fixes ✅
- SQL injection vulnerabilities: FIXED
- Recall endpoint: COMMITTED to git (commit a534a72)
- Security validation: Input validation added
- Return format: Updated to structured JSON
### Pending ⚠️
- **Deployment to RMM:** Recall endpoint code needs to be deployed to production server
## Expected Result After Deployment
```json
{
"total": 5,
"limit": 2,
"search_term": "dataforth",
"project_id": null,
"tags": null,
"min_relevance_score": 5.0,
"contexts": [
{
"id": "uuid-here",
"title": "Dataforth DOS project...",
"context_type": "imported_conversation",
"dense_summary": "...",
"relevance_score": 5.0,
"tags": ["dataforth", "dos"],
"created_at": "2026-01-18T19:38:00Z"
},
{
"id": "uuid-here",
"title": "Another dataforth context...",
...
}
]
}
```
---
**Generated:** 2026-01-18
**Git Commit:** a534a72
**Server:** RMM (172.16.3.30:8001)