Commit History
-
Update model support:
- add meta-llama provider - add support for llama models - add support for HF inference providersc2a725e
-
feat: upgrade to GPT-5 series, increase default max_tokens to 8192
- OpenAI models: gpt-5 and gpt-5-mini only (removed GPT-4 series) - Default max_tokens raised from 2048 to 8192 across all providers - Added o4-mini to reasoning model detection - Updated setup wizard fallback lists and defaults Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>68a6539 -
fix: Round 14 — 28 Tier 1 + Tier 2 bugs fixed across 17 source files
Anti-hallucination integrity (T1): - #100: Detect verification LLM system failure (all calls fail → refuse) - #101: Fix validate_citations SQL/web source matching (dead code → working) - #102: Citation count uses chunks (citable units) not unique files - #103: Clamp max_iterations to min 1 (can't bypass via iterations=0) Pre-release quality (T2 HIGH): - #104: Add LIKE ESCAPE in all SQL fallback paths - #105: Gemini safety block returns "" (was bypassing stack) - #106: Cap reasoning model budget at 128000 - #107: Handle non-numeric temperature/max_tokens gracefully - #108: Fix clarification history duplication Pre-release quality (T2 MEDIUM): - #109: Anthropic temperature clamp to 1.0 - #110: SQL query 10-second timeout via progress handler - #111: Rich markup escape for user/LLM content - #112: All 6 readers wrapped in try/except (corrupt files don't abort) - #113: Collection cache invalidation after re-ingestion - #114: Web UI message history capped at 200 - #115: Setup wizard confi…f95cdb7 -
fix: pre-release audit round 12 — 33 bugs fixed across all tiers
Tier 1 (ship-blockers): - README/verifier layer count corrected to 7-layer/10-point - SQL keyword regex now strips quoted strings before checking - validate_citations counts unique sources, extracts from body only - Provider-specific error messages for all 3 LLM backends - Missing config error handling in ingest.py entry point Tier 2 (quality): - SQL injection: alphanumeric validation on interpolated values - LIKE wildcard escaping with ESCAPE clause - Fallback builds fresh keyword query instead of re-running failed SQL - NaN/NaT/inf filtering across all tabular readers - Merged docx table cells deduplicated via element identity - .env double-escaping fix in setup wizard - Verification LLM exceptions skip correction instead of triggering it - References check handles SQL and web sources - Dead pre-loop validate_citations removed - KB meta extension detection uses Path.suffix - QU prompt omits SQL fields when no schema available - Redundant collection.count() eliminated - Row padding f…fbd18c8
-
fix: 6-agent debug audit — 8 bugs fixed across codebase
Multi-agent systematic audit found and fixed: HIGH: - Empty model="" overrode provider defaults, causing API errors when no model configured (llm/__init__.py + all 3 providers) - Vector-to-SQL fallback was dead code — QU layer now preserves sql_query regardless of route, and prompt asks LLM to generate fallback sql_query - SQL validation strengthened with keyword blocklist (INSERT, DELETE, DROP, ALTER, CREATE, ATTACH, DETACH, PRAGMA, LOAD_EXTENSION) — first layer of two-layer SQL injection defense MEDIUM: - Verification prompt no longer leaks internal chunk ID naming (CHUNK-LOCAL, CHUNK-SQL) into correction loop — uses user-facing language instead - config_loader now gives friendly FileNotFoundError directing user to run setup.py, instead of raw traceback - config.yaml opened with explicit encoding="utf-8" for cross-platform safety - OpenAI model filter narrowed from startswith("o") to startswith("o1","o3","o4") 153 tests pass (152 existing + 1 new SQL validation test). …106354e
-
fix: harden codebase against format injection, empty responses, and unsafe config access
- Add _escape_braces() to all prompt builders to prevent str.format() crash when user documents contain {placeholder} patterns - Fix app_web.py display_query fallback to preserve clarification context - Add empty-response guards to all 3 LLM providers (openai, anthropic, gemini) - Replace all remaining direct dict access with .get() + defaults - Add 2 regression tests for curly-brace format injection - Expand query engine tests with display_query coverage - 62 tests pass across 13 test files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9815e49 -
fix: use .get() for all config access + add CLAUDE.md and docs to repo
- src/ingest.py: replace cfg["paths"]["vector_db"] and cfg["paths"]["knowledge_base"] with .get() + defaults - src/llm/__init__.py: replace cfg["llm"]["provider"] and cfg["llm"].get(...) with safe llm_cfg = cfg.get("llm", {}) - src/search/__init__.py: replace r['authors'], r['title'], etc. with .get() + defaults in web results formatter - app_web.py: respect max_clarifications config (was hardcoded to allow 1 round regardless of config) - tests/test_setup.py: add missing assertions for retrieval.top_k and retrieval.max_distance - Add CLAUDE.md, docs/plans/, docs/WORKLOG.md to the repository Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>83087ed -
Initial commit: RAG Research Chatbot Template
Citation-verified research assistant with 6-layer anti-hallucination stack, 15 file format readers, 3 LLM providers, and dual CLI/Web interfaces. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0017280