@dommaker/harness 0.12.5 → 0.12.9

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 (64) 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/index.d.ts +5 -1
  11. package/dist/cli/commands/index.d.ts.map +1 -1
  12. package/dist/cli/commands/index.js +12 -1
  13. package/dist/cli/commands/index.js.map +1 -1
  14. package/dist/cli/commands/init.js +28 -6
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/knowledge.d.ts +23 -0
  17. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  18. package/dist/cli/commands/knowledge.js +164 -0
  19. package/dist/cli/commands/knowledge.js.map +1 -1
  20. package/dist/cli/commands/posteval-plan.d.ts +11 -0
  21. package/dist/cli/commands/posteval-plan.d.ts.map +1 -0
  22. package/dist/cli/commands/posteval-plan.js +76 -0
  23. package/dist/cli/commands/posteval-plan.js.map +1 -0
  24. package/dist/cli/commands/release.d.ts +13 -0
  25. package/dist/cli/commands/release.d.ts.map +1 -0
  26. package/dist/cli/commands/release.js +194 -0
  27. package/dist/cli/commands/release.js.map +1 -0
  28. package/dist/cli/commands/update-user-model.d.ts +21 -0
  29. package/dist/cli/commands/update-user-model.d.ts.map +1 -0
  30. package/dist/cli/commands/update-user-model.js +475 -0
  31. package/dist/cli/commands/update-user-model.js.map +1 -0
  32. package/dist/core/constraints/index.d.ts +1 -0
  33. package/dist/core/constraints/index.d.ts.map +1 -1
  34. package/dist/core/constraints/index.js +4 -1
  35. package/dist/core/constraints/index.js.map +1 -1
  36. package/dist/core/constraints/prompt-injection.d.ts +13 -0
  37. package/dist/core/constraints/prompt-injection.d.ts.map +1 -0
  38. package/dist/core/constraints/prompt-injection.js +67 -0
  39. package/dist/core/constraints/prompt-injection.js.map +1 -0
  40. package/dist/knowledge/doctor.d.ts +37 -0
  41. package/dist/knowledge/doctor.d.ts.map +1 -0
  42. package/dist/knowledge/doctor.js +81 -0
  43. package/dist/knowledge/doctor.js.map +1 -0
  44. package/dist/knowledge/index.d.ts +1 -0
  45. package/dist/knowledge/index.d.ts.map +1 -1
  46. package/dist/knowledge/index.js +3 -1
  47. package/dist/knowledge/index.js.map +1 -1
  48. package/dist/knowledge/ingest.js +1 -1
  49. package/dist/knowledge/ingest.js.map +1 -1
  50. package/dist/knowledge/lifecycle.d.ts +4 -2
  51. package/dist/knowledge/lifecycle.d.ts.map +1 -1
  52. package/dist/knowledge/lifecycle.js +18 -3
  53. package/dist/knowledge/lifecycle.js.map +1 -1
  54. package/dist/knowledge/lint.d.ts +16 -0
  55. package/dist/knowledge/lint.d.ts.map +1 -1
  56. package/dist/knowledge/lint.js +84 -0
  57. package/dist/knowledge/lint.js.map +1 -1
  58. package/dist/knowledge/query.d.ts +3 -1
  59. package/dist/knowledge/query.d.ts.map +1 -1
  60. package/dist/knowledge/query.js +11 -1
  61. package/dist/knowledge/query.js.map +1 -1
  62. package/dist/knowledge/types.d.ts +2 -2
  63. package/dist/knowledge/types.d.ts.map +1 -1
  64. package/package.json +1 -1
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Constraint Prompt Injection — 将 harness 约束的前置声明注入 Agent prompt
4
+ *
5
+ * Agent prompt 已有的 promptInjection 字段但从未被消费。
6
+ * 此处将其按 agent role 路由,让 Agent 在行动前就知道约束。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.formatConstraintsForPrompt = formatConstraintsForPrompt;
10
+ const definitions_1 = require("./definitions");
11
+ const ROLE_TRIGGERS = {
12
+ analyst: ['design_request', 'api_change', 'code_implementation'],
13
+ executor: ['code_implementation', 'task_completion_claim', 'test_creation', 'api_change', 'file_modification', 'module_modification', 'module_creation'],
14
+ integration: ['code_implementation'],
15
+ reviewer: ['code_implementation'],
16
+ deploy: [],
17
+ monitor: [],
18
+ triage: [],
19
+ };
20
+ /**
21
+ * Format all applicable constraints as a prompt injection section for a given agent role.
22
+ * Uses the existing promptInjection field from each constraint definition.
23
+ */
24
+ function formatConstraintsForPrompt(role) {
25
+ const allConstraints = (0, definitions_1.getAllConstraints)();
26
+ const triggers = ROLE_TRIGGERS[role] || [];
27
+ if (triggers.length === 0)
28
+ return '';
29
+ const applicable = Object.values(allConstraints).filter(c => {
30
+ const ct = c.trigger;
31
+ if (Array.isArray(ct))
32
+ return ct.some(t => triggers.includes(t));
33
+ return triggers.includes(ct);
34
+ });
35
+ if (applicable.length === 0)
36
+ return '';
37
+ const ironLaws = applicable.filter(c => c.level === 'iron_law');
38
+ const guidelines = applicable.filter(c => c.level === 'guideline');
39
+ const tips = applicable.filter(c => c.level === 'tip');
40
+ const lines = ['\n## 行为约束(前置声明)\n'];
41
+ if (ironLaws.length > 0) {
42
+ lines.push('### 铁律(绝对禁止,无例外)\n');
43
+ for (const c of ironLaws) {
44
+ if (c.promptInjection)
45
+ lines.push(`- **${c.id}**: ${c.promptInjection}`);
46
+ }
47
+ lines.push('');
48
+ }
49
+ if (guidelines.length > 0) {
50
+ lines.push('### 指导原则(优先建议)\n');
51
+ for (const c of guidelines) {
52
+ if (c.promptInjection)
53
+ lines.push(`- **${c.id}**: ${c.promptInjection}`);
54
+ }
55
+ lines.push('');
56
+ }
57
+ if (tips.length > 0) {
58
+ lines.push('### 提示\n');
59
+ for (const c of tips) {
60
+ if (c.promptInjection)
61
+ lines.push(`- **${c.id}**: ${c.promptInjection}`);
62
+ }
63
+ lines.push('');
64
+ }
65
+ return lines.join('\n');
66
+ }
67
+ //# sourceMappingURL=prompt-injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-injection.js","sourceRoot":"","sources":["../../../src/core/constraints/prompt-injection.ts"],"names":[],"mappings":"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"}
@@ -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":";AAAA;;;;;;;;;;GAUG;;;AAcH,MAAa,eAAe;IAClB,KAAK,CAAiB;IACtB,OAAO,CAAmB;IAElC,YAAY,KAAqB,EAAE,OAAyB;QAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,UAAmB,KAAK;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,OAAO;QACP,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAElD,OAAO;QACP,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK;QACL,MAAM,OAAO,GAAkC;YAC7C,MAAM,EAAE,CAAC;YACT,aAAa,EAAE,CAAC;YAChB,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,kBAAkB,EAAE,CAAC;SACtB,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,MAAM;YACN,KAAK;YACL,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,OAAyB;QAC7C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAExC,mBAAmB;QACnB,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,UAAU,CAAC,EAAE;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE,QAAQ,UAAU,CAAC,EAAE,QAAQ;oBAC1C,UAAU,EAAE,aAAa;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE,MAAM,KAAK,CAAC,EAAE,QAAQ;oBACnC,UAAU,EAAE,MAAM;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAyB;QACpC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YACtD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAE9C,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACrF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,kBAAkB;oBAC7D,UAAU,EAAE,cAAc;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAyB;QACrC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QAChC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAEnD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC;YAExC,IAAI,YAAY,GAAG,YAAY,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,sBAAsB;oBACjE,UAAU,EAAE,YAAY;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAyB;QACvC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEjD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAE5C,6BAA6B;YAC7B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,QAAQ,EAAE,KAAK;wBACf,WAAW,EAAE,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,kBAAkB;wBAC7D,UAAU,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACvD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,OAAyB;QAC3C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEvD,aAAa;QACb,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAC5C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YAE/B,MAAM,aAAa,GAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAErC,kCAAkC;YAClC,IAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;gBAClE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,QAAQ,EAAE,MAAM;wBAChB,WAAW,EAAE,MAAM,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,qBAAqB;wBAChE,UAAU,EAAE,SAAS,MAAM,gBAAgB;qBAC5C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,MAAmB;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1B,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,wBAAwB;YACjC,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC3D,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAxPD,0CAwPC"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/knowledge/lint.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,12 @@
6
6
  */
