Completely removed the database context recall system while preserving database tables for safety. This major cleanup removes 80+ files and 16,831 lines of code. What was removed: - API layer: 4 routers (conversation-contexts, context-snippets, project-states, decision-logs) with 35+ endpoints - Database models: 5 models (ConversationContext, ContextSnippet, DecisionLog, ProjectState, ContextTag) - Services: 4 service layers with business logic - Schemas: 4 Pydantic schema files - Claude Code hooks: 13 hook files (user-prompt-submit, task-complete, sync-contexts, periodic saves) - Scripts: 15+ scripts (import, migration, testing, tombstone checking) - Tests: 5 test files (context recall, compression, diagnostics) - Documentation: 30+ markdown files (guides, architecture, quick starts) - Utilities: context compression, conversation parsing Files modified: - api/main.py: Removed router registrations - api/models/__init__.py: Removed model imports - api/schemas/__init__.py: Removed schema imports - api/services/__init__.py: Removed service imports - .claude/claude.md: Completely rewritten without context references Database tables preserved: - conversation_contexts, context_snippets, context_tags, project_states, decision_logs (5 orphaned tables remain for safety) - Migration created but NOT applied: 20260118_172743_remove_context_system.py - Tables can be dropped later when confirmed not needed New files added: - CONTEXT_SYSTEM_REMOVAL_SUMMARY.md: Detailed removal report - CONTEXT_SYSTEM_REMOVAL_COMPLETE.md: Final status - CONTEXT_EXPORT_RESULTS.md: Export attempt results - scripts/export-tombstoned-contexts.py: Export tool for future use - migrations/versions/20260118_172743_remove_context_system.py Impact: - Reduced from 130 to 95 API endpoints - Reduced from 43 to 38 active database tables - Removed 16,831 lines of code - System fully operational without context recall Reason for removal: - System was not actively used (no tombstoned contexts found) - Reduces codebase complexity - Focuses on core MSP work tracking functionality - Database preserved for safety (can rollback if needed) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
137 lines
5.2 KiB
Plaintext
137 lines
5.2 KiB
Plaintext
================================================================================
|
|
ClaudeTools Recall Endpoint - Manual Deployment Steps
|
|
================================================================================
|
|
|
|
STEP 1: Copy file to RMM server
|
|
--------------------------------
|
|
Run this command in PowerShell:
|
|
|
|
pscp D:\ClaudeTools\api\routers\conversation_contexts.py guru@172.16.3.30:/tmp/conversation_contexts.py
|
|
|
|
Enter password when prompted.
|
|
Expected output: "conversation_contexts.py | 9 kB | 9.x kB/s | ETA: 00:00:00 | 100%"
|
|
|
|
|
|
STEP 2: Connect to RMM server via SSH
|
|
--------------------------------------
|
|
Run:
|
|
|
|
plink guru@172.16.3.30
|
|
|
|
Enter password when prompted.
|
|
You should see: guru@gururmm:~$
|
|
|
|
|
|
STEP 3: Move file to production location
|
|
-----------------------------------------
|
|
In the SSH session, run:
|
|
|
|
sudo mv /tmp/conversation_contexts.py /opt/claudetools/api/routers/conversation_contexts.py
|
|
|
|
Enter sudo password when prompted.
|
|
|
|
|
|
STEP 4: Fix file ownership
|
|
---------------------------
|
|
In the SSH session, run:
|
|
|
|
sudo chown claudetools:claudetools /opt/claudetools/api/routers/conversation_contexts.py
|
|
|
|
|
|
STEP 5: Verify file was updated
|
|
--------------------------------
|
|
In the SSH session, run:
|
|
|
|
grep -c "search_term.*Query" /opt/claudetools/api/routers/conversation_contexts.py
|
|
|
|
Expected output: "1" (or higher) = NEW CODE DEPLOYED
|
|
If output is "0" = OLD CODE STILL PRESENT (something went wrong)
|
|
|
|
|
|
STEP 6: Restart API service
|
|
----------------------------
|
|
In the SSH session, run:
|
|
|
|
sudo systemctl restart claudetools-api
|
|
|
|
Wait 5 seconds, then check status:
|
|
|
|
sudo systemctl status claudetools-api --no-pager | head -15
|
|
|
|
Look for "Active: active (running)" with a RECENT timestamp (today's date).
|
|
|
|
|
|
STEP 7: Exit SSH
|
|
----------------
|
|
Type:
|
|
|
|
exit
|
|
|
|
|
|
STEP 8: Test the API
|
|
--------------------
|
|
Back in PowerShell, run:
|
|
|
|
python -c "import requests; jwt='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJpbXBvcnQtc2NyaXB0Iiwic2NvcGVzIjpbImFkbWluIiwiaW1wb3J0Il0sImV4cCI6MTc3MTI3NTEyOX0.-DJF50tq0MaNwVQBdO7cGYNuO5pQuXte-tTj5DpHi2U'; r=requests.get('http://172.16.3.30:8001/api/conversation-contexts/recall', headers={'Authorization': f'Bearer {jwt}'}, params={'search_term': 'dataforth', 'limit': 2}); print(f'Status: {r.status_code}'); print(f'Keys: {list(r.json().keys())}'); print('[SUCCESS] NEW CODE!' if 'contexts' in r.json() else '[FAILED] Still old code'); print(f'Found {len(r.json().get(\"contexts\", []))} contexts' if 'contexts' in r.json() else '')"
|
|
|
|
Expected output if successful:
|
|
Status: 200
|
|
Keys: ['total', 'limit', 'search_term', 'project_id', 'tags', 'min_relevance_score', 'contexts']
|
|
[SUCCESS] NEW CODE!
|
|
Found 2 contexts
|
|
|
|
Expected output if failed:
|
|
Status: 200
|
|
Keys: ['context', 'project_id', 'tags', 'limit', 'min_relevance_score']
|
|
[FAILED] Still old code
|
|
|
|
|
|
================================================================================
|
|
QUICK REFERENCE COMMANDS
|
|
================================================================================
|
|
|
|
Copy file:
|
|
pscp D:\ClaudeTools\api\routers\conversation_contexts.py guru@172.16.3.30:/tmp/conversation_contexts.py
|
|
|
|
SSH to RMM:
|
|
plink guru@172.16.3.30
|
|
|
|
Deploy on RMM (in SSH session):
|
|
sudo mv /tmp/conversation_contexts.py /opt/claudetools/api/routers/conversation_contexts.py
|
|
sudo chown claudetools:claudetools /opt/claudetools/api/routers/conversation_contexts.py
|
|
grep -c "search_term.*Query" /opt/claudetools/api/routers/conversation_contexts.py
|
|
sudo systemctl restart claudetools-api
|
|
sudo systemctl status claudetools-api --no-pager | head -15
|
|
exit
|
|
|
|
Test (in PowerShell):
|
|
python -c "import requests; r=requests.get('http://172.16.3.30:8001/api/conversation-contexts/recall', headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJpbXBvcnQtc2NyaXB0Iiwic2NvcGVzIjpbImFkbWluIiwiaW1wb3J0Il0sImV4cCI6MTc3MTI3NTEyOX0.-DJF50tq0MaNwVQBdO7cGYNuO5pQuXte-tTj5DpHi2U'}, params={'search_term': 'dataforth', 'limit': 2}); print('SUCCESS!' if 'contexts' in r.json() else 'FAILED - still old format')"
|
|
|
|
|
|
================================================================================
|
|
TROUBLESHOOTING
|
|
================================================================================
|
|
|
|
If test shows "FAILED - still old format":
|
|
1. Check if file was actually copied: ls -lh /tmp/conversation_contexts.py
|
|
2. Check if file was moved: ls -lh /opt/claudetools/api/routers/conversation_contexts.py
|
|
3. Verify new code: grep "search_term" /opt/claudetools/api/routers/conversation_contexts.py
|
|
4. Check service restarted: sudo systemctl status claudetools-api
|
|
5. Try restarting again: sudo systemctl restart claudetools-api
|
|
|
|
If API returns 401 Unauthorized:
|
|
- JWT token may have expired, but should be valid until 2026-02-16
|
|
|
|
If API is unreachable:
|
|
- Check service status: sudo systemctl status claudetools-api
|
|
- Check firewall: sudo ufw status
|
|
- Check API logs: sudo journalctl -u claudetools-api -n 50
|
|
|
|
|
|
================================================================================
|
|
Generated: 2026-01-18
|
|
Local File: D:\ClaudeTools\api\routers\conversation_contexts.py
|
|
Target Server: guru@172.16.3.30
|
|
Target Path: /opt/claudetools/api/routers/conversation_contexts.py
|
|
================================================================================
|