autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
91 lines (90 loc) • 3.07 kB
TypeScript
/**
* MCP Handler — 外部 Agent 驱动的 Bootstrap (External-Agent-Driven)
*
* `autosnippet_bootstrap` 的主入口(无参数):
* Phase 1-4 同步执行(文件收集 / AST / 依赖图 / Guard)
* → 构建 Mission Briefing 一次性返回
* → 不启动 Phase 5 异步 AI pipeline
* → 等待外部 Agent (Cursor/Copilot) 主动提交知识 + 完成维度
*
* 与 bootstrap-internal.js 的关系:
* - 本文件: 外部 Agent 路径 — Agent 自己分析代码 + 提交知识,不需要 AI Provider
* - bootstrap-internal.js: 内部 Agent 路径 — 内置 Analyst/Producer pipeline,需要 API Key
* - 两者共享 Phase 1-4 的分析逻辑 → bootstrap/shared/bootstrap-phases.js
*
* @module handlers/bootstrap-external
*/
import type { ServiceContainer } from '#inject/ServiceContainer.js';
/** MCP handler context passed from McpServer */
interface McpContext {
container: ServiceContainer;
logger: {
info(msg: string, meta?: Record<string, unknown>): void;
warn(msg: string, meta?: Record<string, unknown>): void;
};
startedAt?: number;
[key: string]: unknown;
}
/**
* bootstrapExternal — 外部 Agent 驱动的一键冷启动
*
* 无参数调用,返回 Mission Briefing。
* Phase 1-4 复用现有 bootstrap.js 逻辑,Phase 5 不启动。
*
* @param ctx { container, logger, startedAt }
* @returns envelope({ success, data: MissionBriefing })
*/
export declare function bootstrapExternal(ctx: McpContext): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: {
message: string;
} | null;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
} | {
success: boolean;
errorCode: string | null;
message: string;
data: {
meta?: {
warnings?: string[];
responseSizeKB?: number;
[key: string]: unknown;
};
cleanup: {
deletedRecipes: number;
clearedTables: number;
dbCleared: boolean;
errors: string[];
trash: {
folder: string;
movedItems: number;
dbSnapshotRows: number;
} | null;
purgedTrash: {
count: number;
freedBytes: number;
} | null;
};
} | null;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
/**
* 获取当前 active session(供其他 handler 使用)
*
* 当指定了 sessionId 时,如果 active session 已过期但 id 匹配,
* 仍然返回该 session(支持新 bootstrap 创建后旧 session 的 dimension_complete 继续工作)。
*/
export declare function getActiveSession(container: ServiceContainer, sessionId?: string): import("./bootstrap/BootstrapSession.js").BootstrapSession | null;
export {};