7
7
  import type { QueryBudget, QueryResult, QueryFilter } from './types';
8
8
  import { KnowledgeStore } from './store';
9
+ import { KnowledgeLifecycle } from './lifecycle';
9
10
  export declare class KnowledgeQuery {
10
11
  private store;
12
+ private lifecycle;
11
13
  private cache;
12
- constructor(store: KnowledgeStore);
14
+ constructor(store: KnowledgeStore, lifecycle?: KnowledgeLifecycle);
13
15
  /**
14
16
  * Query knowledge entries within a token budget.
15
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/knowledge/query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAKV,WAAW,EACX,WAAW,EACX,WAAW,EAEZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAqBzC,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAAiC;gBAElC,KAAK,EAAE,cAAc;IAIjC;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW;IAuB7D;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAapC,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,QAAQ;CAGjB"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/knowledge/query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAKV,WAAW,EACX,WAAW,EACX,WAAW,EAEZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAqBjD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,KAAK,CAAiC;gBAElC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,kBAAkB;IAKjE;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW;IA+B7D;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAapC,6BAA6B;IAC7B,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,QAAQ;CAGjB"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.KnowledgeQuery = void 0;
10
+ const lifecycle_1 = require("./lifecycle");
10
11
  // ── Constants ──────────────────────────────────────────────
11
12
  const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
12
13
  const MATURITY_RANK = {
@@ -18,9 +19,11 @@ const MATURITY_RANK = {
18
19
  // ── Query Engine ───────────────────────────────────────────
19
20
  class KnowledgeQuery {
20
21
  store;
22
+ lifecycle;
21
23
  cache = new Map();
22
- constructor(store) {
24
+ constructor(store, lifecycle) {
23
25
  this.store = store;
26
+ this.lifecycle = lifecycle || new lifecycle_1.KnowledgeLifecycle(store);
24
27
  }
25
28
  /**
26
29
  * Query knowledge entries within a token budget.
@@ -47,6 +50,13 @@ class KnowledgeQuery {
47
50
  const { entries, tokensUsed, truncated } = this.applyBudget(sorted, budget);
48
51
  const result = { entries, tokensUsed, truncated, fromCache: false };
49
52
  this.cache.set(cacheKey, { result, timestamp: Date.now() });
53
+ // P2a: Record references for all returned entries (drives maturity ladder)
54
+ for (const entry of entries) {
55
+ try {
56
+ this.lifecycle.recordReference(entry.id);
57
+ }
58
+ catch { /* non-blocking */ }
59
+ }
50
60
  return result;
51
61
  }
52
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/knowledge/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/knowledge/query.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,9 @@
6
6
  * - KnowledgeType: what knowledge describes (MECE)
7
7
  * - MaturityLevel: how trusted (lifecycle)
8
8
  */
9
- export type KnowledgeType = 'model' | 'decision' | 'guideline' | 'pitfall' | 'process';
9
+ export type KnowledgeType = 'model' | 'decision' | 'guideline' | 'pitfall' | 'process' | 'architecture';
10
10
  export type MaturityLevel = 'draft' | 'verified' | 'proven' | 'archived';
11
- export type StorageLayer = 'personal' | 'team' | 'tech' | 'domain' | 'project';
11
+ export type StorageLayer = 'personal' | 'team' | 'tech' | 'domain' | 'project' | 'system';
12
12
  export interface KnowledgeEntry {
13
13
  id: string;
14
14
  type: KnowledgeType;