autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
54 lines (53 loc) • 2.48 kB
TypeScript
/**
* autoApproveInjector.js — Cursor MCP autoApprove 自动注入
*
* "首次手动授权,后续自动" 的安全实现:
*
* 1. 首次 bootstrap 成功 → 写标记文件 `.autosnippet/.auto-approve-pending`
* (不碰 mcp.json,避免 Cursor 检测配置变更重启 MCP Server 中断当前 session)
* 2. 下次 MCP Server 启动 → 检查标记 → 注入 autoApprove → 删标记
* (写入发生在连接建立前,安全无副作用)
* 3. `asd upgrade` → 直接注入(不在 MCP session 中执行,无中断风险)
*
* 为什么不在 bootstrap 期间直接写 mcp.json?
* Cursor 监听 .cursor/mcp.json 变更,可能触发 MCP Server 重启,
* 导致内存中的 BootstrapSession 丢失,后续 submit/complete 全部失败。
*
* @module external/mcp/autoApproveInjector
*/
/** Minimal logger interface for auto-approve operations */
interface AutoApproveLogger {
info?(...args: unknown[]): void;
warn?(...args: unknown[]): void;
}
/**
* 所有 agent 层工具(用户日常使用的 15 个)
* admin 层工具(enrich_candidates, knowledge_lifecycle, validate_candidate, check_duplicate)
* 不加入自动授权 — 保留对高级操作的手动确认。
*/
declare const AUTO_APPROVE_TOOLS: string[];
/**
* 写入标记文件 — 标记首次 bootstrap 已完成,下次启动时注入 autoApprove
*
* 在 bootstrap handler 中调用。只写一个轻量标记文件到 .autosnippet/,
* 不触碰 .cursor/mcp.json,避免 Cursor 检测配置变更重启 MCP Server。
*
* @param projectRoot 项目根目录
*/
export declare function markAutoApproveNeeded(projectRoot: string, logger?: AutoApproveLogger): boolean;
/**
* 向 .cursor/mcp.json 中 autosnippet 服务器注入 autoApprove 工具列表
*
* @param projectRoot 项目根目录
* @param [logger] 日志实例(可选)
* @returns 是否成功写入(false = 文件不存在或无 autosnippet 配置)
*/
export declare function injectAutoApprove(projectRoot: string, logger?: AutoApproveLogger): boolean;
/**
* MCP Server 启动时调用 — 检查标记文件,如有则注入 autoApprove 并清除标记
*
* 注入发生在 MCP 连接建立之前,写入 mcp.json 不影响当前启动。
* Cursor 下次读取 mcp.json 时(重启或新窗口)即生效。
*/
export declare function applyPendingAutoApprove(projectRoot: string, logger?: AutoApproveLogger): void;
export { AUTO_APPROVE_TOOLS };