/**
 * src/prompts/pluginList.ts —— 插件列表生成
 *
 * 与 skillList.ts 对称设计：
 *   - getPluginMetaList()   ← 对标 getSkillList()
 *   - formatPluginHint()    ← 对标 formatSkillHint()
 *
 * 数据源：commandRouter.discoverPlugins()（纯元数据提取，不加载代码）
 */
import { discoverPlugins } from '../plugins/commandRouter.js';
/**
 * 扫描 plugins/ 目录，返回已安装插件的元数据摘要。
 * 复用 discoverPlugins() 的缓存结果，只提取轻量信息。
 */
export async function getPluginMetaList() {
    const manifests = await discoverPlugins();
    return manifests.map((m) => ({
        name: m.name,
        description: m.description ?? '(no description)',
        commands: m.commands.map((c) => ({
            name: c.name,
            description: c.description,
        })),
    }));
}
/**
 * 格式化插件列表为系统提示词片段。
 *
 * 风格对齐 skillList.formatSkillHint()：
 *   - 每个插件固定格式
 *   - 明确标注触发方式（"必须由用户输入 /xxx 触发"）
 *   - 无插件时返回空字符串（调用方自行决定是否追加）
 */
export function formatPluginHint(plugins) {
    if (plugins.length === 0)
        return '';
    const lines = [
        '# 可用插件（/命令）',
        '',
        '以下是当前已安装的插件。**注意：插件命令必须由用户主动通过 /xxx 输入触发**，你不要自行模拟或伪造插件执行。',
        '当用户消息以 / 开头且匹配以下某个命令时，表示用户要触发对应插件功能。你可以根据上下文建议用户使用某个插件，但不能代替用户执行 / 命令。',
        '',
    ];
    for (const p of plugins) {
        lines.push(`## /${p.name}`);
        lines.push(`- **描述**: ${p.description}`);
        if (p.commands.length > 0) {
            const cmdList = p.commands.map((c) => `\`/${c.name}\``).join('、');
            lines.push(`- **命令**: ${cmdList}`);
        }
        lines.push('');
    }
    return lines.join('\n');
}
