kodingo-core 0.1.0 → 0.2.1
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.
|
@@ -56,11 +56,6 @@ export interface MemoryRecord {
|
|
|
56
56
|
* If a record was denied, we track when (for anti-loop / history).
|
|
57
57
|
*/
|
|
58
58
|
deniedAt?: Date;
|
|
59
|
-
/**
|
|
60
|
-
* Optional fingerprint to help avoid re-proposing the same denied hypothesis.
|
|
61
|
-
* For MVP, leave it as a caller-provided string if available.
|
|
62
|
-
*/
|
|
63
|
-
fingerprint?: string;
|
|
64
59
|
/**
|
|
65
60
|
* Stable external identifier for deduplication across signal sources.
|
|
66
61
|
* Example: "git:<commitHash>"
|
|
@@ -76,6 +71,23 @@ export interface MemoryRecord {
|
|
|
76
71
|
* Points to the proposed replacement that was created when this was denied.
|
|
77
72
|
*/
|
|
78
73
|
correctedById?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Attribution — which machine captured this memory.
|
|
76
|
+
* Generated on `kodingo init` as a stable device identity hash.
|
|
77
|
+
* Used for departure risk analysis and knowledge attribution.
|
|
78
|
+
*/
|
|
79
|
+
machineId?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Attribution — human-readable display name of the capturing machine.
|
|
82
|
+
* Typically os.hostname() at capture time.
|
|
83
|
+
*/
|
|
84
|
+
displayName?: string;
|
|
85
|
+
/**
|
|
86
|
+
* AST-derived fingerprint of the function body.
|
|
87
|
+
* Stable across renames and moves — used for context decay tracking.
|
|
88
|
+
* Generated by normalising and hashing the function body content.
|
|
89
|
+
*/
|
|
90
|
+
fingerprint?: string;
|
|
79
91
|
}
|
|
80
92
|
/**
|
|
81
93
|
* Project memory state for a project.
|
|
@@ -100,6 +112,7 @@ export interface ProjectMemory {
|
|
|
100
112
|
*/
|
|
101
113
|
updatedAt: Date;
|
|
102
114
|
}
|
|
115
|
+
export declare const BASE_CONFIDENCE: Record<MemoryStatus, number>;
|
|
103
116
|
export declare function isCanonical(status: MemoryStatus): boolean;
|
|
104
117
|
export declare function createProposedMemory(input: {
|
|
105
118
|
id: string;
|
|
@@ -113,6 +126,8 @@ export declare function createProposedMemory(input: {
|
|
|
113
126
|
fingerprint?: string;
|
|
114
127
|
externalId?: string;
|
|
115
128
|
correctsId?: string;
|
|
129
|
+
machineId?: string;
|
|
130
|
+
displayName?: string;
|
|
116
131
|
now?: Date;
|
|
117
132
|
}): MemoryRecord;
|
|
118
133
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE;QACR,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BASE_CONFIDENCE = void 0;
|
|
3
4
|
exports.isCanonical = isCanonical;
|
|
4
5
|
exports.createProposedMemory = createProposedMemory;
|
|
5
6
|
exports.applySignal = applySignal;
|
|
@@ -12,7 +13,7 @@ exports.shouldBlockReproposal = shouldBlockReproposal;
|
|
|
12
13
|
Confidence + lifecycle rules (domain contract enforcement)
|
|
13
14
|
========================================================= */
|
|
14
15
|
const clamp01 = (n) => Math.max(0, Math.min(1, n));
|
|
15
|
-
|
|
16
|
+
exports.BASE_CONFIDENCE = {
|
|
16
17
|
proposed: 0.3,
|
|
17
18
|
ignored: 0.3,
|
|
18
19
|
affirmed: 0.8,
|
|
@@ -41,7 +42,7 @@ function createProposedMemory(input) {
|
|
|
41
42
|
tags: input.tags ?? [],
|
|
42
43
|
content: input.content,
|
|
43
44
|
status: "proposed",
|
|
44
|
-
confidence: BASE_CONFIDENCE.proposed,
|
|
45
|
+
confidence: exports.BASE_CONFIDENCE.proposed,
|
|
45
46
|
createdAt: now,
|
|
46
47
|
updatedAt: now,
|
|
47
48
|
evidence: {
|
|
@@ -53,6 +54,8 @@ function createProposedMemory(input) {
|
|
|
53
54
|
fingerprint: input.fingerprint,
|
|
54
55
|
externalId: input.externalId,
|
|
55
56
|
correctsId: input.correctsId,
|
|
57
|
+
machineId: input.machineId,
|
|
58
|
+
displayName: input.displayName,
|
|
56
59
|
};
|
|
57
60
|
}
|
|
58
61
|
/**
|
|
@@ -87,7 +90,7 @@ function applySignal(record, signal) {
|
|
|
87
90
|
let nextConfidence = clamp01(record.confidence + delta);
|
|
88
91
|
// Denied hypotheses remain low-confidence.
|
|
89
92
|
if (record.status === "denied") {
|
|
90
|
-
nextConfidence = Math.min(nextConfidence, BASE_CONFIDENCE.denied);
|
|
93
|
+
nextConfidence = Math.min(nextConfidence, exports.BASE_CONFIDENCE.denied);
|
|
91
94
|
}
|
|
92
95
|
return {
|
|
93
96
|
...record,
|
|
@@ -102,7 +105,7 @@ function applySignal(record, signal) {
|
|
|
102
105
|
function affirm(record, now = new Date()) {
|
|
103
106
|
let nextConfidence = record.confidence;
|
|
104
107
|
if (record.status !== "affirmed") {
|
|
105
|
-
nextConfidence = Math.max(nextConfidence, BASE_CONFIDENCE.affirmed);
|
|
108
|
+
nextConfidence = Math.max(nextConfidence, exports.BASE_CONFIDENCE.affirmed);
|
|
106
109
|
nextConfidence = clamp01(nextConfidence + 0.1);
|
|
107
110
|
}
|
|
108
111
|
else {
|
|
@@ -135,7 +138,7 @@ function deny(record, now = new Date()) {
|
|
|
135
138
|
return {
|
|
136
139
|
...record,
|
|
137
140
|
status: "denied",
|
|
138
|
-
confidence: Math.min(record.confidence, BASE_CONFIDENCE.denied),
|
|
141
|
+
confidence: Math.min(record.confidence, exports.BASE_CONFIDENCE.denied),
|
|
139
142
|
deniedAt: now,
|
|
140
143
|
updatedAt: now,
|
|
141
144
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-memory.js","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project-memory.js","sourceRoot":"","sources":["../../../../src/domain/memory/project-memory.ts"],"names":[],"mappings":"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"}
|