autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
189 lines (188 loc) • 5 kB
TypeScript
/**
* MCP Handlers — 项目结构 & 知识图谱
* getTargets, getTargetFiles, getTargetMetadata, graphQuery, graphImpact, graphPath, graphStats
*/
import type { McpContext } from './types.js';
export interface TargetInfo {
name: string;
packageName?: string;
packagePath?: string;
type?: string;
language?: string;
framework?: string;
path?: string;
targetDir?: string;
info?: {
path?: string;
sources?: string;
dependencies?: unknown[];
};
metadata?: {
dependencies?: unknown[];
};
[key: string]: unknown;
}
interface StructureArgs {
targetName?: string;
includeSummary?: boolean;
includeContent?: boolean;
contentMaxLines?: number;
maxFiles?: number;
[key: string]: unknown;
}
interface GraphArgs {
nodeId?: string;
nodeType?: string;
direction?: string;
relation?: string;
fromId?: string;
toId?: string;
fromType?: string;
toType?: string;
maxDepth?: number;
methodName?: string;
[key: string]: unknown;
}
export declare function getTargets(ctx: McpContext, args?: StructureArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: {
targets: TargetInfo[];
} | null;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
} | {
success: boolean;
errorCode: string | null;
message: string;
data: {
targets: {
name: string;
packageName: string | null;
type: string;
inferredRole: string;
fileCount: number;
languageStats: Record<string, number>;
}[];
summary: {
targetCount: number;
totalFiles: number;
languageStats: Record<string, number>;
};
} | null;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export declare function getTargetFiles(ctx: McpContext, args: StructureArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: {
targetName: string;
files: {
name: string;
path: string;
relativePath: string;
language: string;
size: number;
content?: string | null;
totalLines?: number;
truncated?: boolean;
}[];
fileCount: number;
totalAvailable: number;
languageStats: Record<string, number>;
} | null;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export declare function getTargetMetadata(ctx: McpContext, args: StructureArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: Record<string, unknown> | null;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export declare function graphQuery(ctx: McpContext, args: GraphArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: any;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export declare function graphImpact(ctx: McpContext, args: GraphArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: unknown;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export declare function graphPath(ctx: McpContext, args: GraphArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: any;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
/**
* autosnippet_call_context handler
* 查询方法的调用者、被调用者、影响半径
*/
export declare function callContext(ctx: McpContext, args: GraphArgs): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: unknown;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export declare function graphStats(ctx: McpContext): Promise<{
success: boolean;
errorCode: string | null;
message: string;
data: any;
meta: {
source?: string | undefined;
responseTimeMs?: number | undefined;
version: string;
tool?: string | undefined;
};
}>;
export {};