UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

210 lines (209 loc) 5.69 kB
import type { KnowledgeEntryWire } from '#types/knowledge-wire.js'; import { Constraints, Content, Quality, Reasoning, Relations, Stats } from './values/index.js'; export interface KnowledgeEntryProps { id?: string; title?: string; description?: string; lifecycle?: string; lifecycleHistory?: Array<{ from: string; to: string; at: number; }>; autoApprovable?: boolean; stagingDeadline?: number | null; language?: string; category?: string; knowledgeType?: string; kind?: string; complexity?: string; scope?: string; difficulty?: string | null; tags?: string[]; trigger?: string; topicHint?: string; whenClause?: string; doClause?: string; dontClause?: string; coreCode?: string; usageGuide?: string; content?: unknown; relations?: unknown; constraints?: unknown; reasoning?: unknown; quality?: unknown; stats?: unknown; headers?: string[]; headerPaths?: string[]; moduleName?: string; includeHeaders?: boolean; agentNotes?: string | null; aiInsight?: string | null; reviewedBy?: string | null; reviewedAt?: number | null; rejectionReason?: string | null; source?: string; sourceFile?: string | null; sourceCandidateId?: string | null; createdBy?: string; createdAt?: number; updatedAt?: number; publishedAt?: number | null; publishedBy?: string | null; [key: string]: unknown; } export declare class KnowledgeEntry { id: string; title: string; description: string; lifecycle: string; lifecycleHistory: Array<{ from: string; to: string; at: number; by?: string; }>; autoApprovable: boolean; stagingDeadline: number | null; language: string; category: string; knowledgeType: string; kind: string; complexity: string; scope: string; difficulty: string | null; tags: string[]; trigger: string; topicHint: string; whenClause: string; doClause: string; dontClause: string; coreCode: string; usageGuide: string; content: Content; relations: Relations; constraints: Constraints; reasoning: Reasoning; quality: Quality; stats: Stats; headers: string[]; headerPaths: string[]; moduleName: string; includeHeaders: boolean; agentNotes: string | null; aiInsight: string | null; reviewedBy: string | null; reviewedAt: number | null; rejectionReason: string | null; source: string; sourceFile: string | null; sourceCandidateId: string | null; createdBy: string; createdAt: number; updatedAt: number; publishedAt: number | null; publishedBy: string | null; constructor(props?: KnowledgeEntryProps); /** * 发布 (pending|staging|evolving active) */ publish(publisher: string): { success: boolean; error?: string; }; /** * 进入暂存期 (pending staging) */ stage(): { success: boolean; error?: string; }; /** * 进入进化态 (active evolving) */ evolve(): { success: boolean; error?: string; }; /** * 进入衰退观察 (active|evolving decaying) */ decay(): { success: boolean; error?: string; }; /** * 恢复为已发布 (decaying|evolving active),不更新 publishedAt */ restore(): { success: boolean; error?: string; }; /** * 弃用 (pending|active|decaying deprecated) */ deprecate(reason: string): { success: boolean; error?: string; }; /** * 重新激活 (deprecated|staging pending) */ reactivate(): { success: boolean; error?: string; }; /** * 将最后一条 lifecycleHistory 条目标记操作人。 * KnowledgeService._lifecycleTransition() entity method 执行后调用。 */ stampLastTransition(by: string): void; /** 是否处于候选阶段 */ isCandidate(): boolean; /** 是否可被 Guard/Search/Export 消费 */ isActive(): boolean; /** 是否为 Guard 规则类型 */ isRule(): boolean; /** 内容是否有效 */ isValid(): boolean; /** 返回此 Entry 中可被 GuardCheckEngine 消费的规则列表 */ getGuardRules(): ({ id: string; type: string; name: string; message: string; pattern: string | null; languages: string[]; severity: "error" | "info" | "warning"; source: string; fixSuggestion: string | null; } | { id: string; type: string; name: string; message: string; astQuery: Record<string, unknown> | null; languages: {}[]; severity: "error" | "info" | "warning"; source: string; fixSuggestion: string | null; })[]; /** 系统内部标签前缀 内部元数据,不应暴露给最终用户 */ static SYSTEM_TAG_PREFIXES: string[]; /** 判断是否为系统内部标签 */ static isSystemTag(tag: string): boolean; /** * Domain JSON (camelCase 直出,全链路统一) * 注意: tags 保留原始值(含系统标签),对外 API 使用 sanitizeForAPI() 过滤 */ toJSON(): KnowledgeEntryWire; /** JSON Domain (camelCase 直入) */ static fromJSON(data: unknown): KnowledgeEntry; /** @returns } */ _transition(to: string, by?: string): { success: boolean; error?: string; }; _now(): number; } export default KnowledgeEntry;