Adds files_mcp/models.py (FileEntry, OperationResult) and files_mcp/core/fs_ops.py with 9 pure file operations on already-resolved Path objects: create/read/update/delete/list_dir/stat/search/move/copy. All writes go through tempfile.mkstemp + os.replace for atomicity; read enforces utf-8 + 1MB cap; create/update enforce strict presence semantics (create: absent or overwrite; update: present). 39 unit tests in tests/unit/test_fs_ops.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
611 B
Python
24 lines
611 B
Python
# coding=utf-8
|
|
"""
|
|
@Time :2026/6/30
|
|
@Author :tao.chen
|
|
"""
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class FileEntry(BaseModel):
|
|
path: str # absolute, resolved, inside sandbox
|
|
name: str
|
|
type: Literal["file", "directory", "symlink", "other"]
|
|
size: int # bytes; 0 for directories
|
|
mtime: float # unix seconds
|
|
mode: int # st_mode (octal, e.g. 0o644)
|
|
|
|
|
|
class OperationResult(BaseModel):
|
|
path: str
|
|
status: str # "CREATED" | "UPDATED" | "DELETED" | "MOVED" | "COPIED"
|
|
size: int | None # None for delete/move
|