autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
54 lines (53 loc) • 2.42 kB
TypeScript
/**
* SkillHooks — Skill 生命周期钩子管理器 (v2)
*
* 每个 Skill 目录可以包含一个 hooks.js 文件,导出生命周期回调。
* SkillHooks 在启动时扫描并注册所有钩子,在特定事件发生时按模式调用。
*
* v2 升级:
* - 扩展到 16+ 钩子,覆盖知识/Guard/Skill/搜索/推荐/Bootstrap/信号全生命周期
* - 4 种执行模式: series / parallel / waterfall / bail
* - Handler 支持 priority、timeout、name 元数据
* - 完全向后兼容旧版 hooks.js (直接导出函数)
* - 新格式支持: export default { hooks: { onXxx: { handler, priority, timeout } } }
*
* 加载顺序: 内置 skills/ → 项目级 AutoSnippet/skills/(同名覆盖)
*/
import Logger from '../../infrastructure/logging/Logger.js';
import type { HookDefinition, HookHandlerOptions, RegisteredHandler } from './types.js';
export declare class SkillHooks {
#private;
hooks: Map<string, RegisteredHandler[]>;
logger: ReturnType<typeof Logger.getInstance>;
constructor();
/**
* 扫描 skills 目录,加载所有 hooks.js
* 项目级 hooks 覆盖同名内置 hooks
*/
load(container?: {
singletons?: {
_projectRoot?: unknown;
};
}): Promise<void>;
/** 手动注册 handler (用于代码级注册,非 hooks.js) */
tap(hookName: string, handler: (...args: unknown[]) => Promise<unknown> | unknown, options?: Partial<HookHandlerOptions>): void;
/**
* 触发钩子 — 根据 hook 定义的模式自动选择执行策略
*
* 向后兼容: 旧版 run() 签名不变,行为维持一致。
* - bail 模式: 首个返回 { block: true } 的 handler 立即终止
* - waterfall 模式: 前一个 handler 的返回值传给下一个
* - parallel 模式: 所有 handler 并行执行 (fire-and-forget)
* - series 模式: 按优先级顺序串行执行,忽略返回值
*/
run(hookName: string, ...args: unknown[]): Promise<unknown>;
/** 检查是否有任何钩子注册 */
has(hookName: string): boolean;
/** 获取指定 hook 的 handler 数量 */
count(hookName: string): number;
/** 获取已注册的所有 hook 名称 */
getRegisteredHooks(): string[];
/** 获取 Hook Registry 信息 (用于 Dashboard / 调试) */
static getHookRegistry(): ReadonlyArray<HookDefinition>;
}
export default SkillHooks;