/**
 * ============================================================
 *  src/prompts/projectInstructions.ts —— 项目级指令加载
 * ------------------------------------------------------------
 *  检查当前工作目录下是否存在 minimal-agent.md，
 *  如果存在则全量读取并返回其内容。
 *
 *  用途类似：
 *    - kakadeai 的 CLAUDE.md
 *    - Cursor 的 .cursorrules
 *    - GitHub Copilot 的 .github/copilot-instructions.md
 *
 *  设计原则：
 *    1. 静默失败：文件不存在时不报错、不打印警告、返回 null
 *    2. 全量注入：不做截断或摘要，原样拼入 messages 数组
 *    3. 实时读取：每次 buildInitialHistory 都重新读（用户改了立即生效）
 *    4. 独立消息：作为单独的 system message 插入，
 *       不污染全局 system prompt 的 token 结构
 * ============================================================
 */
import { readFile } from 'node:fs/promises';
import { join } from 'node:path';
const FILENAME = 'minimal-agent.md';
/**
 * 尝试从 cwd 加载项目指令文件。
 *
 * @param cwd 当前工作目录
 * @returns 文件内容字符串（如果存在），null 如果不存在或读取出错
 */
export async function loadProjectInstructions(cwd) {
    const filePath = join(cwd, FILENAME);
    try {
        const content = await readFile(filePath, 'utf-8');
        const trimmed = content.trim();
        if (trimmed.length === 0)
            return null;
        return trimmed;
    }
    catch (e) {
        // ENOENT（文件不存在）→ 最常见的情况 → 静默返回 null
        // 其他错误（权限/I/O/编码等）→ stderr 警告一次，仍返回 null 不阻止启动
        const code = e.code;
        if (code !== 'ENOENT') {
            process.stderr.write(`[minimal-agent] 跳过项目指令 ${filePath}：${code ?? e.message}\n`);
        }
        return null;
    }
}
