autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
210 lines (209 loc) • 5.69 kB
TypeScript
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;