@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.
Files changed (111) hide show
  1. package/bin/harness-knowledge-capture.js +99 -0
  2. package/bin/harness-knowledge-check.js +63 -0
  3. package/bin/harness-knowledge-track.js +92 -0
  4. package/bin/harness-knowledge-track.sh +34 -0
  5. package/bin/harness.js +81 -0
  6. package/dist/cli/commands/analyze-sessions.d.ts +17 -0
  7. package/dist/cli/commands/analyze-sessions.d.ts.map +1 -0
  8. package/dist/cli/commands/analyze-sessions.js +445 -0
  9. package/dist/cli/commands/analyze-sessions.js.map +1 -0
  10. package/dist/cli/commands/diagnose.d.ts +16 -0
  11. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  12. package/dist/cli/commands/diagnose.js +195 -0
  13. package/dist/cli/commands/diagnose.js.map +1 -0
  14. package/dist/cli/commands/index.d.ts +5 -1
  15. package/dist/cli/commands/index.d.ts.map +1 -1
  16. package/dist/cli/commands/index.js +12 -1
  17. package/dist/cli/commands/index.js.map +1 -1
  18. package/dist/cli/commands/init.js +28 -6
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/commands/knowledge.d.ts +23 -0
  21. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  22. package/dist/cli/commands/knowledge.js +164 -0
  23. package/dist/cli/commands/knowledge.js.map +1 -1
  24. package/dist/cli/commands/posteval-plan.d.ts +11 -0
  25. package/dist/cli/commands/posteval-plan.d.ts.map +1 -0
  26. package/dist/cli/commands/posteval-plan.js +76 -0
  27. package/dist/cli/commands/posteval-plan.js.map +1 -0
  28. package/dist/cli/commands/propose.d.ts +18 -0
  29. package/dist/cli/commands/propose.d.ts.map +1 -0
  30. package/dist/cli/commands/propose.js +331 -0
  31. package/dist/cli/commands/propose.js.map +1 -0
  32. package/dist/cli/commands/release.d.ts +13 -0
  33. package/dist/cli/commands/release.d.ts.map +1 -0
  34. package/dist/cli/commands/release.js +175 -0
  35. package/dist/cli/commands/release.js.map +1 -0
  36. package/dist/cli/commands/traces.d.ts +15 -0
  37. package/dist/cli/commands/traces.d.ts.map +1 -0
  38. package/dist/cli/commands/traces.js +167 -0
  39. package/dist/cli/commands/traces.js.map +1 -0
  40. package/dist/cli/commands/update-user-model.d.ts +21 -0
  41. package/dist/cli/commands/update-user-model.d.ts.map +1 -0
  42. package/dist/cli/commands/update-user-model.js +475 -0
  43. package/dist/cli/commands/update-user-model.js.map +1 -0
  44. package/dist/constraints/definitions.d.ts +39 -0
  45. package/dist/constraints/definitions.d.ts.map +1 -0
  46. package/dist/constraints/definitions.js +71 -0
  47. package/dist/constraints/definitions.js.map +1 -0
  48. package/dist/constraints/quality.d.ts +11 -0
  49. package/dist/constraints/quality.d.ts.map +1 -0
  50. package/dist/constraints/quality.js +257 -0
  51. package/dist/constraints/quality.js.map +1 -0
  52. package/dist/constraints/safety.d.ts +13 -0
  53. package/dist/constraints/safety.d.ts.map +1 -0
  54. package/dist/constraints/safety.js +103 -0
  55. package/dist/constraints/safety.js.map +1 -0
  56. package/dist/core/constraints/checker.d.ts +5 -0
  57. package/dist/core/constraints/checker.d.ts.map +1 -1
  58. package/dist/core/constraints/checker.js +44 -11
  59. package/dist/core/constraints/checker.js.map +1 -1
  60. package/dist/core/constraints/definitions.d.ts.map +1 -1
  61. package/dist/core/constraints/definitions.js +28 -0
  62. package/dist/core/constraints/definitions.js.map +1 -1
  63. package/dist/core/constraints/index.d.ts +1 -0
  64. package/dist/core/constraints/index.d.ts.map +1 -1
  65. package/dist/core/constraints/index.js +4 -1
  66. package/dist/core/constraints/index.js.map +1 -1
  67. package/dist/core/constraints/prompt-injection.d.ts +13 -0
  68. package/dist/core/constraints/prompt-injection.d.ts.map +1 -0
  69. package/dist/core/constraints/prompt-injection.js +67 -0
  70. package/dist/core/constraints/prompt-injection.js.map +1 -0
  71. package/dist/extensions/long-running/constraints.d.ts +38 -0
  72. package/dist/extensions/long-running/constraints.d.ts.map +1 -0
  73. package/dist/extensions/long-running/constraints.js +153 -0
  74. package/dist/extensions/long-running/constraints.js.map +1 -0
  75. package/dist/extensions/long-running/index.d.ts +30 -0
  76. package/dist/extensions/long-running/index.d.ts.map +1 -0
  77. package/dist/extensions/long-running/index.js +50 -0
  78. package/dist/extensions/long-running/index.js.map +1 -0
  79. package/dist/extensions/long-running/types.d.ts +154 -0
  80. package/dist/extensions/long-running/types.d.ts.map +1 -0
  81. package/dist/extensions/long-running/types.js +9 -0
  82. package/dist/extensions/long-running/types.js.map +1 -0
  83. package/dist/knowledge/doctor.d.ts +37 -0
  84. package/dist/knowledge/doctor.d.ts.map +1 -0
  85. package/dist/knowledge/doctor.js +81 -0
  86. package/dist/knowledge/doctor.js.map +1 -0
  87. package/dist/knowledge/index.d.ts +1 -0
  88. package/dist/knowledge/index.d.ts.map +1 -1
  89. package/dist/knowledge/index.js +3 -1
  90. package/dist/knowledge/index.js.map +1 -1
  91. package/dist/knowledge/ingest.js +1 -1
  92. package/dist/knowledge/ingest.js.map +1 -1
  93. package/dist/knowledge/lifecycle.d.ts +4 -2
  94. package/dist/knowledge/lifecycle.d.ts.map +1 -1
  95. package/dist/knowledge/lifecycle.js +18 -3
  96. package/dist/knowledge/lifecycle.js.map +1 -1
  97. package/dist/knowledge/lint.d.ts +16 -0
  98. package/dist/knowledge/lint.d.ts.map +1 -1
  99. package/dist/knowledge/lint.js +84 -0
  100. package/dist/knowledge/lint.js.map +1 -1
  101. package/dist/knowledge/query.d.ts +3 -1
  102. package/dist/knowledge/query.d.ts.map +1 -1
  103. package/dist/knowledge/query.js +11 -1
  104. package/dist/knowledge/query.js.map +1 -1
  105. package/dist/knowledge/types.d.ts +2 -2
  106. package/dist/knowledge/types.d.ts.map +1 -1
  107. package/dist/presets/long-running.d.ts +33 -0
  108. package/dist/presets/long-running.d.ts.map +1 -0
  109. package/dist/presets/long-running.js +52 -0
  110. package/dist/presets/long-running.js.map +1 -0
  111. 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"}
@@ -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"}
@@ -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":"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"}
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 contributors.
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: referenced ≥3 times (contributors count as proxy) + ≥2 projects
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;IAelF;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAqB1D;;;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"}
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 contributors.
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: referenced ≥3 times (contributors count as proxy) + ≥2 projects
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":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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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"}