1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//! Virtual filesystem for MCP tools.
//!
//! Provides an in-memory, read-only virtual filesystem for storing and
//! accessing generated MCP tool definitions. Files are organized in a
//! hierarchical structure like `/mcp-tools/servers/<server-id>/...`.
//!
//! # Features
//!
//! - **In-memory storage**: All files stored in memory for fast access
//! - **Strong types**: Type-safe paths and error handling
//! - **Builder pattern**: Fluent API for VFS construction
//! - **Integration**: Works seamlessly with `mcp-codegen` output
//! - **Thread-safe**: All types are `Send + Sync`
//!
//! # Examples
//!
//! ## Basic usage
//!
//! ```
//! use mcp_execution_files::{FileSystem, FilesBuilder};
//!
//! // Create FileSystem using builder
//! let fs = FilesBuilder::new()
//! .add_file("/mcp-tools/manifest.json", "{}")
//! .add_file("/mcp-tools/types.ts", "export type Params = {};")
//! .build()
//! .unwrap();
//!
//! // Read files
//! let content = fs.read_file("/mcp-tools/manifest.json").unwrap();
//! assert_eq!(content, "{}");
//!
//! // Check existence
//! assert!(fs.exists("/mcp-tools/types.ts"));
//! assert!(!fs.exists("/missing.ts"));
//! ```
//!
//! ## Integration with code generation
//!
//! ```
//! use mcp_execution_files::FilesBuilder;
//! use mcp_execution_codegen::{GeneratedCode, GeneratedFile};
//!
//! let mut code = GeneratedCode::new();
//! code.add_file(GeneratedFile {
//! path: "manifest.json".to_string(),
//! content: r#"{"version": "1.0"}"#.to_string(),
//! });
//! code.add_file(GeneratedFile {
//! path: "tools/sendMessage.ts".to_string(),
//! content: "export function sendMessage() {}".to_string(),
//! });
//!
//! let vfs = FilesBuilder::from_generated_code(code, "/mcp-tools/servers/github")
//! .build()
//! .unwrap();
//!
//! assert!(vfs.exists("/mcp-tools/servers/github/manifest.json"));
//! assert!(vfs.exists("/mcp-tools/servers/github/tools/sendMessage.ts"));
//! ```
//!
//! ## Directory operations
//!
//! ```
//! use mcp_execution_files::FilesBuilder;
//!
//! let vfs = FilesBuilder::new()
//! .add_file("/mcp-tools/servers/test/file1.ts", "")
//! .add_file("/mcp-tools/servers/test/file2.ts", "")
//! .build()
//! .unwrap();
//!
//! let files = vfs.list_dir("/mcp-tools/servers/test").unwrap();
//! assert_eq!(files.len(), 2);
//! ```
// Re-export main types
pub use FilesBuilder;
pub use ;
pub use ;