- Previous logic strictly limited results to 1 chunk per document
- This caused large documents (like ramais PDFs) to lose 90% of their
content since only the single highest-scoring chunk was kept
- Now we allow up to 10 chunks per document, while still sorting
by relevance and letting filter_by_tokens cap the overall size
The ADD_SUGGESTION_TOOL, ADD_SUGGESTION_TEXT, ADD_SUGGESTION, and
ADD_SWITCHER Rhai custom syntaxes expect lowercase 'as' but the
preprocessor was outputting uppercase 'AS'. This caused start.bas
to fail with 'Syntax error: Expecting as for ADD_SUGGESTION_TOOL',
which prevented KB context (USE KB) from being registered for the
session — so queries like 'ramal da Andressa' had no KB data.
Also fix: re-export CHECK_INTERVAL_SECS from drive_monitor module
to fix pre-existing private module access error.
- CHECK_INTERVAL_SECS: constante compartilhada (1 segundo)
- Protecao contra reentrancia usando is_processing
- Logging de tempo de scan para debugging
- DriveCompiler agora usa mesma constante
- Ideal para PDFs longos e .bas grandes
Two fixes for KB indexing failures with Cloudflare Workers AI:
1. check_health() now short-circuits for HTTPS URLs (remote APIs like
Cloudflare don't have /health endpoints and return 401/301/403 on
probes, which were incorrectly treated as 'unreachable')
2. index_single_file_with_id() now calls wait_for_server(30) instead
of immediately failing, giving the embedding server time to become
ready
Root cause: EMBEDDING_SERVER_READY is a global flag. When the default
bot's local embedding server check fails, it blocks ALL bots including
those using remote HTTPS APIs that don't need a local health check.
Remote APIs like Cloudflare Workers AI return 401 on /health and
301 on HEAD requests. These indicate the server IS reachable,
not down. Previously only 404/405 were treated as reachable,
causing all KB indexing to fail with 'Embedding server not available'.
- Add shutdown tracing and 15s forced exit to prevent SIGTERM hangs
- Fix E0583: remove self-referential mod declarations in bottest integration files
- Fix E0599: correct .status() call on Result in performance.rs
- Fix botui CI deploy: use systemctl stop/start instead of pkill+nohup
- Update PROD.md with DB-driven CI log retrieval method
- drop(stream_tx) after spawning LLM task so stream_rx.recv() loop ends
when LLM finishes. Without this, the streaming loop hung forever and
is_complete:true + suggestions were never sent to WebSocket clients.
- Add single-arg ADD_SUGGESTION "text" syntax (registered LAST for
highest Rhai priority so it matches before 2-arg form).
- convert_keywords_to_lowercase() now only lowercases Rhai built-in
keywords (IF, ELSE, WHILE, etc.), not custom syntax keywords (TALK,
HEAR, ADD_SUGGESTION) which are case-sensitive in Rhai.
- sync_bas_to_work() downloads changed .bas files from S3 to work dir
when etag changes, preventing stale local copies used by compiler.
- Only upsert drive_files when ETag actually changed (was re-processing all files every 60s cycle)
- Skip S3 directory entries (keys ending with '/') to avoid storing stale directory markers
- Add debug-level logging for unchanged file skips
- Fixes noisy 'Added/updated drive_files' spam on every scan cycle
- Replace docs/sheet/slides with kb-extraction in default features (~4-6min compile time savings, ~300MB less disk)
- Add kb-extraction feature using zip+quick-xml+calamine for lightweight KB extraction
- Split document_processor.rs (829 lines) into mod.rs+types.rs+ooxml_extract.rs+rtf.rs
- Move DOCX/PPTX ZIP-based extraction to document_processor::ooxml_extract (no ooxmlsdk needed)
- Remove dead code: save_docx_preserving(), save_pptx_preserving() (zero callers)
- Fix dep: prefix for optional dependencies in feature definitions
- DriveMonitor: full S3 sync, ETag change detection, KB incremental indexing, config.csv sync
- ConfigManager: real DB reads from bot_configuration table
- 0 warnings, 0 errors on both default and full feature builds
- Fixed hardcoded port 9000 to 8300 (Zitadel default)
- Added base_url default with fallback to Vault URL
- Allows external Zitadel server configuration via Vault
- facade.rs: Updated help message with correct port