From 9e4020db6e06705b5af90760ffbbb9742da83865 Mon Sep 17 00:00:00 2001 From: "heesk0223@gmail.com" Date: Fri, 19 Jun 2026 21:35:25 +0900 Subject: [PATCH 1/2] refactor(core): introduce FrilVault facade and reduce public surface --- Cargo.lock | 171 ---------- Cargo.toml | 1 - apps/frilvault-cli/src/command/add.rs | 12 +- apps/frilvault-cli/src/command/delete.rs | 3 +- apps/frilvault-cli/src/command/doctor.rs | 3 +- apps/frilvault-cli/src/command/list.rs | 2 +- apps/frilvault-cli/src/command/repair.rs | 3 +- apps/frilvault-cli/src/command/search.rs | 2 +- apps/frilvault-cli/src/command/stats.rs | 3 +- apps/frilvault-cli/src/command/update.rs | 3 +- apps/frilvault-cli/src/main.rs | 1 - apps/frilvault-cli/src/output.rs | 2 +- .../frilvault-core/src/app/frilvault.rs | 15 +- crates/frilvault-core/src/app/mod.rs | 3 + crates/frilvault-core/src/constants.rs | 2 +- crates/frilvault-core/src/lib.rs | 13 +- .../add_note_request.rs} | 2 +- crates/frilvault-core/src/note/dto/mod.rs | 4 + crates/frilvault-core/src/note/entity/mod.rs | 2 - crates/frilvault-core/src/note/entity/note.rs | 4 +- .../frilvault-core/src/note/note_service.rs | 9 +- .../src/tests/note_entity_test.rs | 6 +- .../src/tests/note_service_test.rs | 37 +- .../src/tests/repair_engin_test.rs | 7 +- .../src/tests/vault_context_test.rs | 7 +- .../tests/workspace_index_repository_test.rs | 22 +- .../src/tests/yaml_repository_test.rs | 8 +- crates/frilvault-node/Cargo.toml | 16 - crates/frilvault-node/src/lib.rs | 318 ------------------ 29 files changed, 93 insertions(+), 588 deletions(-) rename apps/frilvault-cli/src/app.rs => crates/frilvault-core/src/app/frilvault.rs (76%) create mode 100644 crates/frilvault-core/src/app/mod.rs rename crates/frilvault-core/src/note/{entity/add_note_input.rs => dto/add_note_request.rs} (93%) delete mode 100644 crates/frilvault-node/Cargo.toml delete mode 100644 crates/frilvault-node/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 6d35bb4..e675fd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,27 +161,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" -[[package]] -name = "convert_case" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "affbf0190ed2caf063e3def54ff444b449371d55c58e513a95ab98eca50adb49" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" -[[package]] -name = "ctor" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01334b89b69ff726750c5ce5073fc8bd860e99aa9a8fc5ca11b04730e3aee97a" - [[package]] name = "equivalent" version = "1.0.2" @@ -222,84 +207,12 @@ dependencies = [ "uuid", ] -[[package]] -name = "frilvault-node" -version = "0.1.0" -dependencies = [ - "chrono", - "frilvault-core", - "napi", - "napi-derive", - "serde", - "serde_json", - "uuid", -] - -[[package]] -name = "futures" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" -dependencies = [ - "futures-core", - "futures-sink", -] - [[package]] name = "futures-core" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" -[[package]] -name = "futures-executor" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-macro" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - [[package]] name = "futures-task" version = "0.3.32" @@ -312,13 +225,8 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ - "futures-channel", "futures-core", - "futures-io", - "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "slab", ] @@ -435,16 +343,6 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" -[[package]] -name = "libloading" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" -dependencies = [ - "cfg-if", - "windows-link", -] - [[package]] name = "log" version = "0.4.31" @@ -457,69 +355,6 @@ version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" -[[package]] -name = "napi" -version = "3.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d395473824516f38dd1071a1a37bc57daa7be65b293ebba4ead5f7abb017a2" -dependencies = [ - "bitflags", - "ctor", - "futures", - "napi-build", - "napi-sys", - "nohash-hasher", - "rustc-hash", -] - -[[package]] -name = "napi-build" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9c366d2c8c60b86fa632df75f745509b52f9128f91a6bad4c796e44abb505e1" - -[[package]] -name = "napi-derive" -version = "3.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b3f766e04667e6da0e181e2da4f85475d5a6513b7cf6a80bea184e224a5b42" -dependencies = [ - "convert_case", - "ctor", - "napi-derive-backend", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "napi-derive-backend" -version = "5.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d5af30503edf933ce7377cf6d4c877a62b0f1107ea05585f1b5e430e88d5baf" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "semver", - "syn", -] - -[[package]] -name = "napi-sys" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb602b84d7c1edae45e50bbf1374696548f36ae179dfa667f577e384bb90c2b" -dependencies = [ - "libloading", -] - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - [[package]] name = "noyalib" version = "0.0.5" @@ -726,12 +561,6 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" -[[package]] -name = "unicode-segmentation" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" - [[package]] name = "unicode-xid" version = "0.2.6" diff --git a/Cargo.toml b/Cargo.toml index 31855df..da2d1fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,5 @@ resolver = "2" members = [ "apps/frilvault-cli", - "crates/frilvault-node", "crates/frilvault-core", ] diff --git a/apps/frilvault-cli/src/command/add.rs b/apps/frilvault-cli/src/command/add.rs index 09dde92..afc2291 100644 --- a/apps/frilvault-cli/src/command/add.rs +++ b/apps/frilvault-cli/src/command/add.rs @@ -1,18 +1,16 @@ use anyhow::{Result, bail}; - -use frilvault_core::{AddNoteInput, LineAnchor, NoteAnchor, SymbolAnchor, SymbolKind}; - -use crate::{ - app::create_note_service, - cli::add::{AddCommand, SymbolKindArg}, +use frilvault_core::{ + AddNoteRequest, LineAnchor, NoteAnchor, SymbolAnchor, SymbolKind, create_note_service, }; +use crate::cli::add::{AddCommand, SymbolKindArg}; + pub fn execute(command: AddCommand) -> Result<()> { let mut service = create_note_service()?; let anchor = create_anchor(&command)?; - service.add_note(AddNoteInput { + service.add_note(AddNoteRequest { source_file: command.file.into(), anchor, content: command.content, diff --git a/apps/frilvault-cli/src/command/delete.rs b/apps/frilvault-cli/src/command/delete.rs index fcdaa58..dd220a7 100644 --- a/apps/frilvault-cli/src/command/delete.rs +++ b/apps/frilvault-cli/src/command/delete.rs @@ -1,7 +1,8 @@ use anyhow::Result; +use frilvault_core::create_note_service; use uuid::Uuid; -use crate::{app::create_note_service, cli::delete::DeleteCommand}; +use crate::cli::delete::DeleteCommand; pub fn execute(command: DeleteCommand) -> Result<()> { let mut service = create_note_service()?; diff --git a/apps/frilvault-cli/src/command/doctor.rs b/apps/frilvault-cli/src/command/doctor.rs index 0a6766a..046d8ce 100644 --- a/apps/frilvault-cli/src/command/doctor.rs +++ b/apps/frilvault-cli/src/command/doctor.rs @@ -1,6 +1,5 @@ use anyhow::Result; - -use crate::app::create_workspace_service; +use frilvault_core::create_workspace_service; pub fn execute() -> Result<()> { let mut service = create_workspace_service()?; diff --git a/apps/frilvault-cli/src/command/list.rs b/apps/frilvault-cli/src/command/list.rs index 8dbc0c6..4621d81 100644 --- a/apps/frilvault-cli/src/command/list.rs +++ b/apps/frilvault-cli/src/command/list.rs @@ -1,7 +1,7 @@ use anyhow::Result; +use frilvault_core::create_note_service; use crate::{ - app::create_note_service, cli::list::{ListCommand, ListFormatArg}, output::{OutputFormat, print_notes}, }; diff --git a/apps/frilvault-cli/src/command/repair.rs b/apps/frilvault-cli/src/command/repair.rs index 51f04e2..895b93c 100644 --- a/apps/frilvault-cli/src/command/repair.rs +++ b/apps/frilvault-cli/src/command/repair.rs @@ -1,6 +1,7 @@ use anyhow::Result; +use frilvault_core::create_workspace_service; -use crate::{app::create_workspace_service, cli::repair::RepairCommand}; +use crate::cli::repair::RepairCommand; pub fn execute(command: RepairCommand) -> Result<()> { let mut service = create_workspace_service()?; diff --git a/apps/frilvault-cli/src/command/search.rs b/apps/frilvault-cli/src/command/search.rs index c7b9553..c6d942f 100644 --- a/apps/frilvault-cli/src/command/search.rs +++ b/apps/frilvault-cli/src/command/search.rs @@ -1,7 +1,7 @@ use anyhow::Result; +use frilvault_core::create_note_service; use crate::{ - app::create_note_service, cli::search::{SearchCommand, SearchFormatArg}, output::{OutputFormat, print_notes}, }; diff --git a/apps/frilvault-cli/src/command/stats.rs b/apps/frilvault-cli/src/command/stats.rs index b96b498..6f98017 100644 --- a/apps/frilvault-cli/src/command/stats.rs +++ b/apps/frilvault-cli/src/command/stats.rs @@ -1,6 +1,5 @@ use anyhow::Result; - -use crate::app::create_workspace_service; +use frilvault_core::create_workspace_service; pub fn execute() -> Result<()> { let mut service = create_workspace_service()?; diff --git a/apps/frilvault-cli/src/command/update.rs b/apps/frilvault-cli/src/command/update.rs index 04f5691..38ee194 100644 --- a/apps/frilvault-cli/src/command/update.rs +++ b/apps/frilvault-cli/src/command/update.rs @@ -1,7 +1,8 @@ use anyhow::Result; +use frilvault_core::create_note_service; use uuid::Uuid; -use crate::{app::create_note_service, cli::update::UpdateCommand}; +use crate::cli::update::UpdateCommand; pub fn execute(command: UpdateCommand) -> Result<()> { let mut service = create_note_service()?; diff --git a/apps/frilvault-cli/src/main.rs b/apps/frilvault-cli/src/main.rs index 197f3f8..be86e75 100644 --- a/apps/frilvault-cli/src/main.rs +++ b/apps/frilvault-cli/src/main.rs @@ -1,4 +1,3 @@ -mod app; mod cli; mod command; mod output; diff --git a/apps/frilvault-cli/src/output.rs b/apps/frilvault-cli/src/output.rs index e1ff118..14e0b2e 100644 --- a/apps/frilvault-cli/src/output.rs +++ b/apps/frilvault-cli/src/output.rs @@ -1,5 +1,5 @@ use anyhow::Result; -use frilvault_core::{NoteAnchor, note_view::NoteView}; +use frilvault_core::{NoteAnchor, NoteView}; #[derive(Debug, Clone, Copy)] pub enum OutputFormat { diff --git a/apps/frilvault-cli/src/app.rs b/crates/frilvault-core/src/app/frilvault.rs similarity index 76% rename from apps/frilvault-cli/src/app.rs rename to crates/frilvault-core/src/app/frilvault.rs index 2b63f67..e7ade31 100644 --- a/apps/frilvault-cli/src/app.rs +++ b/crates/frilvault-core/src/app/frilvault.rs @@ -1,11 +1,12 @@ -use anyhow::Result; - -use frilvault_core::{ - NoteService, PathResolver, VaultContext, WorkspaceIndexRepository, WorkspaceRepository, - WorkspaceService, YamlNoteRepository, +use crate::{ + FrilVaultResult, + note::NoteService, + runtime::VaultContext, + storage::YamlNoteRepository, + workspace::{PathResolver, WorkspaceIndexRepository, WorkspaceRepository, WorkspaceService}, }; -pub fn create_note_service() -> Result { +pub fn create_note_service() -> FrilVaultResult { let workspace_root = std::env::current_dir()?; let resolver = PathResolver::new(workspace_root); @@ -22,7 +23,7 @@ pub fn create_note_service() -> Result { Ok(NoteService::new(vault_context)) } -pub fn create_workspace_service() -> anyhow::Result { +pub fn create_workspace_service() -> FrilVaultResult { let workspace_root = std::env::current_dir()?; let resolver = PathResolver::new(workspace_root); diff --git a/crates/frilvault-core/src/app/mod.rs b/crates/frilvault-core/src/app/mod.rs new file mode 100644 index 0000000..477af08 --- /dev/null +++ b/crates/frilvault-core/src/app/mod.rs @@ -0,0 +1,3 @@ +pub mod frilvault; + +pub use frilvault::*; diff --git a/crates/frilvault-core/src/constants.rs b/crates/frilvault-core/src/constants.rs index 17bbfa3..3c758b8 100644 --- a/crates/frilvault-core/src/constants.rs +++ b/crates/frilvault-core/src/constants.rs @@ -1,6 +1,6 @@ pub const VAULT_DIR_NAME: &str = ".vault"; pub const NOTE_FILE_EXTENSION: &str = "yml"; -pub const SCHEMA_VERSION: u32 = 1; +// pub const SCHEMA_VERSION: u32 = 1; pub const NOTES_DIR_NAME: &str = "notes"; pub const CACHE_DIR_NAME: &str = "cache"; pub const INDEX_DIR_NAME: &str = "index"; diff --git a/crates/frilvault-core/src/lib.rs b/crates/frilvault-core/src/lib.rs index ac0fe92..ae930f2 100644 --- a/crates/frilvault-core/src/lib.rs +++ b/crates/frilvault-core/src/lib.rs @@ -1,11 +1,14 @@ -pub mod constants; +pub mod app; pub mod error; + +mod constants; pub mod note; -pub mod parser; -pub mod runtime; -pub mod storage; -pub mod workspace; +mod parser; +mod runtime; +mod storage; +mod workspace; +pub use app::*; pub use error::*; pub use note::*; pub use parser::*; diff --git a/crates/frilvault-core/src/note/entity/add_note_input.rs b/crates/frilvault-core/src/note/dto/add_note_request.rs similarity index 93% rename from crates/frilvault-core/src/note/entity/add_note_input.rs rename to crates/frilvault-core/src/note/dto/add_note_request.rs index f118b71..0b5e727 100644 --- a/crates/frilvault-core/src/note/entity/add_note_input.rs +++ b/crates/frilvault-core/src/note/dto/add_note_request.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use crate::note::NoteAnchor; #[derive(Debug, Clone)] -pub struct AddNoteInput { +pub struct AddNoteRequest { /// source_file: the path to the source file where the note is located. pub source_file: PathBuf, diff --git a/crates/frilvault-core/src/note/dto/mod.rs b/crates/frilvault-core/src/note/dto/mod.rs index efa3612..dbb1387 100644 --- a/crates/frilvault-core/src/note/dto/mod.rs +++ b/crates/frilvault-core/src/note/dto/mod.rs @@ -1 +1,5 @@ +pub mod add_note_request; pub mod note_view; + +pub use add_note_request::*; +pub use note_view::*; diff --git a/crates/frilvault-core/src/note/entity/mod.rs b/crates/frilvault-core/src/note/entity/mod.rs index f927af5..ece89bc 100644 --- a/crates/frilvault-core/src/note/entity/mod.rs +++ b/crates/frilvault-core/src/note/entity/mod.rs @@ -1,4 +1,3 @@ -mod add_note_input; mod line_anchor; mod note; mod note_anchor; @@ -6,7 +5,6 @@ mod note_file; mod symbol_anchor; mod symbol_kind; -pub use add_note_input::*; pub use line_anchor::*; pub use note::*; pub use note_anchor::*; diff --git a/crates/frilvault-core/src/note/entity/note.rs b/crates/frilvault-core/src/note/entity/note.rs index e08cf7b..e3bce4f 100644 --- a/crates/frilvault-core/src/note/entity/note.rs +++ b/crates/frilvault-core/src/note/entity/note.rs @@ -2,7 +2,7 @@ use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; -use crate::note::{AddNoteInput, NoteAnchor}; +use crate::{add_note_request::AddNoteRequest, note::NoteAnchor}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] pub struct Note { @@ -23,7 +23,7 @@ pub struct Note { } impl Note { - pub fn new(input: AddNoteInput) -> Self { + pub fn new(input: AddNoteRequest) -> Self { let now = Utc::now(); Self { diff --git a/crates/frilvault-core/src/note/note_service.rs b/crates/frilvault-core/src/note/note_service.rs index f8fc60b..f53edf4 100644 --- a/crates/frilvault-core/src/note/note_service.rs +++ b/crates/frilvault-core/src/note/note_service.rs @@ -13,9 +13,8 @@ use chrono::Utc; use uuid::Uuid; use crate::{ - FrilVaultError, FrilVaultResult, NoteAnchor, VaultContext, - note::{AddNoteInput, Note}, - note_view::NoteView, + FrilVaultError, FrilVaultResult, NoteAnchor, VaultContext, add_note_request::AddNoteRequest, + note::Note, note_view::NoteView, }; /// Application service responsible for note operations. @@ -23,7 +22,7 @@ use crate::{ /// Coordinates repositories, caching, /// and future runtime behaviors. pub struct NoteService { - pub vault_context: VaultContext, + vault_context: VaultContext, } impl NoteService { @@ -51,7 +50,7 @@ impl NoteService { Ok(()) } - pub fn add_note(&mut self, input: AddNoteInput) -> FrilVaultResult { + pub fn add_note(&mut self, input: AddNoteRequest) -> FrilVaultResult { let source_file = input.source_file.clone(); let note = Note::new(input); diff --git a/crates/frilvault-core/src/tests/note_entity_test.rs b/crates/frilvault-core/src/tests/note_entity_test.rs index a666a1a..4886936 100644 --- a/crates/frilvault-core/src/tests/note_entity_test.rs +++ b/crates/frilvault-core/src/tests/note_entity_test.rs @@ -1,11 +1,11 @@ use crate::{ - AddNoteInput, + add_note_request::AddNoteRequest, note::{LineAnchor, Note, NoteAnchor}, }; #[test] fn create_note_from_input() { - let input = AddNoteInput { + let input = AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 10, @@ -29,7 +29,7 @@ fn create_note_from_input() { #[test] fn create_note_generates_uuid() { - let input = AddNoteInput { + let input = AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), content: "uuid test".to_string(), diff --git a/crates/frilvault-core/src/tests/note_service_test.rs b/crates/frilvault-core/src/tests/note_service_test.rs index baa7f1c..4961249 100644 --- a/crates/frilvault-core/src/tests/note_service_test.rs +++ b/crates/frilvault-core/src/tests/note_service_test.rs @@ -1,6 +1,7 @@ use super::helper::create_test_note_service; use crate::{ - AddNoteInput, LineAnchor, NoteAnchor, SymbolAnchor, SymbolKind, constants::NOTE_FILE_EXTENSION, + LineAnchor, NoteAnchor, SymbolAnchor, SymbolKind, add_note_request::AddNoteRequest, + constants::NOTE_FILE_EXTENSION, }; use std::fs; @@ -14,7 +15,7 @@ fn add_line_type_note_creates_yaml_file() { let mut service = create_test_note_service(&workspace_root); - let input = AddNoteInput { + let input = AddNoteRequest { source_file: "src/main.rs".into(), anchor: crate::note::NoteAnchor::Line(crate::note::LineAnchor { line: 10, @@ -48,13 +49,13 @@ fn add_symbol_type_note_creates_yaml_file() { let mut service = create_test_note_service(&workspace_root); - let input = AddNoteInput { + let input = AddNoteRequest { source_file: "src/main.rs".into(), anchor: crate::note::NoteAnchor::Symbol(crate::note::SymbolAnchor { name: "NoteService::add_note".to_string(), kind: SymbolKind::Method, signature: Some( - "fn add_note(&self, input: AddNoteInput) -> FrilVaultResult".to_owned(), + "fn add_note(&self, input: AddNoteRequest) -> FrilVaultResult".to_owned(), ), line_hint: Some(34), }), @@ -79,7 +80,7 @@ fn add_symbol_type_note_creates_yaml_file() { assert_eq!(anchor.kind, SymbolKind::Method); assert_eq!( anchor.signature.as_deref(), - Some("fn add_note(&self, input: AddNoteInput) -> FrilVaultResult") + Some("fn add_note(&self, input: AddNoteRequest) -> FrilVaultResult") ); assert_eq!(anchor.line_hint, Some(34)); } @@ -99,7 +100,7 @@ fn load_notes_from_existing_yaml() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/lib.rs".into(), anchor: crate::note::NoteAnchor::Line(crate::note::LineAnchor { line: 1, column: 1 }), content: "lib 진입점".to_string(), @@ -124,7 +125,7 @@ fn add_note_and_load_note() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: crate::note::NoteAnchor::Line(crate::note::LineAnchor { line: 10, @@ -161,7 +162,7 @@ fn delete_note_removes_note() { let mut service = create_test_note_service(&workspace_root); let note = service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: crate::note::NoteAnchor::Line(crate::note::LineAnchor { line: 10, @@ -190,7 +191,7 @@ fn update_note_changes_content() { let mut service = create_test_note_service(&workspace_root); let note = service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: crate::note::NoteAnchor::Line(crate::note::LineAnchor { line: 10, @@ -223,7 +224,7 @@ fn search_notes_finds_matching_notes() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { @@ -236,7 +237,7 @@ fn search_notes_finds_matching_notes() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/lib.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 3, column: 1 }), @@ -246,7 +247,7 @@ fn search_notes_finds_matching_notes() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/mod.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), @@ -283,7 +284,7 @@ fn search_finds_symbol_anchor() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/service.rs".into(), anchor: NoteAnchor::Symbol(SymbolAnchor { @@ -317,7 +318,7 @@ fn search_by_symbol_returns_matching_notes() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Symbol(SymbolAnchor { @@ -353,7 +354,7 @@ fn search_by_symbol_returns_empty_when_not_found() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Symbol(SymbolAnchor { @@ -387,7 +388,7 @@ fn list_symbol_notes_returns_only_symbol_notes() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), content: "line".to_string(), @@ -395,7 +396,7 @@ fn list_symbol_notes_returns_only_symbol_notes() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Symbol(SymbolAnchor { name: "main".to_string(), @@ -431,7 +432,7 @@ fn find_symbol_note_returns_matching_symbol() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Symbol(SymbolAnchor { name: "Parser".to_string(), diff --git a/crates/frilvault-core/src/tests/repair_engin_test.rs b/crates/frilvault-core/src/tests/repair_engin_test.rs index e804c37..27f8738 100644 --- a/crates/frilvault-core/src/tests/repair_engin_test.rs +++ b/crates/frilvault-core/src/tests/repair_engin_test.rs @@ -2,8 +2,9 @@ use std::{fs, path::Path}; use uuid::Uuid; use crate::{ - AddNoteInput, FileMove, LineAnchor, NoteAnchor, NoteService, PathResolver, VaultContext, - WorkspaceIndexRepository, YamlNoteRepository, repair_engine::RepairEngine, + FileMove, LineAnchor, NoteAnchor, NoteService, PathResolver, VaultContext, + WorkspaceIndexRepository, YamlNoteRepository, add_note_request::AddNoteRequest, + repair_engine::RepairEngine, }; #[test] @@ -24,7 +25,7 @@ fn repair_engine_moves_note_files() { // 1. create note for original file service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), content: "test note".to_string(), diff --git a/crates/frilvault-core/src/tests/vault_context_test.rs b/crates/frilvault-core/src/tests/vault_context_test.rs index 70098ea..af2513e 100644 --- a/crates/frilvault-core/src/tests/vault_context_test.rs +++ b/crates/frilvault-core/src/tests/vault_context_test.rs @@ -1,6 +1,9 @@ use std::{fs, path::Path}; -use crate::{AddNoteInput, LineAnchor, Note, NoteAnchor, tests::helper::create_test_vault_context}; +use crate::{ + LineAnchor, Note, NoteAnchor, add_note_request::AddNoteRequest, + tests::helper::create_test_vault_context, +}; #[test] fn load_notes_populates_cache() { @@ -15,7 +18,7 @@ fn load_notes_populates_cache() { .note_repository .append_note( Path::new("src/main.rs"), - &Note::new(AddNoteInput { + &Note::new(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), content: "test".to_string(), diff --git a/crates/frilvault-core/src/tests/workspace_index_repository_test.rs b/crates/frilvault-core/src/tests/workspace_index_repository_test.rs index f4ce857..e4a1506 100644 --- a/crates/frilvault-core/src/tests/workspace_index_repository_test.rs +++ b/crates/frilvault-core/src/tests/workspace_index_repository_test.rs @@ -2,8 +2,8 @@ use std::fs; use super::helper::{create_test_note_service, create_test_workspace_service}; use crate::{ - AddNoteInput, IndexDiff, IndexedFile, LineAnchor, NoteAnchor, PathResolver, SymbolAnchor, - SymbolKind, WorkspaceIndex, WorkspaceIndexRepository, + IndexDiff, IndexedFile, LineAnchor, NoteAnchor, PathResolver, SymbolAnchor, SymbolKind, + WorkspaceIndex, WorkspaceIndexRepository, add_note_request::AddNoteRequest, tests::helper::create_test_index_repository, }; @@ -88,7 +88,7 @@ fn rebuild_creates_index_from_note_files() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 10, @@ -99,7 +99,7 @@ fn rebuild_creates_index_from_note_files() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/lib.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 3, column: 1 }), content: "lib note".to_string(), @@ -107,7 +107,7 @@ fn rebuild_creates_index_from_note_files() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/lib.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 7, column: 2 }), content: "second lib note".to_string(), @@ -151,7 +151,7 @@ fn rebuild_marks_missing_files_as_not_existing() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/missing.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), content: "orphan".to_string(), @@ -179,7 +179,7 @@ fn health_check_detects_missing_files_from_note_repository() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/missing.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), @@ -211,7 +211,7 @@ fn stats_counts_line_and_symbol_notes() { let mut workspace_service = create_test_workspace_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), @@ -221,7 +221,7 @@ fn stats_counts_line_and_symbol_notes() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Symbol(SymbolAnchor { @@ -267,7 +267,7 @@ fn repair_suggests_matching_file_names() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/parser/lib.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), @@ -303,7 +303,7 @@ fn apply_repairs_moves_note_file() { let mut service = create_test_note_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/parser/lib.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 1, column: 1 }), diff --git a/crates/frilvault-core/src/tests/yaml_repository_test.rs b/crates/frilvault-core/src/tests/yaml_repository_test.rs index 6625e8a..815626f 100644 --- a/crates/frilvault-core/src/tests/yaml_repository_test.rs +++ b/crates/frilvault-core/src/tests/yaml_repository_test.rs @@ -1,6 +1,6 @@ use crate::{ - AddNoteInput, LineAnchor, NoteAnchor, NoteService, PathResolver, VaultContext, - WorkspaceIndexRepository, WorkspaceRepository, YamlNoteRepository, + LineAnchor, NoteAnchor, NoteService, PathResolver, VaultContext, WorkspaceIndexRepository, + WorkspaceRepository, YamlNoteRepository, add_note_request::AddNoteRequest, }; use std::fs; @@ -35,7 +35,7 @@ fn list_all_note_files_returns_all_note_files() { let mut service = create_service(&workspace_root); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/main.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 10, @@ -46,7 +46,7 @@ fn list_all_note_files_returns_all_note_files() { .unwrap(); service - .add_note(AddNoteInput { + .add_note(AddNoteRequest { source_file: "src/lib.rs".into(), anchor: NoteAnchor::Line(LineAnchor { line: 3, column: 1 }), content: "lib note".to_string(), diff --git a/crates/frilvault-node/Cargo.toml b/crates/frilvault-node/Cargo.toml deleted file mode 100644 index 92b424f..0000000 --- a/crates/frilvault-node/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "frilvault-node" -version = "0.1.0" -edition = "2024" - -[lib] -crate-type = ["cdylib"] - -[dependencies] -chrono = { version = "0.4", features = ["serde"] } -frilvault-core = { path = "../frilvault-core" } -napi = { version = "3", default-features = false, features = ["dyn-symbols", "napi8"] } -napi-derive = "3" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -uuid = { version = "1", features = ["serde"] } diff --git a/crates/frilvault-node/src/lib.rs b/crates/frilvault-node/src/lib.rs deleted file mode 100644 index 77b92af..0000000 --- a/crates/frilvault-node/src/lib.rs +++ /dev/null @@ -1,318 +0,0 @@ -use std::path::{Path, PathBuf}; - -use chrono::{DateTime, Utc}; -use frilvault_core::{ - AddNoteInput, FrilVaultError, LineAnchor, Note, NoteAnchor, NoteService, PathResolver, - RepairSuggestion, SymbolAnchor, SymbolKind, VaultContext, WorkspaceHealth, - WorkspaceIndexRepository, WorkspaceRepository, WorkspaceService, WorkspaceStats, - YamlNoteRepository, note_view::NoteView, -}; -use napi::bindgen_prelude::Error; -use napi_derive::napi; -use serde::Serialize; -use uuid::Uuid; - -#[derive(Serialize)] -struct SerializableNote { - id: String, - anchor: SerializableAnchor, - content: String, - created_at: DateTime, - updated_at: DateTime, -} - -#[derive(Serialize)] -#[serde(tag = "type")] -enum SerializableAnchor { - Line { - line: u32, - column: u32, - }, - Symbol { - name: String, - kind: String, - signature: Option, - line_hint: Option, - }, -} - -#[derive(Serialize)] -struct SerializableNoteView { - source_file: String, - note: SerializableNote, -} - -#[derive(Serialize)] -struct SerializableWorkspaceStats { - file_count: usize, - total_notes: usize, - existing_files: usize, - missing_files: usize, - line_notes: usize, - symbol_notes: usize, -} - -#[derive(Serialize)] -struct SerializableWorkspaceHealth { - missing_source_files: Vec, -} - -#[derive(Serialize)] -struct SerializableRepairSuggestion { - missing_file: String, - candidates: Vec, -} - -#[derive(Serialize)] -struct SerializableMutationResult { - note: Option, -} - -fn napi_error(error: FrilVaultError) -> Error { - Error::from_reason(error.to_string()) -} - -fn parse_uuid(note_id: &str) -> napi::Result { - Uuid::parse_str(note_id).map_err(|error| Error::from_reason(error.to_string())) -} - -fn serialize_json(value: &T) -> napi::Result { - serde_json::to_string(value).map_err(|error| Error::from_reason(error.to_string())) -} - -fn normalize_source_file(workspace_root: &str, source_file: &str) -> napi::Result { - let resolver = PathResolver::new(workspace_root); - let path = PathBuf::from(source_file); - - if path.is_absolute() { - return resolver.to_workspace_relative(path).map_err(napi_error); - } - - if Path::new(source_file).starts_with(resolver.workspace_root()) { - return resolver - .to_workspace_relative(source_file) - .map_err(napi_error); - } - - Ok(path) -} - -fn build_vault_context( - workspace_root: &str, -) -> napi::Result<(VaultContext, WorkspaceIndexRepository)> { - let resolver = PathResolver::new(workspace_root); - let workspace_repository = WorkspaceRepository::new(resolver.clone()); - workspace_repository - .create_if_missing() - .map_err(napi_error)?; - - let index_repository = WorkspaceIndexRepository::new(resolver.clone()); - index_repository.create_if_missing().map_err(napi_error)?; - - let note_repository = YamlNoteRepository::new(resolver); - let vault_context = VaultContext::new(note_repository, index_repository.clone()); - - Ok((vault_context, index_repository)) -} - -fn note_service(workspace_root: &str) -> napi::Result { - let (vault_context, _) = build_vault_context(workspace_root)?; - - Ok(NoteService::new(vault_context)) -} - -fn workspace_service(workspace_root: &str) -> napi::Result { - let (vault_context, index_repository) = build_vault_context(workspace_root)?; - - Ok(WorkspaceService::new(vault_context, index_repository)) -} - -fn serialize_symbol_kind(kind: SymbolKind) -> String { - match kind { - SymbolKind::Function => "Function", - SymbolKind::Struct => "Struct", - SymbolKind::Enum => "Enum", - SymbolKind::Trait => "Trait", - SymbolKind::Impl => "Impl", - SymbolKind::Method => "Method", - SymbolKind::Unknown => "Unknown", - } - .to_string() -} - -fn serialize_anchor(anchor: NoteAnchor) -> SerializableAnchor { - match anchor { - NoteAnchor::Line(LineAnchor { line, column }) => SerializableAnchor::Line { line, column }, - NoteAnchor::Symbol(SymbolAnchor { - name, - kind, - signature, - line_hint, - }) => SerializableAnchor::Symbol { - name, - kind: serialize_symbol_kind(kind), - signature, - line_hint, - }, - } -} - -fn serialize_note(note: Note) -> SerializableNote { - SerializableNote { - id: note.id.to_string(), - anchor: serialize_anchor(note.anchor), - content: note.content, - created_at: note.created_at, - updated_at: note.updated_at, - } -} - -fn serialize_note_view(view: NoteView) -> SerializableNoteView { - SerializableNoteView { - source_file: view.source_file.to_string_lossy().to_string(), - note: serialize_note(view.note), - } -} - -fn serialize_stats(stats: WorkspaceStats) -> SerializableWorkspaceStats { - SerializableWorkspaceStats { - file_count: stats.file_count, - total_notes: stats.total_notes, - existing_files: stats.existing_files, - missing_files: stats.missing_files, - line_notes: stats.line_notes, - symbol_notes: stats.symbol_notes, - } -} - -fn serialize_health(health: WorkspaceHealth) -> SerializableWorkspaceHealth { - SerializableWorkspaceHealth { - missing_source_files: health.missing_source_files, - } -} - -fn serialize_repair_suggestion(suggestion: RepairSuggestion) -> SerializableRepairSuggestion { - SerializableRepairSuggestion { - missing_file: suggestion.missing_file, - candidates: suggestion.candidates, - } -} - -#[napi] -pub fn add_line_note( - workspace_root: String, - source_file: String, - line: u32, - column: u32, - content: String, -) -> napi::Result { - let mut service = note_service(&workspace_root)?; - let source_file = normalize_source_file(&workspace_root, &source_file)?; - - let note = service - .add_note(AddNoteInput { - source_file, - anchor: NoteAnchor::Line(LineAnchor { line, column }), - content, - }) - .map_err(napi_error)?; - - serialize_json(&SerializableMutationResult { - note: Some(serialize_note(note)), - }) -} - -#[napi] -pub fn list_notes(workspace_root: String, source_file: String) -> napi::Result { - let mut service = note_service(&workspace_root)?; - let source_file = normalize_source_file(&workspace_root, &source_file)?; - let views = service.list_notes(source_file).map_err(napi_error)?; - let serialized: Vec<_> = views.into_iter().map(serialize_note_view).collect(); - - serialize_json(&serialized) -} - -#[napi] -pub fn update_note( - workspace_root: String, - source_file: String, - note_id: String, - content: String, -) -> napi::Result { - let mut service = note_service(&workspace_root)?; - let source_file = normalize_source_file(&workspace_root, &source_file)?; - let note_id = parse_uuid(¬e_id)?; - - service - .update_note(&source_file, note_id, content) - .map_err(napi_error)?; - - let note = service - .list_notes(source_file) - .map_err(napi_error)? - .into_iter() - .find(|view| view.note.id == note_id) - .map(|view| serialize_note(view.note)); - - serialize_json(&SerializableMutationResult { note }) -} - -#[napi] -pub fn delete_note( - workspace_root: String, - source_file: String, - note_id: String, -) -> napi::Result<()> { - let mut service = note_service(&workspace_root)?; - let source_file = normalize_source_file(&workspace_root, &source_file)?; - let note_id = parse_uuid(¬e_id)?; - - service - .delete_note(source_file, note_id) - .map_err(napi_error) -} - -#[napi] -pub fn search_notes(workspace_root: String, keyword: String) -> napi::Result { - let mut service = note_service(&workspace_root)?; - let views = service.search_notes(&keyword).map_err(napi_error)?; - let serialized: Vec<_> = views.into_iter().map(serialize_note_view).collect(); - - serialize_json(&serialized) -} - -#[napi] -pub fn workspace_stats(workspace_root: String) -> napi::Result { - let mut service = workspace_service(&workspace_root)?; - let stats = service.stats().map_err(napi_error)?; - - serialize_json(&serialize_stats(stats)) -} - -#[napi] -pub fn workspace_health(workspace_root: String) -> napi::Result { - let mut service = workspace_service(&workspace_root)?; - let health = service.health_check().map_err(napi_error)?; - - serialize_json(&serialize_health(health)) -} - -#[napi] -pub fn repair_suggestions(workspace_root: String) -> napi::Result { - let mut service = workspace_service(&workspace_root)?; - let suggestions = service.repair_suggestions().map_err(napi_error)?; - let serialized: Vec<_> = suggestions - .into_iter() - .map(serialize_repair_suggestion) - .collect(); - - serialize_json(&serialized) -} - -#[napi] -pub fn apply_repairs(workspace_root: String) -> napi::Result { - let mut service = workspace_service(&workspace_root)?; - let repaired = service.apply_repairs().map_err(napi_error)?; - - Ok(repaired as u32) -} From b8c8dfa79e17bf64585ae8e176787fb90de82b59 Mon Sep 17 00:00:00 2001 From: "heesk0223@gmail.com" Date: Fri, 19 Jun 2026 21:39:58 +0900 Subject: [PATCH 2/2] fix: Vscode extension connect --- apps/vscode-extension/scripts/build-native.js | 6 ++++++ apps/vscode-extension/src/extension.ts | 21 ++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/apps/vscode-extension/scripts/build-native.js b/apps/vscode-extension/scripts/build-native.js index 188d2ed..6000c84 100644 --- a/apps/vscode-extension/scripts/build-native.js +++ b/apps/vscode-extension/scripts/build-native.js @@ -6,6 +6,7 @@ const extensionRoot = path.resolve(__dirname, '..'); const workspaceRoot = path.resolve(extensionRoot, '..', '..'); const profile = process.argv.includes('--production') ? 'release' : 'debug'; const crateName = 'frilvault-node'; +const crateManifest = path.join(workspaceRoot, 'crates', 'frilvault-node', 'Cargo.toml'); const dylibName = { darwin: `libfrilvault_node.dylib`, linux: `libfrilvault_node.so`, @@ -16,6 +17,11 @@ if (!dylibName) { throw new Error(`Unsupported platform: ${process.platform}`); } +if (!fs.existsSync(crateManifest)) { + console.warn('[frilvault] frilvault-node crate is unavailable; skipping native build.'); + process.exit(0); +} + childProcess.execFileSync( 'cargo', ['build', '-p', crateName, ...(profile === 'release' ? ['--release'] : [])], diff --git a/apps/vscode-extension/src/extension.ts b/apps/vscode-extension/src/extension.ts index 3270939..332c87e 100644 --- a/apps/vscode-extension/src/extension.ts +++ b/apps/vscode-extension/src/extension.ts @@ -1,7 +1,6 @@ import * as vscode from 'vscode'; import { CliClient } from './core/cliClient'; -import { NodeBridge } from './core/nodeBridge'; import { createAddNoteCommand } from './features/add-note/command'; import { AddNoteService } from './features/add-note/service'; import { FrilVaultDecorator } from './features/decorations/decorator'; @@ -9,14 +8,11 @@ import { FrilVaultHoverProvider } from './features/hover/hoverProvider'; import { FrilVaultNotesProvider } from './features/notes-panel/provider'; import { NotesPanelService } from './features/notes-panel/service'; import { createSearchCommand } from './features/search/command'; -import { createApplyRepairsCommand, createShowHealthCommand } from './features/workspace/health'; -import { createShowStatsCommand } from './features/workspace/stats'; import type { NoteView } from './types'; import { getWorkspaceRoot, revealNote } from './utils/file'; export function activate(context: vscode.ExtensionContext): void { const cliClient = new CliClient(); - const nodeBridge = new NodeBridge(context); const addNoteService = new AddNoteService(cliClient); const notesPanelService = new NotesPanelService(cliClient); const notesProvider = new FrilVaultNotesProvider(notesPanelService, getWorkspaceRoot); @@ -45,20 +41,21 @@ export function activate(context: vscode.ExtensionContext): void { ), vscode.commands.registerCommand( 'frilvault.showStats', - createShowStatsCommand(nodeBridge, getWorkspaceRoot), + async () => { + await vscode.window.showWarningMessage('FrilVault stats are temporarily unavailable.'); + }, ), vscode.commands.registerCommand( 'frilvault.showHealth', - createShowHealthCommand(nodeBridge, getWorkspaceRoot), + async () => { + await vscode.window.showWarningMessage('FrilVault health is temporarily unavailable.'); + }, ), vscode.commands.registerCommand( 'frilvault.applyRepairs', - createApplyRepairsCommand( - nodeBridge, - getWorkspaceRoot, - () => notesProvider.refresh(), - async () => decorator.refresh(), - ), + async () => { + await vscode.window.showWarningMessage('FrilVault repair is temporarily unavailable.'); + }, ), vscode.commands.registerCommand('frilvault.refresh', async () => { notesProvider.refresh();