UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

54 lines (53 loc) 2.42 kB
/** * 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;