UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

54 lines (53 loc) 2.48 kB
/** * 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 };