@dommaker/harness 0.12.2 → 0.12.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/harness-knowledge-capture.js +99 -0
- package/bin/harness-knowledge-check.js +63 -0
- package/bin/harness-knowledge-track.js +92 -0
- package/bin/harness-knowledge-track.sh +34 -0
- package/bin/harness.js +81 -0
- package/dist/cli/commands/analyze-sessions.d.ts +17 -0
- package/dist/cli/commands/analyze-sessions.d.ts.map +1 -0
- package/dist/cli/commands/analyze-sessions.js +445 -0
- package/dist/cli/commands/analyze-sessions.js.map +1 -0
- package/dist/cli/commands/diagnose.d.ts +16 -0
- package/dist/cli/commands/diagnose.d.ts.map +1 -0
- package/dist/cli/commands/diagnose.js +195 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/index.d.ts +5 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +12 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +28 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/knowledge.d.ts +23 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -1
- package/dist/cli/commands/knowledge.js +164 -0
- package/dist/cli/commands/knowledge.js.map +1 -1
- package/dist/cli/commands/posteval-plan.d.ts +11 -0
- package/dist/cli/commands/posteval-plan.d.ts.map +1 -0
- package/dist/cli/commands/posteval-plan.js +76 -0
- package/dist/cli/commands/posteval-plan.js.map +1 -0
- package/dist/cli/commands/propose.d.ts +18 -0
- package/dist/cli/commands/propose.d.ts.map +1 -0
- package/dist/cli/commands/propose.js +331 -0
- package/dist/cli/commands/propose.js.map +1 -0
- package/dist/cli/commands/release.d.ts +13 -0
- package/dist/cli/commands/release.d.ts.map +1 -0
- package/dist/cli/commands/release.js +175 -0
- package/dist/cli/commands/release.js.map +1 -0
- package/dist/cli/commands/traces.d.ts +15 -0
- package/dist/cli/commands/traces.d.ts.map +1 -0
- package/dist/cli/commands/traces.js +167 -0
- package/dist/cli/commands/traces.js.map +1 -0
- package/dist/cli/commands/update-user-model.d.ts +21 -0
- package/dist/cli/commands/update-user-model.d.ts.map +1 -0
- package/dist/cli/commands/update-user-model.js +475 -0
- package/dist/cli/commands/update-user-model.js.map +1 -0
- package/dist/constraints/definitions.d.ts +39 -0
- package/dist/constraints/definitions.d.ts.map +1 -0
- package/dist/constraints/definitions.js +71 -0
- package/dist/constraints/definitions.js.map +1 -0
- package/dist/constraints/quality.d.ts +11 -0
- package/dist/constraints/quality.d.ts.map +1 -0
- package/dist/constraints/quality.js +257 -0
- package/dist/constraints/quality.js.map +1 -0
- package/dist/constraints/safety.d.ts +13 -0
- package/dist/constraints/safety.d.ts.map +1 -0
- package/dist/constraints/safety.js +103 -0
- package/dist/constraints/safety.js.map +1 -0
- package/dist/core/constraints/checker.d.ts +5 -0
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +44 -11
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +28 -0
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/index.d.ts +1 -0
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +4 -1
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/prompt-injection.d.ts +13 -0
- package/dist/core/constraints/prompt-injection.d.ts.map +1 -0
- package/dist/core/constraints/prompt-injection.js +67 -0
- package/dist/core/constraints/prompt-injection.js.map +1 -0
- package/dist/extensions/long-running/constraints.d.ts +38 -0
- package/dist/extensions/long-running/constraints.d.ts.map +1 -0
- package/dist/extensions/long-running/constraints.js +153 -0
- package/dist/extensions/long-running/constraints.js.map +1 -0
- package/dist/extensions/long-running/index.d.ts +30 -0
- package/dist/extensions/long-running/index.d.ts.map +1 -0
- package/dist/extensions/long-running/index.js +50 -0
- package/dist/extensions/long-running/index.js.map +1 -0
- package/dist/extensions/long-running/types.d.ts +154 -0
- package/dist/extensions/long-running/types.d.ts.map +1 -0
- package/dist/extensions/long-running/types.js +9 -0
- package/dist/extensions/long-running/types.js.map +1 -0
- package/dist/knowledge/doctor.d.ts +37 -0
- package/dist/knowledge/doctor.d.ts.map +1 -0
- package/dist/knowledge/doctor.js +81 -0
- package/dist/knowledge/doctor.js.map +1 -0
- package/dist/knowledge/index.d.ts +1 -0
- package/dist/knowledge/index.d.ts.map +1 -1
- package/dist/knowledge/index.js +3 -1
- package/dist/knowledge/index.js.map +1 -1
- package/dist/knowledge/ingest.js +1 -1
- package/dist/knowledge/ingest.js.map +1 -1
- package/dist/knowledge/lifecycle.d.ts +4 -2
- package/dist/knowledge/lifecycle.d.ts.map +1 -1
- package/dist/knowledge/lifecycle.js +18 -3
- package/dist/knowledge/lifecycle.js.map +1 -1
- package/dist/knowledge/lint.d.ts +16 -0
- package/dist/knowledge/lint.d.ts.map +1 -1
- package/dist/knowledge/lint.js +84 -0
- package/dist/knowledge/lint.js.map +1 -1
- package/dist/knowledge/query.d.ts +3 -1
- package/dist/knowledge/query.d.ts.map +1 -1
- package/dist/knowledge/query.js +11 -1
- package/dist/knowledge/query.js.map +1 -1
- package/dist/knowledge/types.d.ts +2 -2
- package/dist/knowledge/types.d.ts.map +1 -1
- package/dist/presets/long-running.d.ts +33 -0
- package/dist/presets/long-running.d.ts.map +1 -0
- package/dist/presets/long-running.js +52 -0
- package/dist/presets/long-running.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-Running Agents 类型定义
|
|
3
|
+
*
|
|
4
|
+
* 来源:Anthropic Engineering Blog - Effective Harnesses for Long-Running Agents
|
|
5
|
+
* 参考:~/knowledge-base/projects/harness/anthropic-long-running-agents-roadmap.md
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 功能定义
|
|
9
|
+
*
|
|
10
|
+
* 用于 feature_list.json,记录项目级功能清单
|
|
11
|
+
*/
|
|
12
|
+
export interface FeatureDefinition {
|
|
13
|
+
/** 功能 ID */
|
|
14
|
+
id: string;
|
|
15
|
+
/** 功能分类 */
|
|
16
|
+
category: 'functional' | 'ui' | 'performance' | 'security';
|
|
17
|
+
/** 功能描述 */
|
|
18
|
+
description: string;
|
|
19
|
+
/** 测试步骤 */
|
|
20
|
+
steps: string[];
|
|
21
|
+
/** 是否通过 */
|
|
22
|
+
passes: boolean;
|
|
23
|
+
/** 优先级 */
|
|
24
|
+
priority: 'high' | 'medium' | 'low';
|
|
25
|
+
/** 依赖的其他功能 ID */
|
|
26
|
+
dependencies: string[];
|
|
27
|
+
/** 完成时间 */
|
|
28
|
+
completedAt?: string;
|
|
29
|
+
/** 完成的 session ID */
|
|
30
|
+
completedBy?: string;
|
|
31
|
+
/** 验证类型 */
|
|
32
|
+
verificationType: 'unit' | 'e2e' | 'manual';
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 功能清单
|
|
36
|
+
*/
|
|
37
|
+
export interface FeatureList {
|
|
38
|
+
/** 项目 ID */
|
|
39
|
+
projectId: string;
|
|
40
|
+
/** 项目名称 */
|
|
41
|
+
projectName: string;
|
|
42
|
+
/** 功能列表 */
|
|
43
|
+
features: FeatureDefinition[];
|
|
44
|
+
/** 创建时间 */
|
|
45
|
+
createdAt: string;
|
|
46
|
+
/** 更新时间 */
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 项目级进度
|
|
51
|
+
*
|
|
52
|
+
* 用于 claude-progress.json,跨 session 共享进度
|
|
53
|
+
*/
|
|
54
|
+
export interface ProjectProgress {
|
|
55
|
+
/** 项目 ID */
|
|
56
|
+
projectId: string;
|
|
57
|
+
/** 功能状态列表 */
|
|
58
|
+
features: FeatureStatus[];
|
|
59
|
+
/** Session 记录列表 */
|
|
60
|
+
sessions: SessionRecord[];
|
|
61
|
+
/** 最后更新时间 */
|
|
62
|
+
lastUpdate: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 功能状态
|
|
66
|
+
*/
|
|
67
|
+
export interface FeatureStatus {
|
|
68
|
+
/** 功能 ID */
|
|
69
|
+
featureId: string;
|
|
70
|
+
/** 状态 */
|
|
71
|
+
status: 'pending' | 'in_progress' | 'completed' | 'blocked';
|
|
72
|
+
/** 开始时间 */
|
|
73
|
+
startedAt?: string;
|
|
74
|
+
/** 完成时间 */
|
|
75
|
+
completedAt?: string;
|
|
76
|
+
/** 完成的 session 编号 */
|
|
77
|
+
completedBySession?: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Session 记录
|
|
81
|
+
*/
|
|
82
|
+
export interface SessionRecord {
|
|
83
|
+
/** Session 编号 */
|
|
84
|
+
sessionId: number;
|
|
85
|
+
/** 开始时间 */
|
|
86
|
+
startTime: string;
|
|
87
|
+
/** 结束时间 */
|
|
88
|
+
endTime: string;
|
|
89
|
+
/** 工作的功能 ID */
|
|
90
|
+
featureWorkedOn: string;
|
|
91
|
+
/** 结果 */
|
|
92
|
+
outcome: 'progress' | 'completed' | 'blocked' | 'failed';
|
|
93
|
+
/** 提交 hash 列表 */
|
|
94
|
+
commits: string[];
|
|
95
|
+
/** 进度说明 */
|
|
96
|
+
notes: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 测试步骤
|
|
100
|
+
*
|
|
101
|
+
* 用于 Puppeteer E2E 测试
|
|
102
|
+
*/
|
|
103
|
+
export interface TestStep {
|
|
104
|
+
/** 动作类型 */
|
|
105
|
+
action: 'navigate' | 'click' | 'type' | 'wait' | 'verify';
|
|
106
|
+
/** 步骤描述 */
|
|
107
|
+
description: string;
|
|
108
|
+
/** CSS 选择器 */
|
|
109
|
+
selector?: string;
|
|
110
|
+
/** URL */
|
|
111
|
+
url?: string;
|
|
112
|
+
/** 输入值 */
|
|
113
|
+
value?: string;
|
|
114
|
+
/** 期望值(用于 verify) */
|
|
115
|
+
expectedValue?: string;
|
|
116
|
+
/** 超时时间(毫秒) */
|
|
117
|
+
timeout?: number;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 步骤结果
|
|
121
|
+
*/
|
|
122
|
+
export interface StepResult {
|
|
123
|
+
/** 是否通过 */
|
|
124
|
+
passed: boolean;
|
|
125
|
+
/** 步骤描述 */
|
|
126
|
+
description: string;
|
|
127
|
+
/** 错误信息 */
|
|
128
|
+
error?: string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Puppeteer 测试输入
|
|
132
|
+
*/
|
|
133
|
+
export interface PuppeteerTestInput {
|
|
134
|
+
/** 功能定义 */
|
|
135
|
+
feature: FeatureDefinition;
|
|
136
|
+
/** 测试基础 URL */
|
|
137
|
+
baseUrl: string;
|
|
138
|
+
/** 自定义测试步骤(可选) */
|
|
139
|
+
steps?: TestStep[];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Puppeteer 测试结果
|
|
143
|
+
*/
|
|
144
|
+
export interface PuppeteerTestResult {
|
|
145
|
+
/** 是否通过 */
|
|
146
|
+
passed: boolean;
|
|
147
|
+
/** 每个步骤的结果 */
|
|
148
|
+
results: StepResult[];
|
|
149
|
+
/** 失败的步骤 */
|
|
150
|
+
failedStep?: string;
|
|
151
|
+
/** 截图(base64) */
|
|
152
|
+
screenshot?: string;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extensions/long-running/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Long-Running Agents 类型定义
|
|
4
|
+
*
|
|
5
|
+
* 来源:Anthropic Engineering Blog - Effective Harnesses for Long-Running Agents
|
|
6
|
+
* 参考:~/knowledge-base/projects/harness/anthropic-long-running-agents-roadmap.md
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/extensions/long-running/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Doctor — 知识库健康评分
|
|
3
|
+
*
|
|
4
|
+
* 计算整体健康分数,检测需要关注的问题。
|
|
5
|
+
* MonitorAgent 周期性调用,低于 60 分触发 Triage 告警。
|
|
6
|
+
*/
|
|
7
|
+
import { KnowledgeStore } from './store';
|
|
8
|
+
import { KnowledgeLinter } from './lint';
|
|
9
|
+
export interface HealthDetail {
|
|
10
|
+
category: string;
|
|
11
|
+
score: number;
|
|
12
|
+
message: string;
|
|
13
|
+
}
|
|
14
|
+
export interface HealthReport {
|
|
15
|
+
score: number;
|
|
16
|
+
details: HealthDetail[];
|
|
17
|
+
totalEntries: number;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class KnowledgeHealthScorer {
|
|
21
|
+
private store;
|
|
22
|
+
private linter;
|
|
23
|
+
constructor(store: KnowledgeStore, linter: KnowledgeLinter);
|
|
24
|
+
/**
|
|
25
|
+
* Calculate knowledge base health score (0-100).
|
|
26
|
+
*
|
|
27
|
+
* Scoring:
|
|
28
|
+
* - Start at 100
|
|
29
|
+
* - Orphans > 10% → -20
|
|
30
|
+
* - Outdated > 5% → -15
|
|
31
|
+
* - Duplicates > 5% → -25 (high weight)
|
|
32
|
+
* - Contradictions > 0 → -10 each
|
|
33
|
+
* - Index inconsistency → -30
|
|
34
|
+
*/
|
|
35
|
+
healthScore(): HealthReport;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/knowledge/doctor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGzC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe;IAK1D;;;;;;;;;;OAUG;IACH,WAAW,IAAI,YAAY;CA2D5B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Knowledge Doctor — 知识库健康评分
|
|
4
|
+
*
|
|
5
|
+
* 计算整体健康分数,检测需要关注的问题。
|
|
6
|
+
* MonitorAgent 周期性调用,低于 60 分触发 Triage 告警。
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.KnowledgeHealthScorer = void 0;
|
|
10
|
+
class KnowledgeHealthScorer {
|
|
11
|
+
store;
|
|
12
|
+
linter;
|
|
13
|
+
constructor(store, linter) {
|
|
14
|
+
this.store = store;
|
|
15
|
+
this.linter = linter;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Calculate knowledge base health score (0-100).
|
|
19
|
+
*
|
|
20
|
+
* Scoring:
|
|
21
|
+
* - Start at 100
|
|
22
|
+
* - Orphans > 10% → -20
|
|
23
|
+
* - Outdated > 5% → -15
|
|
24
|
+
* - Duplicates > 5% → -25 (high weight)
|
|
25
|
+
* - Contradictions > 0 → -10 each
|
|
26
|
+
* - Index inconsistency → -30
|
|
27
|
+
*/
|
|
28
|
+
healthScore() {
|
|
29
|
+
const entries = this.store.list({ excludeArchived: false });
|
|
30
|
+
const totalEntries = entries.length;
|
|
31
|
+
const report = this.linter.run(false); // don't autoFix, just report
|
|
32
|
+
const details = [];
|
|
33
|
+
let penalty = 0;
|
|
34
|
+
if (totalEntries === 0) {
|
|
35
|
+
return { score: 100, details: [{ category: 'empty', score: 0, message: 'Knowledge base is empty' }], totalEntries: 0, timestamp: new Date().toISOString() };
|
|
36
|
+
}
|
|
37
|
+
// Orphans
|
|
38
|
+
const orphanCount = report.summary.orphan;
|
|
39
|
+
const orphanRate = orphanCount / totalEntries;
|
|
40
|
+
if (orphanRate > 0.1) {
|
|
41
|
+
penalty += 20;
|
|
42
|
+
details.push({ category: 'orphans', score: -20, message: `Orphan rate ${(orphanRate * 100).toFixed(0)}% (>10%): ${orphanCount}/${totalEntries}` });
|
|
43
|
+
}
|
|
44
|
+
// Outdated
|
|
45
|
+
const outdatedCount = report.summary.outdated;
|
|
46
|
+
const outdatedRate = outdatedCount / totalEntries;
|
|
47
|
+
if (outdatedRate > 0.05) {
|
|
48
|
+
penalty += 15;
|
|
49
|
+
details.push({ category: 'outdated', score: -15, message: `Outdated rate ${(outdatedRate * 100).toFixed(0)}% (>5%): ${outdatedCount}/${totalEntries}` });
|
|
50
|
+
}
|
|
51
|
+
// Duplicates (high weight)
|
|
52
|
+
const dupCount = report.summary.duplicate;
|
|
53
|
+
const dupRate = dupCount / totalEntries;
|
|
54
|
+
if (dupRate > 0.05) {
|
|
55
|
+
penalty += 25;
|
|
56
|
+
details.push({ category: 'duplicates', score: -25, message: `Duplicate rate ${(dupRate * 100).toFixed(0)}% (>5%): ${dupCount}/${totalEntries}` });
|
|
57
|
+
}
|
|
58
|
+
// Contradictions
|
|
59
|
+
const contradictionCount = report.summary.contradiction;
|
|
60
|
+
if (contradictionCount > 0) {
|
|
61
|
+
const contradictionPenalty = Math.min(contradictionCount * 10, 30);
|
|
62
|
+
penalty += contradictionPenalty;
|
|
63
|
+
details.push({ category: 'contradictions', score: -contradictionPenalty, message: `${contradictionCount} contradictions found` });
|
|
64
|
+
}
|
|
65
|
+
// Index inconsistency
|
|
66
|
+
const indexCount = report.summary.index_inconsistent;
|
|
67
|
+
if (indexCount > 0) {
|
|
68
|
+
penalty += 30;
|
|
69
|
+
details.push({ category: 'index', score: -30, message: `Index inconsistency: ${indexCount} issues` });
|
|
70
|
+
}
|
|
71
|
+
const score = Math.max(0, 100 - penalty);
|
|
72
|
+
return {
|
|
73
|
+
score,
|
|
74
|
+
details,
|
|
75
|
+
totalEntries,
|
|
76
|
+
timestamp: new Date().toISOString(),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.KnowledgeHealthScorer = KnowledgeHealthScorer;
|
|
81
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/knowledge/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,5 +11,6 @@ export { KnowledgeIngest } from './ingest';
|
|
|
11
11
|
export { ReferenceTracker } from './reference-tracker';
|
|
12
12
|
export { KnowledgeLinter } from './lint';
|
|
13
13
|
export { ColdStartImporter } from './import';
|
|
14
|
+
export { KnowledgeHealthScorer } from './doctor';
|
|
14
15
|
export { KnowledgeLifecycleHooks } from './lifecycle-hooks';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/knowledge/index.js
CHANGED
|
@@ -19,7 +19,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
19
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.KnowledgeLifecycleHooks = exports.ColdStartImporter = exports.KnowledgeLinter = exports.ReferenceTracker = exports.KnowledgeIngest = exports.KnowledgeLifecycle = exports.KnowledgeQuery = exports.KnowledgeStore = void 0;
|
|
22
|
+
exports.KnowledgeLifecycleHooks = exports.KnowledgeHealthScorer = exports.ColdStartImporter = exports.KnowledgeLinter = exports.ReferenceTracker = exports.KnowledgeIngest = exports.KnowledgeLifecycle = exports.KnowledgeQuery = exports.KnowledgeStore = void 0;
|
|
23
23
|
__exportStar(require("./types"), exports);
|
|
24
24
|
var store_1 = require("./store");
|
|
25
25
|
Object.defineProperty(exports, "KnowledgeStore", { enumerable: true, get: function () { return store_1.KnowledgeStore; } });
|
|
@@ -35,6 +35,8 @@ var lint_1 = require("./lint");
|
|
|
35
35
|
Object.defineProperty(exports, "KnowledgeLinter", { enumerable: true, get: function () { return lint_1.KnowledgeLinter; } });
|
|
36
36
|
var import_1 = require("./import");
|
|
37
37
|
Object.defineProperty(exports, "ColdStartImporter", { enumerable: true, get: function () { return import_1.ColdStartImporter; } });
|
|
38
|
+
var doctor_1 = require("./doctor");
|
|
39
|
+
Object.defineProperty(exports, "KnowledgeHealthScorer", { enumerable: true, get: function () { return doctor_1.KnowledgeHealthScorer; } });
|
|
38
40
|
var lifecycle_hooks_1 = require("./lifecycle-hooks");
|
|
39
41
|
Object.defineProperty(exports, "KnowledgeLifecycleHooks", { enumerable: true, get: function () { return lifecycle_hooks_1.KnowledgeLifecycleHooks; } });
|
|
40
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AACvB,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AACvB,yCAAiD;AAAxC,+GAAA,kBAAkB,OAAA;AAC3B,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,qDAA4D;AAAnD,0HAAA,uBAAuB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AACvB,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AACvB,yCAAiD;AAAxC,+GAAA,kBAAkB,OAAA;AAC3B,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,+BAAyC;AAAhC,uGAAA,eAAe,OAAA;AACxB,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,qDAA4D;AAAnD,0HAAA,uBAAuB,OAAA"}
|
package/dist/knowledge/ingest.js
CHANGED
|
@@ -49,7 +49,7 @@ class KnowledgeIngest {
|
|
|
49
49
|
maturity: options.maturity || partial.maturity || 'draft',
|
|
50
50
|
layer: options.layer,
|
|
51
51
|
created: partial.created || now,
|
|
52
|
-
lastReferenced: partial.lastReferenced ||
|
|
52
|
+
lastReferenced: partial.lastReferenced || now,
|
|
53
53
|
contributors: partial.contributors || [],
|
|
54
54
|
projects: partial.projects || options.projects || [],
|
|
55
55
|
tags: [...new Set([...(partial.tags || []), ...(options.tags || [])])],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/knowledge/ingest.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAWH,8DAA8D;AAE9D,MAAa,eAAe;IAClB,KAAK,CAAiB;IAE9B,YAAY,KAAqB;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,WAAW,CACT,OAAgC,EAChC,OAAsB;QAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhD,sCAAsC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,QAAQ,EAAE,CAAC;YACb,6DAA6D;YAC7D,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,WAAW,CACT,QAAmC,EACnC,OAAsB;QAEtB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,8DAA8D;IAEtD,UAAU,CAChB,OAAgC,EAChC,OAAsB;QAEtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO;YACL,EAAE;YACF,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO;YACzD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG;YAC/B,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/knowledge/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export declare class KnowledgeLifecycle {
|
|
|
12
12
|
constructor(store: KnowledgeStore, config?: Partial<DecayConfig>);
|
|
13
13
|
/**
|
|
14
14
|
* Record that an entry was referenced.
|
|
15
|
-
* Updates lastReferenced timestamp and
|
|
15
|
+
* Updates lastReferenced timestamp, contributors, and referencedBy.
|
|
16
16
|
*/
|
|
17
17
|
recordReference(entryId: string, contributor?: string): KnowledgeEntry | undefined;
|
|
18
18
|
/**
|
|
@@ -21,7 +21,9 @@ export declare class KnowledgeLifecycle {
|
|
|
21
21
|
*
|
|
22
22
|
* Rules:
|
|
23
23
|
* - draft → verified: lastReferenced is set (referenced at least once)
|
|
24
|
-
* - verified → proven:
|
|
24
|
+
* - verified → proven: two paths
|
|
25
|
+
* A) Multi-project: contributors >= 3 AND projects >= 2
|
|
26
|
+
* B) Single-project: referencedBy >= 3 AND sourceReferences from 2+ distinct workflows
|
|
25
27
|
*/
|
|
26
28
|
checkPromotion(entryId: string): MaturityLevel | undefined;
|
|
27
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAc;gBAEhB,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAKhE;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAc;gBAEhB,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAKhE;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAqBlF;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IA6B1D;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IA2B3D;;;OAGG;IACH,aAAa,IAAI,cAAc,EAAE;IAqBjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAmBvD,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -18,7 +18,7 @@ class KnowledgeLifecycle {
|
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Record that an entry was referenced.
|
|
21
|
-
* Updates lastReferenced timestamp and
|
|
21
|
+
* Updates lastReferenced timestamp, contributors, and referencedBy.
|
|
22
22
|
*/
|
|
23
23
|
recordReference(entryId, contributor) {
|
|
24
24
|
const entry = this.store.get(entryId);
|
|
@@ -28,9 +28,14 @@ class KnowledgeLifecycle {
|
|
|
28
28
|
const contributors = contributor && !entry.contributors.includes(contributor)
|
|
29
29
|
? [...entry.contributors, contributor]
|
|
30
30
|
: entry.contributors;
|
|
31
|
+
const refKey = `${contributor || 'unknown'}:${now.slice(0, 10)}`;
|
|
32
|
+
const referencedBy = entry.referencedBy.includes(refKey)
|
|
33
|
+
? entry.referencedBy
|
|
34
|
+
: [...entry.referencedBy, refKey];
|
|
31
35
|
return this.store.update(entryId, {
|
|
32
36
|
lastReferenced: now,
|
|
33
37
|
contributors,
|
|
38
|
+
referencedBy,
|
|
34
39
|
});
|
|
35
40
|
}
|
|
36
41
|
/**
|
|
@@ -39,7 +44,9 @@ class KnowledgeLifecycle {
|
|
|
39
44
|
*
|
|
40
45
|
* Rules:
|
|
41
46
|
* - draft → verified: lastReferenced is set (referenced at least once)
|
|
42
|
-
* - verified → proven:
|
|
47
|
+
* - verified → proven: two paths
|
|
48
|
+
* A) Multi-project: contributors >= 3 AND projects >= 2
|
|
49
|
+
* B) Single-project: referencedBy >= 3 AND sourceReferences from 2+ distinct workflows
|
|
43
50
|
*/
|
|
44
51
|
checkPromotion(entryId) {
|
|
45
52
|
const entry = this.store.get(entryId);
|
|
@@ -50,11 +57,19 @@ class KnowledgeLifecycle {
|
|
|
50
57
|
if (entry.lastReferenced)
|
|
51
58
|
return 'verified';
|
|
52
59
|
return undefined;
|
|
53
|
-
case 'verified':
|
|
60
|
+
case 'verified': {
|
|
61
|
+
// Path A: multi-project validation
|
|
54
62
|
if (entry.contributors.length >= 3 && entry.projects.length >= 2) {
|
|
55
63
|
return 'proven';
|
|
56
64
|
}
|
|
65
|
+
// Path B: single-project — multiple independent references from different sources
|
|
66
|
+
const refCount = entry.referencedBy?.length || 0;
|
|
67
|
+
const distinctSources = new Set(entry.sourceReferences?.map(s => s.workflow).filter(Boolean) || []);
|
|
68
|
+
if (refCount >= 3 && distinctSources.size >= 2) {
|
|
69
|
+
return 'proven';
|
|
70
|
+
}
|
|
57
71
|
return undefined;
|
|
72
|
+
}
|
|
58
73
|
case 'proven':
|
|
59
74
|
case 'archived':
|
|
60
75
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAQH,mCAA+C;AAG/C,8DAA8D;AAE9D,MAAa,kBAAkB;IACrB,KAAK,CAAiB;IACtB,MAAM,CAAc;IAE5B,YAAY,KAAqB,EAAE,MAA6B;QAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,4BAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,OAAe,EAAE,WAAoB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3E,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAEvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YAChC,cAAc,EAAE,GAAG;YACnB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/knowledge/lint.d.ts
CHANGED
|
@@ -49,6 +49,22 @@ export declare class KnowledgeLinter {
|
|
|
49
49
|
* 简单实现:同 tag 组合下成熟度冲突
|
|
50
50
|
*/
|
|
51
51
|
checkContradictions(entries: KnowledgeEntry[]): LintIssue[];
|
|
52
|
+
/**
|
|
53
|
+
* P2.5: Validate a single entry before ingestion.
|
|
54
|
+
* Returns a list of issues (empty = valid, ready to ingest).
|
|
55
|
+
*
|
|
56
|
+
* Checks:
|
|
57
|
+
* - Content too short (< 20 chars) → reject
|
|
58
|
+
* - Title too vague (common stop words only) → flag
|
|
59
|
+
* - Contradicts a proven entry with same tags → reject
|
|
60
|
+
* - Near-duplicate of existing entry (title similarity > 80%) → flag merge
|
|
61
|
+
*/
|
|
62
|
+
validateEntry(entry: {
|
|
63
|
+
title: string;
|
|
64
|
+
content: string;
|
|
65
|
+
tags: string[];
|
|
66
|
+
type: string;
|
|
67
|
+
}): LintIssue[];
|
|
52
68
|
/**
|
|
53
69
|
* 自动修复可修复的问题
|
|
54
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/knowledge/lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAEvF,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAmB;gBAEtB,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB;IAK5D;;OAEG;IACH,GAAG,CAAC,OAAO,GAAE,OAAe,GAAG,UAAU;IAsCzC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IAoC7D;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IAyBpD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IA0BrD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IA+BvD;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IA0C3D;;OAEG;IACH,OAAO,CAAC,OAAO;CAkBhB"}
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/knowledge/lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAEvF,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAmB;gBAEtB,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB;IAK5D;;OAEG;IACH,GAAG,CAAC,OAAO,GAAE,OAAe,GAAG,UAAU;IAsCzC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IAoC7D;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IAyBpD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IA0BrD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IA+BvD;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE;IA0C3D;;;;;;;;;OASG;IACH,aAAa,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAAE;IA6EnG;;OAEG;IACH,OAAO,CAAC,OAAO;CAkBhB"}
|
package/dist/knowledge/lint.js
CHANGED
|
@@ -212,6 +212,90 @@ class KnowledgeLinter {
|
|
|
212
212
|
}
|
|
213
213
|
return issues;
|
|
214
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* P2.5: Validate a single entry before ingestion.
|
|
217
|
+
* Returns a list of issues (empty = valid, ready to ingest).
|
|
218
|
+
*
|
|
219
|
+
* Checks:
|
|
220
|
+
* - Content too short (< 20 chars) → reject
|
|
221
|
+
* - Title too vague (common stop words only) → flag
|
|
222
|
+
* - Contradicts a proven entry with same tags → reject
|
|
223
|
+
* - Near-duplicate of existing entry (title similarity > 80%) → flag merge
|
|
224
|
+
*/
|
|
225
|
+
validateEntry(entry) {
|
|
226
|
+
const issues = [];
|
|
227
|
+
// Content too short
|
|
228
|
+
if ((entry.content || '').length < 20) {
|
|
229
|
+
issues.push({
|
|
230
|
+
type: 'orphan',
|
|
231
|
+
severity: 'high',
|
|
232
|
+
description: `Content too short (${entry.content.length} chars). LLM may have hallucinated.`,
|
|
233
|
+
suggestion: 'Reject — re-extract with better prompt or discard.',
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// Title too vague
|
|
237
|
+
const vaguePatterns = /^(错误|失败|问题|异常|bug|error|fail|issue|problem|unknown|untitled)$/i;
|
|
238
|
+
if (vaguePatterns.test(entry.title.trim())) {
|
|
239
|
+
issues.push({
|
|
240
|
+
type: 'contradiction',
|
|
241
|
+
severity: 'medium',
|
|
242
|
+
description: `Title "${entry.title}" is too vague to be useful.`,
|
|
243
|
+
suggestion: 'Re-extract with root cause in title, not symptom.',
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
// Contradicts proven entry with same tags
|
|
247
|
+
if (entry.tags.length > 0) {
|
|
248
|
+
const allEntries = this.store.list({ excludeArchived: false });
|
|
249
|
+
for (const existing of allEntries) {
|
|
250
|
+
if (existing.maturity !== 'proven')
|
|
251
|
+
continue;
|
|
252
|
+
if (existing.type !== entry.type)
|
|
253
|
+
continue;
|
|
254
|
+
const sharedTags = entry.tags.filter(t => existing.tags.includes(t));
|
|
255
|
+
if (sharedTags.length >= 2) {
|
|
256
|
+
issues.push({
|
|
257
|
+
type: 'contradiction',
|
|
258
|
+
entryId: existing.id,
|
|
259
|
+
severity: 'high',
|
|
260
|
+
description: `New entry "${entry.title}" shares tags [${sharedTags.join(', ')}] with proven entry "${existing.title}" (${existing.id}). Contradiction risk.`,
|
|
261
|
+
suggestion: `Review against ${existing.id}. If aligned, merge. If contradictory, flag for human review.`,
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Near-duplicate title check (simple: case-insensitive substring match)
|
|
267
|
+
if (entry.title.length > 10) {
|
|
268
|
+
const allEntries = this.store.list({ excludeArchived: false });
|
|
269
|
+
for (const existing of allEntries) {
|
|
270
|
+
if (existing.id === entry.title)
|
|
271
|
+
continue; // not same entry (entry doesn't have id yet)
|
|
272
|
+
const existingTitle = existing.title.toLowerCase();
|
|
273
|
+
const newTitle = entry.title.toLowerCase();
|
|
274
|
+
if (existingTitle === newTitle) {
|
|
275
|
+
issues.push({
|
|
276
|
+
type: 'duplicate',
|
|
277
|
+
entryId: existing.id,
|
|
278
|
+
severity: 'medium',
|
|
279
|
+
description: `Exact title match with existing entry "${existing.title}" (${existing.id}).`,
|
|
280
|
+
suggestion: `Merge into ${existing.id} instead of creating duplicate.`,
|
|
281
|
+
});
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
// Check high similarity (either title contains the other)
|
|
285
|
+
if (existingTitle.includes(newTitle) || newTitle.includes(existingTitle)) {
|
|
286
|
+
issues.push({
|
|
287
|
+
type: 'duplicate',
|
|
288
|
+
entryId: existing.id,
|
|
289
|
+
severity: 'low',
|
|
290
|
+
description: `Title similarity with existing "${existing.title}" (${existing.id}).`,
|
|
291
|
+
suggestion: `Consider merging with ${existing.id}.`,
|
|
292
|
+
});
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return issues;
|
|
298
|
+
}
|
|
215
299
|
/**
|
|
216
300
|
* 自动修复可修复的问题
|
|
217
301
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/knowledge/lint.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/knowledge/lint.ts"],"names":[],"mappings":"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"}
|