```diff
--- test_files/336-original.txt	2025-03-07 19:06:47
+++ test_files/336-modified.txt	2025-03-07 19:06:47
@@ -3,11 +3,11 @@
 
 from pydantic import Field
 
-from composio.tools.env.filemanager.manager import FileManager
+from composio.tools.base.local import LocalAction
 from composio.tools.local.filetool.actions.base_action import (
-    BaseFileAction,
     BaseFileRequest,
     BaseFileResponse,
+    include_cwd,
 )
 
 
@@ -26,7 +26,7 @@
     patch: str = Field("", description="The generated Git patch")
 
 
-class GitPatch(BaseFileAction):
+class GitPatch(LocalAction[GitPatchRequest, GitPatchResponse]):
     """
     Get the patch from the current working directory.
 
@@ -50,69 +50,51 @@
     Note: This action should be run after all changes are made to add and check the result.
     """
 
-    _display_name = "Get Git Patch"
+    display_name = "Get Git Patch"
     _request_schema = GitPatchRequest
     _response_schema = GitPatchResponse
 
-    def execute_on_file_manager(
-        self,
-        file_manager: FileManager,
-        request_data: GitPatchRequest,  # type: ignore
-    ) -> GitPatchResponse:
-        try:
-            # Check if we're in a git repository or in a subdirectory of one
-            git_root = self._find_git_root(file_manager.current_dir())
-            if not git_root:
-                return GitPatchResponse(
-                    error="Not in a git repository or its subdirectories", patch=""
-                )
+    @include_cwd  # type: ignore
+    def execute(self, request: GitPatchRequest, metadata: t.Dict) -> GitPatchResponse:
+        # Check if we're in a git repository or in a subdirectory of one
+        file_manager = self.filemanagers.get(request.file_manager_id)
+        git_root = self._find_git_root(file_manager.current_dir())
+        if not git_root:
+            return GitPatchResponse(
+                error="Not in a git repository or its subdirectories", patch=""
+            )
 
-            # Change to the git root directory
-            original_dir = file_manager.current_dir()
-            file_manager.chdir(str(git_root))
+        # Change to the git root directory
+        original_dir = file_manager.current_dir()
+        file_manager.chdir(str(git_root))
 
-            # Add new files if specified
-            if request_data.new_file_paths:
-                for file_path in request_data.new_file_paths:
-                    relative_path = Path(original_dir) / file_path
-                    git_relative_path = relative_path.relative_to(git_root)
-                    _, error = file_manager.execute_command(
-                        f"git add {git_relative_path}"
+        # Add new files if specified
+        if request.new_file_paths:
+            for file_path in request.new_file_paths:
+                relative_path = Path(original_dir) / file_path
+                git_relative_path = relative_path.relative_to(git_root)
+                _, error = file_manager.execute_command(f"git add {git_relative_path}")
+                if error:
+                    file_manager.chdir(original_dir)
+                    return GitPatchResponse(
+                        error=f"Error adding new file: {error}", patch=""
                     )
-                    if error:
-                        file_manager.chdir(original_dir)
-                        return GitPatchResponse(
-                            error=f"Error adding new file: {error}", patch=""
-                        )
 
-            # Stage all changes
-            _, error = file_manager.execute_command("git add -u")
-            if error:
-                file_manager.chdir(original_dir)
-                return GitPatchResponse(
-                    error=f"Error staging changes: {error}", patch=""
-                )
-
-            # Generate the patch
-            patch, error = file_manager.execute_command("git diff --cached")
-
-            # Change back to the original directory
+        # Stage all changes
+        _, error = file_manager.execute_command("git add -u")
+        if error:
             file_manager.chdir(original_dir)
+            return GitPatchResponse(error=f"Error staging changes: {error}", patch="")
 
-            if error:
-                return GitPatchResponse(
-                    error=f"Error generating patch: {error}", patch=""
-                )
+        # Generate the patch
+        patch, error = file_manager.execute_command("git diff --cached")
 
-            if not patch.strip():
-                return GitPatchResponse(patch="No changes to commit.")
+        # Change back to the original directory
+        file_manager.chdir(original_dir)
+        if error:
+            return GitPatchResponse(error=f"Error generating patch: {error}", patch="")
+        return GitPatchResponse(patch=patch)
 
-            return GitPatchResponse(patch=patch)
-        except Exception as e:
-            return GitPatchResponse(
-                error=f"Error generating Git patch: {str(e)}", patch=""
-            )
-
     def _find_git_root(self, path: str) -> t.Optional[Path]:
         """Find the root of the git repository."""
         current = Path(path).resolve()
```
