@dommaker/harness 0.13.3 → 0.16.0
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/CHANGELOG.md +35 -0
- package/bin/harness-knowledge-check.js +38 -23
- package/bin/harness-knowledge-track.js +30 -4
- package/bin/harness.js +24 -1
- package/dist/cli/commands/index.d.ts +1 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +4 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/knowledge.d.ts +21 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -1
- package/dist/cli/commands/knowledge.js +160 -9
- package/dist/cli/commands/knowledge.js.map +1 -1
- package/dist/cli/commands/release.d.ts.map +1 -1
- package/dist/cli/commands/release.js +43 -6
- package/dist/cli/commands/release.js.map +1 -1
- package/dist/core/constraints/checker.js +1 -1
- 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 +34 -26
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/knowledge/audit.d.ts +76 -0
- package/dist/knowledge/audit.d.ts.map +1 -0
- package/dist/knowledge/audit.js +566 -0
- package/dist/knowledge/audit.js.map +1 -0
- package/dist/knowledge/doctor.d.ts +1 -1
- package/dist/knowledge/doctor.d.ts.map +1 -1
- package/dist/knowledge/import.d.ts +1 -1
- package/dist/knowledge/import.d.ts.map +1 -1
- package/dist/knowledge/import.js +3 -0
- package/dist/knowledge/import.js.map +1 -1
- package/dist/knowledge/index.d.ts +7 -2
- package/dist/knowledge/index.d.ts.map +1 -1
- package/dist/knowledge/index.js +7 -2
- package/dist/knowledge/index.js.map +1 -1
- package/dist/knowledge/ingest.d.ts +28 -1
- package/dist/knowledge/ingest.d.ts.map +1 -1
- package/dist/knowledge/ingest.js +150 -5
- package/dist/knowledge/ingest.js.map +1 -1
- package/dist/knowledge/lifecycle-hooks.d.ts +1 -1
- package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -1
- package/dist/knowledge/lifecycle-hooks.js +3 -0
- package/dist/knowledge/lifecycle-hooks.js.map +1 -1
- package/dist/knowledge/lifecycle.d.ts +60 -8
- package/dist/knowledge/lifecycle.d.ts.map +1 -1
- package/dist/knowledge/lifecycle.js +213 -52
- package/dist/knowledge/lifecycle.js.map +1 -1
- package/dist/knowledge/lint.d.ts +1 -1
- package/dist/knowledge/lint.d.ts.map +1 -1
- package/dist/knowledge/lint.js +44 -3
- package/dist/knowledge/lint.js.map +1 -1
- package/dist/knowledge/migration.d.ts +25 -0
- package/dist/knowledge/migration.d.ts.map +1 -0
- package/dist/knowledge/migration.js +96 -0
- package/dist/knowledge/migration.js.map +1 -0
- package/dist/knowledge/query.d.ts +30 -2
- package/dist/knowledge/query.d.ts.map +1 -1
- package/dist/knowledge/query.js +58 -0
- package/dist/knowledge/query.js.map +1 -1
- package/dist/knowledge/reference-tracker.d.ts +1 -1
- package/dist/knowledge/reference-tracker.d.ts.map +1 -1
- package/dist/knowledge/store.d.ts +50 -3
- package/dist/knowledge/store.d.ts.map +1 -1
- package/dist/knowledge/store.js +111 -9
- package/dist/knowledge/store.js.map +1 -1
- package/dist/knowledge/types.d.ts +43 -1
- package/dist/knowledge/types.d.ts.map +1 -1
- package/dist/knowledge/types.js +1 -0
- package/dist/knowledge/types.js.map +1 -1
- package/dist/monitoring/knowledge-evolver.d.ts +1 -1
- package/dist/monitoring/knowledge-evolver.d.ts.map +1 -1
- package/dist/types/constraint.d.ts +1 -1
- package/dist/types/constraint.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/checker.test.ts +4 -4
- package/src/cli/commands/__tests__/knowledge.test.ts +167 -0
- package/src/cli/commands/index.ts +1 -1
- package/src/cli/commands/knowledge.ts +176 -5
- package/src/cli/commands/release.ts +44 -6
- package/src/context/__tests__/knowledge-injector.test.ts +4 -1
- package/src/core/constraints/checker.ts +1 -1
- package/src/core/constraints/definitions.ts +35 -27
- package/src/dashboard/__tests__/data.test.ts +3 -0
- package/src/dashboard/__tests__/stats.test.ts +3 -0
- package/src/index.ts +3 -1
- package/src/knowledge/CONTEXT.md +29 -7
- package/src/knowledge/__tests__/audit.test.ts +598 -0
- package/src/knowledge/__tests__/doctor.test.ts +28 -1
- package/src/knowledge/__tests__/import.test.ts +1 -1
- package/src/knowledge/__tests__/ingest.test.ts +320 -1
- package/src/knowledge/__tests__/lifecycle-hooks.test.ts +4 -1
- package/src/knowledge/__tests__/lifecycle.test.ts +656 -3
- package/src/knowledge/__tests__/lint.test.ts +52 -1
- package/src/knowledge/__tests__/migration.test.ts +115 -0
- package/src/knowledge/__tests__/query.test.ts +87 -1
- package/src/knowledge/__tests__/reference-tracker.test.ts +4 -1
- package/src/knowledge/__tests__/store.test.ts +208 -1
- package/src/knowledge/audit.ts +641 -0
- package/src/knowledge/doctor.ts +1 -1
- package/src/knowledge/import.ts +4 -1
- package/src/knowledge/index.ts +7 -2
- package/src/knowledge/ingest.ts +170 -6
- package/src/knowledge/lifecycle-hooks.ts +4 -1
- package/src/knowledge/lifecycle.ts +219 -50
- package/src/knowledge/lint.ts +45 -4
- package/src/knowledge/migration.ts +73 -0
- package/src/knowledge/query.ts +72 -1
- package/src/knowledge/reference-tracker.ts +1 -1
- package/src/knowledge/store.ts +125 -8
- package/src/knowledge/types.ts +50 -1
- package/src/monitoring/__tests__/knowledge-doctor.test.ts +3 -0
- package/src/monitoring/__tests__/knowledge-evolver.test.ts +3 -0
- package/src/monitoring/knowledge-evolver.ts +1 -1
- package/src/types/constraint.ts +1 -1
|
@@ -5,30 +5,44 @@
|
|
|
5
5
|
* for the knowledge flywheel.
|
|
6
6
|
*/
|
|
7
7
|
import type { KnowledgeEntry, MaturityLevel, MaturityChange, DecayConfig } from './types';
|
|
8
|
-
import { KnowledgeStore } from './store';
|
|
8
|
+
import type { KnowledgeStore } from './store';
|
|
9
|
+
export interface ConsumptionEvent {
|
|
10
|
+
entryId: string;
|
|
11
|
+
contributor: string;
|
|
12
|
+
timestamp: string;
|
|
13
|
+
context?: string;
|
|
14
|
+
success?: boolean;
|
|
15
|
+
}
|
|
9
16
|
export declare class KnowledgeLifecycle {
|
|
10
17
|
private store;
|
|
11
18
|
private config;
|
|
19
|
+
private onReferenceCallbacks;
|
|
12
20
|
constructor(store: KnowledgeStore, config?: Partial<DecayConfig>);
|
|
21
|
+
/** Register a callback fired on every recordReference() call */
|
|
22
|
+
onReference(callback: (event: ConsumptionEvent) => void): void;
|
|
13
23
|
/**
|
|
14
24
|
* Record that an entry was referenced.
|
|
15
25
|
* Updates lastReferenced timestamp, contributors, and referencedBy.
|
|
26
|
+
* Optionally records execution success/failure.
|
|
16
27
|
*/
|
|
17
|
-
recordReference(entryId: string, contributor?: string): KnowledgeEntry | undefined;
|
|
28
|
+
recordReference(entryId: string, contributor?: string, success?: boolean, source?: 'human' | 'auto'): KnowledgeEntry | undefined;
|
|
18
29
|
/**
|
|
19
30
|
* Check if an entry meets promotion criteria.
|
|
20
31
|
* Returns the target maturity level if promotion is warranted, otherwise undefined.
|
|
21
32
|
*
|
|
22
|
-
*
|
|
23
|
-
* - draft
|
|
24
|
-
* -
|
|
25
|
-
*
|
|
26
|
-
*
|
|
33
|
+
* Branches by consumptionMode:
|
|
34
|
+
* - rule: draft→active (1 success execution)
|
|
35
|
+
* - reference: draft→verified→proven (existing logic)
|
|
36
|
+
* - context: draft→active (1 reference)
|
|
37
|
+
* - signal: no promotion
|
|
27
38
|
*/
|
|
28
39
|
checkPromotion(entryId: string): MaturityLevel | undefined;
|
|
29
40
|
/**
|
|
30
|
-
* Check if an entry should decay
|
|
41
|
+
* Check if an entry should decay.
|
|
31
42
|
* Returns the target maturity level if decay is warranted, otherwise undefined.
|
|
43
|
+
*
|
|
44
|
+
* - decayAt hard expiry takes precedence (all modes)
|
|
45
|
+
* - Then branches by consumptionMode for mode-specific decay
|
|
32
46
|
*/
|
|
33
47
|
checkEntryDecay(entryId: string): MaturityLevel | undefined;
|
|
34
48
|
/**
|
|
@@ -40,6 +54,44 @@ export declare class KnowledgeLifecycle {
|
|
|
40
54
|
* Promote an entry if it meets criteria. Returns the change if applied.
|
|
41
55
|
*/
|
|
42
56
|
tryPromote(entryId: string): MaturityChange | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Check if a source should auto-promote to verified on ingest.
|
|
59
|
+
* Used by KnowledgeBus to decide initial maturity level.
|
|
60
|
+
*/
|
|
61
|
+
shouldAutoPromote(source: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get execution success rate for an entry.
|
|
64
|
+
* Returns { rate, total } or undefined if no execution data.
|
|
65
|
+
*/
|
|
66
|
+
getExecutionSuccessRate(entryId: string): {
|
|
67
|
+
rate: number;
|
|
68
|
+
total: number;
|
|
69
|
+
} | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Get execution success rate for human-sourced results only.
|
|
72
|
+
* Returns { rate, total } or undefined if no human execution data.
|
|
73
|
+
*/
|
|
74
|
+
getHumanSuccessRate(entryId: string): {
|
|
75
|
+
rate: number;
|
|
76
|
+
total: number;
|
|
77
|
+
} | undefined;
|
|
78
|
+
/** rule: draft→active with 1 success execution */
|
|
79
|
+
private checkRulePromotion;
|
|
80
|
+
/** reference: draft→verified→proven (existing logic) */
|
|
81
|
+
private checkReferencePromotion;
|
|
82
|
+
/** context: draft→active with 1 reference */
|
|
83
|
+
private checkContextPromotion;
|
|
84
|
+
/** rule: active→deprecated when fail rate >= 50% with 3+ results */
|
|
85
|
+
private checkRuleDecay;
|
|
86
|
+
/** reference: proven→verified→draft→archived by time (existing logic) */
|
|
87
|
+
private checkReferenceDecay;
|
|
88
|
+
/** context: active→archived after CONTEXT_DECAY_MONTHS unreferenced */
|
|
89
|
+
private checkContextDecay;
|
|
90
|
+
/**
|
|
91
|
+
* signal: active→archived by consumption saturation.
|
|
92
|
+
* Saturated = referencedBy >= threshold AND newer same-tag signal entry exists.
|
|
93
|
+
*/
|
|
94
|
+
private checkSignalDecay;
|
|
43
95
|
private monthsSince;
|
|
44
96
|
}
|
|
45
97
|
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -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;
|
|
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,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAY9C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,oBAAoB,CAAgD;gBAEhE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAKhE,gEAAgE;IAChE,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAI9D;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS;IA+ChI;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAiB1D;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAmB3D;;;OAGG;IACH,aAAa,IAAI,cAAc,EAAE;IAqBjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAiBvD;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI1C;;;OAGG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAQrF;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAYjF,kDAAkD;IAClD,OAAO,CAAC,kBAAkB;IAO1B,wDAAwD;IACxD,OAAO,CAAC,uBAAuB;IAwB/B,6CAA6C;IAC7C,OAAO,CAAC,qBAAqB;IAQ7B,oEAAoE;IACpE,OAAO,CAAC,cAAc;IAOtB,yEAAyE;IACzE,OAAO,CAAC,mBAAmB;IAoB3B,uEAAuE;IACvE,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -8,19 +8,31 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.KnowledgeLifecycle = void 0;
|
|
10
10
|
const types_1 = require("./types");
|
|
11
|
-
|
|
11
|
+
const MAX_REFERENCED_BY = 20;
|
|
12
|
+
const MIN_CONTENT_FOR_PROVEN = 100;
|
|
13
|
+
const TEST_ID_PATTERN = /^(test-|inj-test)/;
|
|
14
|
+
const SIGNAL_SATURATION_THRESHOLD = 3;
|
|
15
|
+
const CONTEXT_DECAY_MONTHS = 3;
|
|
16
|
+
const RULE_MIN_RESULTS_FOR_DECAY = 3;
|
|
17
|
+
const RULE_FAIL_THRESHOLD = 0.5;
|
|
12
18
|
class KnowledgeLifecycle {
|
|
13
19
|
store;
|
|
14
20
|
config;
|
|
21
|
+
onReferenceCallbacks = [];
|
|
15
22
|
constructor(store, config) {
|
|
16
23
|
this.store = store;
|
|
17
24
|
this.config = { ...types_1.DEFAULT_DECAY_CONFIG, ...config };
|
|
18
25
|
}
|
|
26
|
+
/** Register a callback fired on every recordReference() call */
|
|
27
|
+
onReference(callback) {
|
|
28
|
+
this.onReferenceCallbacks.push(callback);
|
|
29
|
+
}
|
|
19
30
|
/**
|
|
20
31
|
* Record that an entry was referenced.
|
|
21
32
|
* Updates lastReferenced timestamp, contributors, and referencedBy.
|
|
33
|
+
* Optionally records execution success/failure.
|
|
22
34
|
*/
|
|
23
|
-
recordReference(entryId, contributor) {
|
|
35
|
+
recordReference(entryId, contributor, success, source) {
|
|
24
36
|
const entry = this.store.get(entryId);
|
|
25
37
|
if (!entry)
|
|
26
38
|
return undefined;
|
|
@@ -29,79 +41,84 @@ class KnowledgeLifecycle {
|
|
|
29
41
|
? [...entry.contributors, contributor]
|
|
30
42
|
: entry.contributors;
|
|
31
43
|
const refKey = `${contributor || 'unknown'}:${now.slice(0, 10)}`;
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
44
|
+
const execSource = source || (contributor?.startsWith('auto-') ? 'auto' : undefined);
|
|
45
|
+
// B4: Skip file write if this refKey already exists (same-day, same contributor)
|
|
46
|
+
if (entry.referencedBy.includes(refKey)) {
|
|
47
|
+
// But still record execution result if provided
|
|
48
|
+
if (success !== undefined) {
|
|
49
|
+
const executionResults = [
|
|
50
|
+
...(entry.executionResults || []),
|
|
51
|
+
{ contributor: contributor || 'unknown', success, timestamp: now, source: execSource },
|
|
52
|
+
].slice(-MAX_REFERENCED_BY);
|
|
53
|
+
this.store.update(entryId, { executionResults });
|
|
54
|
+
}
|
|
55
|
+
return entry;
|
|
56
|
+
}
|
|
57
|
+
const referencedBy = [...entry.referencedBy, refKey].slice(-MAX_REFERENCED_BY);
|
|
58
|
+
const executionResults = success !== undefined
|
|
59
|
+
? [...(entry.executionResults || []), { contributor: contributor || 'unknown', success, timestamp: now, source: execSource }].slice(-MAX_REFERENCED_BY)
|
|
60
|
+
: entry.executionResults;
|
|
61
|
+
const updated = this.store.update(entryId, {
|
|
36
62
|
lastReferenced: now,
|
|
37
63
|
contributors,
|
|
38
64
|
referencedBy,
|
|
65
|
+
executionResults,
|
|
39
66
|
});
|
|
67
|
+
// Fire consumption event callbacks
|
|
68
|
+
for (const cb of this.onReferenceCallbacks) {
|
|
69
|
+
try {
|
|
70
|
+
cb({ entryId, contributor: contributor || 'unknown', timestamp: now, success });
|
|
71
|
+
}
|
|
72
|
+
catch { /* non-blocking */ }
|
|
73
|
+
}
|
|
74
|
+
return updated;
|
|
40
75
|
}
|
|
41
76
|
/**
|
|
42
77
|
* Check if an entry meets promotion criteria.
|
|
43
78
|
* Returns the target maturity level if promotion is warranted, otherwise undefined.
|
|
44
79
|
*
|
|
45
|
-
*
|
|
46
|
-
* - draft
|
|
47
|
-
* -
|
|
48
|
-
*
|
|
49
|
-
*
|
|
80
|
+
* Branches by consumptionMode:
|
|
81
|
+
* - rule: draft→active (1 success execution)
|
|
82
|
+
* - reference: draft→verified→proven (existing logic)
|
|
83
|
+
* - context: draft→active (1 reference)
|
|
84
|
+
* - signal: no promotion
|
|
50
85
|
*/
|
|
51
86
|
checkPromotion(entryId) {
|
|
52
87
|
const entry = this.store.get(entryId);
|
|
53
88
|
if (!entry)
|
|
54
89
|
return undefined;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
case '
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
}
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
case 'proven':
|
|
74
|
-
case 'archived':
|
|
75
|
-
return undefined;
|
|
90
|
+
// RC2: block test entries from any promotion
|
|
91
|
+
if (TEST_ID_PATTERN.test(entryId))
|
|
92
|
+
return undefined;
|
|
93
|
+
const mode = entry.consumptionMode || 'reference';
|
|
94
|
+
switch (mode) {
|
|
95
|
+
case 'rule': return this.checkRulePromotion(entry);
|
|
96
|
+
case 'context': return this.checkContextPromotion(entry);
|
|
97
|
+
case 'signal': return undefined; // signal never promotes
|
|
98
|
+
case 'reference': return this.checkReferencePromotion(entry);
|
|
76
99
|
}
|
|
77
100
|
}
|
|
78
101
|
/**
|
|
79
|
-
* Check if an entry should decay
|
|
102
|
+
* Check if an entry should decay.
|
|
80
103
|
* Returns the target maturity level if decay is warranted, otherwise undefined.
|
|
104
|
+
*
|
|
105
|
+
* - decayAt hard expiry takes precedence (all modes)
|
|
106
|
+
* - Then branches by consumptionMode for mode-specific decay
|
|
81
107
|
*/
|
|
82
108
|
checkEntryDecay(entryId) {
|
|
83
109
|
const entry = this.store.get(entryId);
|
|
84
110
|
if (!entry)
|
|
85
111
|
return undefined;
|
|
86
|
-
|
|
87
|
-
if (
|
|
88
|
-
return
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
case '
|
|
96
|
-
if (monthsSinceRef >= this.config.verifiedDecayMonths)
|
|
97
|
-
return 'draft';
|
|
98
|
-
return undefined;
|
|
99
|
-
case 'draft':
|
|
100
|
-
if (monthsSinceRef >= this.config.draftDecayMonths)
|
|
101
|
-
return 'archived';
|
|
102
|
-
return undefined;
|
|
103
|
-
case 'archived':
|
|
104
|
-
return undefined;
|
|
112
|
+
// decayAt hard expiry — all modes, highest priority
|
|
113
|
+
if (entry.decayAt && new Date(entry.decayAt) <= new Date()) {
|
|
114
|
+
return 'archived';
|
|
115
|
+
}
|
|
116
|
+
const mode = entry.consumptionMode || 'reference';
|
|
117
|
+
switch (mode) {
|
|
118
|
+
case 'rule': return this.checkRuleDecay(entry);
|
|
119
|
+
case 'reference': return this.checkReferenceDecay(entry);
|
|
120
|
+
case 'context': return this.checkContextDecay(entry);
|
|
121
|
+
case 'signal': return this.checkSignalDecay(entry);
|
|
105
122
|
}
|
|
106
123
|
}
|
|
107
124
|
/**
|
|
@@ -145,6 +162,150 @@ class KnowledgeLifecycle {
|
|
|
145
162
|
this.store.update(entryId, { maturity: target });
|
|
146
163
|
return change;
|
|
147
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Check if a source should auto-promote to verified on ingest.
|
|
167
|
+
* Used by KnowledgeBus to decide initial maturity level.
|
|
168
|
+
*/
|
|
169
|
+
shouldAutoPromote(source) {
|
|
170
|
+
return this.config.autoPromoteSources.some(s => source.includes(s));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get execution success rate for an entry.
|
|
174
|
+
* Returns { rate, total } or undefined if no execution data.
|
|
175
|
+
*/
|
|
176
|
+
getExecutionSuccessRate(entryId) {
|
|
177
|
+
const entry = this.store.get(entryId);
|
|
178
|
+
if (!entry || !entry.executionResults || entry.executionResults.length === 0)
|
|
179
|
+
return undefined;
|
|
180
|
+
const total = entry.executionResults.length;
|
|
181
|
+
const successes = entry.executionResults.filter(r => r.success).length;
|
|
182
|
+
return { rate: successes / total, total };
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get execution success rate for human-sourced results only.
|
|
186
|
+
* Returns { rate, total } or undefined if no human execution data.
|
|
187
|
+
*/
|
|
188
|
+
getHumanSuccessRate(entryId) {
|
|
189
|
+
const entry = this.store.get(entryId);
|
|
190
|
+
if (!entry || !entry.executionResults || entry.executionResults.length === 0)
|
|
191
|
+
return undefined;
|
|
192
|
+
const humanResults = entry.executionResults.filter(r => r.source === 'human');
|
|
193
|
+
if (humanResults.length === 0)
|
|
194
|
+
return undefined;
|
|
195
|
+
const total = humanResults.length;
|
|
196
|
+
const successes = humanResults.filter(r => r.success).length;
|
|
197
|
+
return { rate: successes / total, total };
|
|
198
|
+
}
|
|
199
|
+
// ── Per-mode promotion ─────────────────────────────────────
|
|
200
|
+
/** rule: draft→active with 1 success execution */
|
|
201
|
+
checkRulePromotion(entry) {
|
|
202
|
+
if (entry.maturity !== 'draft')
|
|
203
|
+
return undefined;
|
|
204
|
+
const rate = this.getExecutionSuccessRate(entry.id);
|
|
205
|
+
if (rate && rate.total >= 1 && rate.rate >= 1.0)
|
|
206
|
+
return 'active';
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
/** reference: draft→verified→proven (existing logic) */
|
|
210
|
+
checkReferencePromotion(entry) {
|
|
211
|
+
switch (entry.maturity) {
|
|
212
|
+
case 'draft':
|
|
213
|
+
if (entry.lastReferenced && entry.content.trim().length >= 50)
|
|
214
|
+
return 'verified';
|
|
215
|
+
return undefined;
|
|
216
|
+
case 'verified': {
|
|
217
|
+
if (entry.content.trim().length < MIN_CONTENT_FOR_PROVEN)
|
|
218
|
+
return undefined;
|
|
219
|
+
const humanRate = this.getHumanSuccessRate(entry.id);
|
|
220
|
+
if (humanRate && humanRate.total >= 3 && humanRate.rate >= 0.8)
|
|
221
|
+
return 'proven';
|
|
222
|
+
const execRate = this.getExecutionSuccessRate(entry.id);
|
|
223
|
+
if (execRate && execRate.total >= 3 && execRate.rate >= 0.8)
|
|
224
|
+
return 'proven';
|
|
225
|
+
if (entry.contributors.length >= 3 && entry.projects.length >= 2)
|
|
226
|
+
return 'proven';
|
|
227
|
+
const refCount = entry.referencedBy?.length || 0;
|
|
228
|
+
const distinctSources = new Set(entry.sourceReferences?.map(s => s.workflow).filter(Boolean) || []);
|
|
229
|
+
if (refCount >= 3 && distinctSources.size >= 2)
|
|
230
|
+
return 'proven';
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
default:
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/** context: draft→active with 1 reference */
|
|
238
|
+
checkContextPromotion(entry) {
|
|
239
|
+
if (entry.maturity !== 'draft')
|
|
240
|
+
return undefined;
|
|
241
|
+
if (entry.referencedBy.length >= 1)
|
|
242
|
+
return 'active';
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
// ── Per-mode decay ─────────────────────────────────────────
|
|
246
|
+
/** rule: active→deprecated when fail rate >= 50% with 3+ results */
|
|
247
|
+
checkRuleDecay(entry) {
|
|
248
|
+
if (entry.maturity !== 'active')
|
|
249
|
+
return undefined;
|
|
250
|
+
const rate = this.getExecutionSuccessRate(entry.id);
|
|
251
|
+
if (rate && rate.total >= RULE_MIN_RESULTS_FOR_DECAY && rate.rate < RULE_FAIL_THRESHOLD)
|
|
252
|
+
return 'deprecated';
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
/** reference: proven→verified→draft→archived by time (existing logic) */
|
|
256
|
+
checkReferenceDecay(entry) {
|
|
257
|
+
const lastRef = entry.lastReferenced || entry.created;
|
|
258
|
+
if (!lastRef)
|
|
259
|
+
return undefined;
|
|
260
|
+
const monthsSinceRef = this.monthsSince(lastRef);
|
|
261
|
+
switch (entry.maturity) {
|
|
262
|
+
case 'proven':
|
|
263
|
+
if (monthsSinceRef >= this.config.provenDecayMonths)
|
|
264
|
+
return 'verified';
|
|
265
|
+
return undefined;
|
|
266
|
+
case 'verified':
|
|
267
|
+
if (monthsSinceRef >= this.config.verifiedDecayMonths)
|
|
268
|
+
return 'draft';
|
|
269
|
+
return undefined;
|
|
270
|
+
case 'draft':
|
|
271
|
+
if (monthsSinceRef >= this.config.draftDecayMonths)
|
|
272
|
+
return 'archived';
|
|
273
|
+
return undefined;
|
|
274
|
+
default:
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/** context: active→archived after CONTEXT_DECAY_MONTHS unreferenced */
|
|
279
|
+
checkContextDecay(entry) {
|
|
280
|
+
if (entry.maturity !== 'active')
|
|
281
|
+
return undefined;
|
|
282
|
+
const lastRef = entry.lastReferenced || entry.created;
|
|
283
|
+
if (!lastRef)
|
|
284
|
+
return undefined;
|
|
285
|
+
if (this.monthsSince(lastRef) >= CONTEXT_DECAY_MONTHS)
|
|
286
|
+
return 'archived';
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* signal: active→archived by consumption saturation.
|
|
291
|
+
* Saturated = referencedBy >= threshold AND newer same-tag signal entry exists.
|
|
292
|
+
*/
|
|
293
|
+
checkSignalDecay(entry) {
|
|
294
|
+
if (entry.maturity !== 'active')
|
|
295
|
+
return undefined;
|
|
296
|
+
const refCount = entry.referencedBy?.length || 0;
|
|
297
|
+
if (refCount < SIGNAL_SATURATION_THRESHOLD)
|
|
298
|
+
return undefined;
|
|
299
|
+
const newer = this.store.list({
|
|
300
|
+
tags: entry.tags,
|
|
301
|
+
excludeArchived: false,
|
|
302
|
+
}).find(e => e.id !== entry.id &&
|
|
303
|
+
(e.consumptionMode || 'reference') === 'signal' &&
|
|
304
|
+
e.created > entry.created);
|
|
305
|
+
if (newer)
|
|
306
|
+
return 'archived';
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
148
309
|
// ── Internal ───────────────────────────────────────────────
|
|
149
310
|
monthsSince(dateStr) {
|
|
150
311
|
const then = new Date(dateStr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/knowledge/lifecycle.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAQH,mCAA+C;AAG/C,
|
|
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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - 重复/相似条目
|
|
10
10
|
* - 成熟度衰减
|
|
11
11
|
*/
|
|
12
|
-
import { KnowledgeStore } from './store';
|
|
12
|
+
import type { KnowledgeStore } from './store';
|
|
13
13
|
import { ReferenceTracker } from './reference-tracker';
|
|
14
14
|
import type { KnowledgeEntry, LintIssue, LintIssueType } from './types';
|
|
15
15
|
export interface LintReport {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/knowledge/lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,SAAS,CAAC;AAIvF,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;CAyDhB"}
|
package/dist/knowledge/lint.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.KnowledgeLinter = void 0;
|
|
15
|
+
const MAX_SOURCE_REFS = 20;
|
|
15
16
|
class KnowledgeLinter {
|
|
16
17
|
store;
|
|
17
18
|
tracker;
|
|
@@ -60,7 +61,7 @@ class KnowledgeLinter {
|
|
|
60
61
|
*/
|
|
61
62
|
checkIndexConsistency(entries) {
|
|
62
63
|
const issues = [];
|
|
63
|
-
const index = this.store
|
|
64
|
+
const index = this.store.readIndex();
|
|
64
65
|
// 检查索引中的条目是否都有对应文件
|
|
65
66
|
for (const indexEntry of index) {
|
|
66
67
|
const fileEntry = this.store.get(indexEntry.id);
|
|
@@ -181,7 +182,7 @@ class KnowledgeLinter {
|
|
|
181
182
|
for (const entry of entries) {
|
|
182
183
|
if (entry.maturity === 'archived')
|
|
183
184
|
continue;
|
|
184
|
-
if (entry.tags.length === 0)
|
|
185
|
+
if (!entry.tags || entry.tags.length === 0)
|
|
185
186
|
continue;
|
|
186
187
|
const tagKey = entry.tags.sort().join(',');
|
|
187
188
|
const existing = byTagGroup.get(tagKey) || [];
|
|
@@ -244,7 +245,7 @@ class KnowledgeLinter {
|
|
|
244
245
|
});
|
|
245
246
|
}
|
|
246
247
|
// Contradicts proven entry with same tags
|
|
247
|
-
if (entry.tags.length > 0) {
|
|
248
|
+
if (entry.tags && entry.tags.length > 0) {
|
|
248
249
|
const allEntries = this.store.list({ excludeArchived: false });
|
|
249
250
|
for (const existing of allEntries) {
|
|
250
251
|
if (existing.maturity !== 'proven')
|
|
@@ -301,6 +302,46 @@ class KnowledgeLinter {
|
|
|
301
302
|
*/
|
|
302
303
|
autoFix(issues) {
|
|
303
304
|
let fixed = 0;
|
|
305
|
+
// A3: Deduplicate — group by entryId, keep newest, archive rest
|
|
306
|
+
const duplicateIssues = issues.filter(i => i.type === 'duplicate' && i.entryId);
|
|
307
|
+
const processedGroups = new Set();
|
|
308
|
+
for (const issue of duplicateIssues) {
|
|
309
|
+
// Extract group from suggestion field: "考虑合并: GUI-003, GUI-004"
|
|
310
|
+
const match = issue.suggestion?.match(/: (.+)$/);
|
|
311
|
+
if (!match)
|
|
312
|
+
continue;
|
|
313
|
+
const groupKey = match[1];
|
|
314
|
+
if (processedGroups.has(groupKey))
|
|
315
|
+
continue;
|
|
316
|
+
processedGroups.add(groupKey);
|
|
317
|
+
const ids = groupKey.split(', ').map(s => s.trim());
|
|
318
|
+
const entries = ids.map(id => this.store.get(id)).filter(Boolean);
|
|
319
|
+
if (entries.length <= 1)
|
|
320
|
+
continue;
|
|
321
|
+
// Keep the one with most recent lastReferenced
|
|
322
|
+
entries.sort((a, b) => (b.lastReferenced || '').localeCompare(a.lastReferenced || ''));
|
|
323
|
+
const keep = entries[0];
|
|
324
|
+
for (let i = 1; i < entries.length; i++) {
|
|
325
|
+
this.store.update(entries[i].id, { maturity: 'archived' });
|
|
326
|
+
fixed++;
|
|
327
|
+
}
|
|
328
|
+
// Merge sourceReferences from archived entries into kept entry
|
|
329
|
+
const allRefs = entries.flatMap(e => e.sourceReferences || []);
|
|
330
|
+
if (allRefs.length > 0) {
|
|
331
|
+
const existing = keep.sourceReferences || [];
|
|
332
|
+
const merged = [...existing, ...allRefs];
|
|
333
|
+
// Deduplicate by workflow+timestamp
|
|
334
|
+
const seen = new Set();
|
|
335
|
+
const deduped = merged.filter(ref => {
|
|
336
|
+
const key = `${ref.workflow}:${ref.timestamp}`;
|
|
337
|
+
if (seen.has(key))
|
|
338
|
+
return false;
|
|
339
|
+
seen.add(key);
|
|
340
|
+
return true;
|
|
341
|
+
}).slice(-MAX_SOURCE_REFS);
|
|
342
|
+
this.store.update(keep.id, { sourceReferences: deduped });
|
|
343
|
+
}
|
|
344
|
+
}
|
|
304
345
|
for (const issue of issues) {
|
|
305
346
|
if (issue.type === 'index_inconsistent') {
|
|
306
347
|
this.store.rebuildIndex();
|
|
@@ -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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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Migration Utilities
|
|
3
|
+
*
|
|
4
|
+
* Migrates existing knowledge entries to add new fields
|
|
5
|
+
* introduced in AS-021 (consumptionMode, origin, fullContentPath, skillId).
|
|
6
|
+
*/
|
|
7
|
+
interface MigrationResult {
|
|
8
|
+
total: number;
|
|
9
|
+
migrated: number;
|
|
10
|
+
skipped: number;
|
|
11
|
+
errors: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Migrate all knowledge .md files in a directory to include
|
|
15
|
+
* consumptionMode and origin fields if missing.
|
|
16
|
+
*
|
|
17
|
+
* Existing files without these fields get defaults:
|
|
18
|
+
* - consumptionMode: 'reference'
|
|
19
|
+
* - origin: 'agent'
|
|
20
|
+
*
|
|
21
|
+
* This is idempotent — running it multiple times is safe.
|
|
22
|
+
*/
|
|
23
|
+
export declare function migrateKnowledgeEntries(baseDir: string): MigrationResult;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=migration.d.ts.map
|