# Copyright 2026 zhaoxi826 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """File Reader Tool Plugin for KiloStar. Reads the contents of a file from the local filesystem. """ from kilostar.plugin.tool_plugin.base_tool import BaseToolData from typing import List, Literal, Dict class FileReaderToolData(BaseToolData): """``file_reader`` 工具的元数据。""" is_system: bool = True action_scope: List[ Literal[ "control_node", "consciousness_node", "regulatory_node", "growth_node", "", ] ] = [] config_args: Dict[str, str] = {} category: str = "system" async def file_reader(file_path: str) -> str: """读取本地文件的内容。 Args: file_path: 文件的绝对路径或相对路径 Returns: 文件内容文本,若文件不存在则返回错误信息 """ try: with open(file_path, "r", encoding="utf-8") as f: return f.read() except FileNotFoundError: return f"[Error] File not found: {file_path}" except Exception as e: return f"[Error] Failed to read file: {str(e)}"