webclaw/crates/noxa-rag
Jacob Magar 9cde0d66ca feat(noxa-68r.7): filesystem watcher pipeline
- Pipeline::new() + run() with CancellationToken shutdown
- notify-debouncer-mini via std::sync::mpsc::Sender + spawn_blocking bridge
  (0.4.x uses callback API, not receiver() — std::Sender implements DebounceEventHandler)
- Watch ALL event kinds, filter by .json extension + path.exists() (catches vim/emacs renames)
- Bounded mpsc channel(256) + embed_concurrency workers via Arc<Mutex<Receiver>>
- Per-URL keyed mutex via DashMap prevents concurrent delete+upsert races
- TOCTOU-safe file read: single open(), metadata() from same FD
- 50MB file size guard before read_to_string
- JSON parse failure -> append_failed_job NDJSON log + Ok(())
- URL scheme validation: http/https only, RFC-1918 blocking
- UUID v5 deterministic point IDs (config.uuid_namespace)
- tracing::Span carried in IndexJob (tokio::spawn drops span)
2026-04-12 07:21:37 -04:00
..
src feat(noxa-68r.7): filesystem watcher pipeline 2026-04-12 07:21:37 -04:00
Cargo.toml feat(noxa-68r.1): crate scaffold, traits, and core types 2026-04-12 07:13:19 -04:00