nexcore_notebooklm/lib.rs
1//! # nexcore-notebooklm
2//!
3//! NotebookLM integration for NexVigilant — replaces the npm `notebooklm-mcp` server
4//! with a native Rust implementation wired into the nexcore MCP dispatcher.
5//!
6//! ## Architecture
7//!
8//! - **Library** (`library.rs`): Notebook metadata CRUD, JSON-persisted
9//! - **Sessions** (`session.rs`): Chat session lifecycle management
10//! - **Persistence** (`persistence.rs`): Atomic JSON read/write
11//! - **Browser** (`browser.rs`): Chrome lifecycle (Phase 2)
12//! - **Auth** (`auth.rs`): Google authentication flow (Phase 2)
13//! - **Notebook** (`notebook.rs`): DOM query interaction (Phase 3)
14//! - **Stealth** (`stealth.rs`): CDP anti-detection (Phase 2)
15//! - **Selectors** (`selectors.rs`): DOM selector constants
16//!
17//! ## MCP Tools (16)
18//!
19//! Phase 1 (sync): `nlm_add_notebook`, `nlm_list_notebooks`, `nlm_get_notebook`,
20//! `nlm_select_notebook`, `nlm_update_notebook`, `nlm_remove_notebook`,
21//! `nlm_search_notebooks`, `nlm_get_library_stats`, `nlm_list_sessions`,
22//! `nlm_close_session`, `nlm_reset_session`
23//!
24//! Phase 2 (async): `nlm_setup_auth`, `nlm_re_auth`, `nlm_get_health`
25//!
26//! Phase 3 (async): `nlm_ask_question`, `nlm_cleanup_data`
27//!
28//! Grounding: μ(Mapping) + π(Persistence) — maps questions to notebook knowledge,
29//! persists library and session state.
30
31#![deny(clippy::unwrap_used)]
32#![deny(clippy::expect_used)]
33#![deny(clippy::panic)]
34#![warn(missing_docs)]
35pub mod auth;
36pub mod browser;
37pub mod error;
38pub mod library;
39pub mod notebook;
40pub mod persistence;
41pub mod selectors;
42pub mod session;
43pub mod stealth;
44pub mod types;
45
46// Re-export primary types
47pub use auth::AuthResult;
48pub use error::NotebookLmError;
49pub use library::Library;
50pub use notebook::QueryResult;
51pub use session::SessionStore;
52pub use types::{AuthState, HealthStatus, LibraryStats, Notebook, Session};