Add KB lifecycle management system with deduplication, consolidation,
archival, and health analytics. Also fix pre-existing routing bug in
upload_document MCP tool (was hitting /import instead of new /documents/content).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Memory Skill:
- Merged remember-this into unified memory skill
- Now uses Claude OS KBs (not separate memory MCP)
- Supports natural language: "remember this:", "save to memory:", etc.
- Deleted redundant remember-this skill
README:
- New tagline: "Give Your AI a Memory"
- Added "The Magic" section showing natural language UX
- Rewrote "What is Claude OS" with before/after comparison
- Added killer line: "Claude is a tool → Claude is a partner"
- Compact features table replacing wall of checkmarks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The ingest_directory function was recursively indexing ALL files including
node_modules, which caused:
- Massive index bloat (thousands of irrelevant library files)
- Polluted search results with third-party code
- Very slow indexing times
Added SKIP_DIRECTORIES set with common directories to exclude:
- Package managers: node_modules, vendor, Pods
- Build outputs: dist, build, target, .next, .nuxt
- VCS: .git, .svn, .hg
- Caches: __pycache__, .pytest_cache, .mypy_cache, .cache
- IDE: .vscode, .idea
- Our own: .claude-os
Also added should_skip_path() helper function with wildcard support
for patterns like *.egg-info.
✨ New Features:
- Beautiful CLI installer (setup-claude-os.sh) with ASCII art,
progress bars, spinners, and styled prompts
- Choose between Local (Ollama) or Cloud (OpenAI) providers
- Lite model (llama3.2:3b) as default - faster download, works on more machines
- Full model (llama3.1:8b) option for users who want better quality
- OpenAI API support for users who prefer cloud
🔧 Changes:
- setup.sh and install.sh now redirect to setup-claude-os.sh
- config.py updated with provider support and new defaults
- Works on both macOS and Linux
📦 Default Model Change:
- Before: llama3.1:latest (8B, 4.7GB download)
- After: llama3.2:3b (3B, 2GB download)
This makes Claude OS accessible to more users with smaller machines
while still offering the full experience for power users.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix bug where networkx import failure caused NameError
- Add stub nx class for type hints when networkx unavailable
- Document comprehensive testing status and dependency issues
- Python 3.14 too new (no tree-sitter-languages wheels)
- Python 3.13 requires build from source (Cython needed)
- Recommend Python 3.11 for immediate testing
Testing results:
✅ Module architecture verified
✅ Mock data test passes
✅ NetworkX integration works
⏸️ Awaiting tree-sitter-languages installation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace PostgreSQL with SQLite for testing and add comprehensive test fixtures.
Update core configuration with missing attributes and getter methods.
Improve regex patterns in conversation watcher for accurate trigger detection.
Add __str__ method to AgentOSContentType enum for better string representation.
Changes:
- Rewrite conftest.py to use SQLite instead of PostgreSQL
- Add CONFIG attributes: EMBEDDING_MODEL, LLM_MODEL, MAX_CONTEXT_LENGTH, etc.
- Add getter methods with environment variable support and validation
- Implement ConfigMeta metaclass to prevent configuration modification
- Fix conversation_watcher trigger patterns with improved lookahead assertions
- Add __str__ method to AgentOSContentType enum
- Update health.py with backwards-compatible function naming
- Add test files: test_config.py, test_agent_os.py, test_conversation_watcher.py, test_health.py
All changes are backwards compatible and verified safe for production.
Test suite now has 92+ passing tests with proper SQLite integration.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Replace generic 'Retrieved N documents' message with actual answer synthesis
from the top 3 documents when LLM synthesis fails. Extracts:
- Document previews (first 300 chars)
- Document filenames from metadata
- Creates readable answer format
This ensures users get useful information even when LLM synthesis encounters errors.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Wrap synthesizer.synthesize() in try-catch to handle AttributeError gracefully
and fall back to returning raw documents when LLM synthesis fails.
This allows the chat feature to work even when there are Pydantic or llama-index
compatibility issues with TextNode attributes.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
The SimilarityPostprocessor tries to access node.score which isn't supported
in the current llama-index version and causes Pydantic validation errors.
Since we're already getting sorted results from vector similarity search,
disable the postprocessor and use retrieved nodes directly.
This fixes chat and search endpoints.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
TextNode doesn't support a direct score attribute in this version of llama-index.
Instead, store the similarity score in the node's metadata during creation and
retrieve it from metadata during response formatting.
This ensures full compatibility with Pydantic validation and prevents attribute errors.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Instead of setting node.score after creation (which fails Pydantic validation),
pass the score parameter during TextNode initialization. This ensures the score
field is properly validated during object creation.
This fixes the error: 'Object has no attribute score' in chat and search endpoints.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
The similarity score was being set as a numpy.float32 from SQLite distance calculations.
Pydantic expects Python native float types for the score field, causing validation errors
when querying MCPs or using chat features.
Fix: Convert similarity score to Python float using float() conversion.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive one-command setup.sh script that handles:
- Prerequisites validation (Python 3, Git)
- Virtual environment creation and dependency installation
- Ollama installation and model download (llama3.1, nomic-embed-text)
- Redis installation and startup
- Directory and database initialization
- Frontend npm dependencies
- Clear progress output and next steps
Fix critical database path issues:
- Use absolute path calculation in config.py to ensure consistency
- Export SQLITE_DB_PATH environment variable in startup scripts
- Prevents database separation between app and MCP server
Fix document metadata field naming:
- Change metadata field from 'source' to 'filename' in MCP ingest
- Ensures consistency with existing document format
- Fixes document visibility issue in API endpoints
Update startup scripts to support environment-based database configuration.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Features:
- Fixed Ollama configuration for native (localhost) instead of Docker
- Increased LLM timeout from 30s to 120s for quality answers
- Implemented KB slug system for clean MCP endpoint URLs
- Added multiple knowledge base support with type metadata
- Integrated MCP server with FastAPI (port 8051)
- React frontend with KB management UI
- PostgreSQL + pgvector for vector embeddings
Performance:
- 33-56% faster than Docker setup with native Ollama
- Direct Metal GPU acceleration on Apple Silicon
- Optimized RAG engine with caching
- ~40s response time for comprehensive answers
Documentation:
- Complete native setup guide (README_NATIVE_SETUP.md)
- Performance benchmarking and comparison
- MCP endpoint documentation
- Slug implementation details
- Decision rationale for native vs Docker
Cleanup:
- Removed old Streamlit setup files
- Consolidated setup scripts to single setup_native.sh
- Consolidated service management scripts
- Removed test artifacts and old analysis docs
- Ready for sharing with team
🚀 Production-ready for local team deployment
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>