"""路径与环境:与 account-manager 一致的数据根目录。""" from __future__ import annotations import os import sys from typing import Optional SKILL_SLUG = "content-manager" def get_skill_root() -> str: # content_manager/config.py -> 技能根 content-manager/ return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def get_openclaw_root() -> str: return os.path.dirname(get_skill_root()) def get_data_root() -> str: env = (os.getenv("JIANGCHANG_DATA_ROOT") or "").strip() if env: return env if sys.platform == "win32": return r"D:\jiangchang-data" return os.path.join(os.path.expanduser("~"), ".jiangchang-data") def get_user_id() -> str: return (os.getenv("JIANGCHANG_USER_ID") or "").strip() or "_anon" def get_skill_data_dir() -> str: path = os.path.join(get_data_root(), get_user_id(), SKILL_SLUG) os.makedirs(path, exist_ok=True) return path def get_db_path() -> str: return os.path.join(get_skill_data_dir(), "content-manager.db") def resolve_stored_path(relative_file_path: str) -> str: """库内相对路径 -> 绝对路径。""" rel = (relative_file_path or "").strip().replace("\\", "/").lstrip("/") return os.path.normpath(os.path.join(get_skill_data_dir(), rel))