use codex_utils_absolute_path::AbsolutePathBuf;use schemars::JsonSchema;use serde::Deserialize;use serde::Serialize;use ts_rs::TS;/// Read a file from the host filesystem.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsReadFileParams { /// Absolute path to read. pub path: AbsolutePathBuf,}/// Base64-encoded file contents returned by `fs/readFile`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsReadFileResponse { /// File contents encoded as base64. pub data_base64: String,}/// Write a file on the host filesystem.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsWriteFileParams { /// Absolute path to write. pub path: AbsolutePathBuf, /// File contents encoded as base64. pub data_base64: String,}/// Successful response for `fs/writeFile`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsWriteFileResponse {}/// Create a directory on the host filesystem.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsCreateDirectoryParams { /// Absolute directory path to create. pub path: AbsolutePathBuf, /// Whether parent directories should also be created. Defaults to `true`. #[ts(optional = nullable)] pub recursive: Option<bool>,}/// Successful response for `fs/createDirectory`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsCreateDirectoryResponse {}/// Request metadata for an absolute path.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsGetMetadataParams { /// Absolute path to inspect. pub path: AbsolutePathBuf,}/// Metadata returned by `fs/getMetadata`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsGetMetadataResponse { /// Whether the path resolves to a directory. pub is_directory: bool, /// Whether the path resolves to a regular file. pub is_file: bool, /// Whether the path itself is a symbolic link. pub is_symlink: bool, /// File creation time in Unix milliseconds when available, otherwise `0`. #[ts(type = "number")] pub created_at_ms: i64, /// File modification time in Unix milliseconds when available, otherwise `0`. #[ts(type = "number")] pub modified_at_ms: i64,}/// List direct child names for a directory.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsReadDirectoryParams { /// Absolute directory path to read. pub path: AbsolutePathBuf,}/// A directory entry returned by `fs/readDirectory`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsReadDirectoryEntry { /// Direct child entry name only, not an absolute or relative path. pub file_name: String, /// Whether this entry resolves to a directory. pub is_directory: bool, /// Whether this entry resolves to a regular file. pub is_file: bool,}/// Directory entries returned by `fs/readDirectory`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsReadDirectoryResponse { /// Direct child entries in the requested directory. pub entries: Vec<FsReadDirectoryEntry>,}/// Remove a file or directory tree from the host filesystem.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsRemoveParams { /// Absolute path to remove. pub path: AbsolutePathBuf, /// Whether directory removal should recurse. Defaults to `true`. #[ts(optional = nullable)] pub recursive: Option<bool>, /// Whether missing paths should be ignored. Defaults to `true`. #[ts(optional = nullable)] pub force: Option<bool>,}/// Successful response for `fs/remove`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsRemoveResponse {}/// Copy a file or directory tree on the host filesystem.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsCopyParams { /// Absolute source path. pub source_path: AbsolutePathBuf, /// Absolute destination path. pub destination_path: AbsolutePathBuf, /// Required for directory copies; ignored for file copies. #[serde(default, skip_serializing_if = "std::ops::Not::not")] pub recursive: bool,}/// Successful response for `fs/copy`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsCopyResponse {}/// Start filesystem watch notifications for an absolute path.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsWatchParams { /// Connection-scoped watch identifier used for `fs/unwatch` and `fs/changed`. pub watch_id: String, /// Absolute file or directory path to watch. pub path: AbsolutePathBuf,}/// Successful response for `fs/watch`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsWatchResponse { /// Canonicalized path associated with the watch. pub path: AbsolutePathBuf,}/// Stop filesystem watch notifications for a prior `fs/watch`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsUnwatchParams { /// Watch identifier previously provided to `fs/watch`. pub watch_id: String,}/// Successful response for `fs/unwatch`.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsUnwatchResponse {}/// Filesystem watch notification emitted for `fs/watch` subscribers.#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]#[serde(rename_all = "camelCase")]#[ts(export_to = "v2/")]pub struct FsChangedNotification { /// Watch identifier previously provided to `fs/watch`. pub watch_id: String, /// File or directory paths associated with this event. pub changed_paths: Vec<AbsolutePathBuf>,}