autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
62 lines (61 loc) • 2.4 kB
TypeScript
/** _shared.js — 多个工具模块共享的常量和辅助函数 */
import type { UnifiedValidator } from '#domain/knowledge/UnifiedValidator.js';
export declare const PROJECT_ROOT: string;
/** skills/ 目录绝对路径 */
export declare const SKILLS_DIR: string;
/** 项目级 skills 目录 */
export declare const PROJECT_SKILLS_DIR: string;
export { DIMENSION_DISPLAY_GROUP } from '#domain/dimension/DimensionRegistry.js';
/**
* 基于维度元数据 (dimensionMeta) 检查提交是否合法
* @param dimensionMeta
* @param params submit_knowledge 的参数
* @returns | null} 不合法返回 rejected,合法返回 null
*/
export declare function checkDimensionType(dimensionMeta: DimensionMeta, params: Record<string, unknown>, logger?: {
info(msg: string, ...args: unknown[]): void;
warn(msg: string, ...args: unknown[]): void;
} | null): null;
/** DI container service lookup (returns dynamic service instances) */
export interface ServiceContainer {
get(name: string): any;
}
/** Dimension metadata injected by bootstrap pipeline */
export interface DimensionMeta {
id: string;
outputType?: string;
allowedKnowledgeTypes?: string[];
}
/** Common tool handler context provided by ToolRegistry.execute() */
export interface ToolHandlerContext {
container: ServiceContainer;
projectRoot: string;
logger?: {
info(msg: string, ...args: unknown[]): void;
debug(msg: string, ...args: unknown[]): void;
warn(msg: string, ...args: unknown[]): void;
error?(msg: string, ...args: unknown[]): void;
};
source?: string;
_dimensionMeta?: DimensionMeta;
_projectLanguage?: string;
_validator?: UnifiedValidator;
_submittedTitles?: Set<string>;
_submittedPatterns?: Set<string>;
_sessionToolCalls?: Array<{
tool: string;
params?: Record<string, unknown>;
}>;
[key: string]: unknown;
}
/** Tool schema entry returned by ToolRegistry.getToolSchemas() */
export interface ToolSchemaEntry {
name: string;
description: string;
parameters: Record<string, unknown>;
}
/**
* 剥离标题中冗余的项目名前缀(如 "BiliDili 分页控制器" → "分页控制器")
* 同一知识库内所有条目都属于同一项目,标题中重复项目名没有信息量。
*/
export declare function stripProjectNamePrefix(title: string, projectRoot: string): string;