- Fix DriveMonitor skipping .bas files that exist but have indexed=false
and same ETag (needs_reindex was computed but not used for bas sync)
- Mark bas files as indexed after successful sync to work dir
- Update INFRA.md: MinIO connection setup (port 9100, creds from drive.service)
- Remove erroneously created bottemplates start.bas (bots live in MinIO)
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
- 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