mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
* feat: filesystem grep, read, edit file * feat: add file write tool and enhance file read functionality * feat: enhance tool prompt formatting and add escaped text decoding for file editing * feat: remove redundant safe path tests from security restrictions * feat: implement file read tool with support for text and image files, including validation for large files * feat: add file read utilities and integrate with filesystem tools * refactor: move computer tools to builtin tools registry * refactor: remove unused plugin_context parameter from _apply_sandbox_tools * feat: supports to display enabled builtin tools in configs * feat: add tooltip for disabled builtin tools and update localization strings * feat: add workspace extra prompt handling in message processing * feat: add ripgrep installation to Dockerfile * perf: shell executed in workspace dir in local env * feat: enhance file reading capabilities to support PDF and DOCX parsing, including workspace storage for long documents * feat: update converted text notice to suggest using grep for large files * feat: implement handling for large tool results with overflow file writing and read tool integration * fix: test * feat: enhance onboarding steps to include computer access configuration and related help information * feat: add support for additional temporary path in restricted environment checks * feat: update computer access hints and add detailed configuration instructions
101 lines
3.3 KiB
Python
101 lines
3.3 KiB
Python
"""Centralized AstrBot path helpers.
|
|
|
|
Project path:
|
|
- Fixed to the source tree location.
|
|
|
|
Root path:
|
|
- Defaults to the current working directory.
|
|
- Can be overridden with the ``ASTRBOT_ROOT`` environment variable.
|
|
|
|
Data subdirectories:
|
|
- Most runtime data lives under ``<root>/data``.
|
|
- A few tool-runtime files intentionally live under the system temporary
|
|
directory as ``.astrbot``.
|
|
"""
|
|
|
|
import os
|
|
import tempfile
|
|
|
|
from astrbot.core.utils.runtime_env import is_packaged_desktop_runtime
|
|
|
|
|
|
def get_astrbot_path() -> str:
|
|
"""Return the AstrBot project source path."""
|
|
return os.path.realpath(
|
|
os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../../"),
|
|
)
|
|
|
|
|
|
def get_astrbot_root() -> str:
|
|
"""Return the AstrBot root directory."""
|
|
if path := os.environ.get("ASTRBOT_ROOT"):
|
|
return os.path.realpath(path)
|
|
if is_packaged_desktop_runtime():
|
|
return os.path.realpath(os.path.join(os.path.expanduser("~"), ".astrbot"))
|
|
return os.path.realpath(os.getcwd())
|
|
|
|
|
|
def get_astrbot_data_path() -> str:
|
|
"""Return the AstrBot data directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_root(), "data"))
|
|
|
|
|
|
def get_astrbot_config_path() -> str:
|
|
"""Return the AstrBot config directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "config"))
|
|
|
|
|
|
def get_astrbot_plugin_path() -> str:
|
|
"""Return the AstrBot plugin directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "plugins"))
|
|
|
|
|
|
def get_astrbot_plugin_data_path() -> str:
|
|
"""Return the AstrBot plugin data directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "plugin_data"))
|
|
|
|
|
|
def get_astrbot_t2i_templates_path() -> str:
|
|
"""Return the AstrBot T2I templates directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "t2i_templates"))
|
|
|
|
|
|
def get_astrbot_webchat_path() -> str:
|
|
"""Return the AstrBot WebChat data directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "webchat"))
|
|
|
|
|
|
def get_astrbot_temp_path() -> str:
|
|
"""Return the AstrBot temporary data directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "temp"))
|
|
|
|
|
|
def get_astrbot_skills_path() -> str:
|
|
"""Return the AstrBot skills directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "skills"))
|
|
|
|
|
|
def get_astrbot_workspaces_path() -> str:
|
|
"""Return the AstrBot workspaces directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "workspaces"))
|
|
|
|
|
|
def get_astrbot_system_tmp_path() -> str:
|
|
"""Return the shared system temporary directory used by local tools."""
|
|
return os.path.realpath(os.path.join(tempfile.gettempdir(), ".astrbot"))
|
|
|
|
|
|
def get_astrbot_site_packages_path() -> str:
|
|
"""Return the AstrBot third-party site-packages directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "site-packages"))
|
|
|
|
|
|
def get_astrbot_knowledge_base_path() -> str:
|
|
"""Return the AstrBot knowledge base root path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "knowledge_base"))
|
|
|
|
|
|
def get_astrbot_backups_path() -> str:
|
|
"""Return the AstrBot backups directory path."""
|
|
return os.path.realpath(os.path.join(get_astrbot_data_path(), "backups"))
|