/** _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;
