@nxuss/lemma 1.12.0 → 1.15.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/README.md +15 -8
- package/dist/cjs/mcp/index.js +3 -0
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/cjs/mcp/tasks.d.ts +20 -0
- package/dist/cjs/mcp/tasks.d.ts.map +1 -0
- package/dist/cjs/mcp/tasks.js +71 -0
- package/dist/cjs/mcp/tasks.js.map +1 -0
- package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/cjs/mcp/tool-profiles.js +1 -0
- package/dist/cjs/mcp/tool-profiles.js.map +1 -1
- package/dist/cjs/mcp/tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools.js +360 -42
- package/dist/cjs/mcp/tools.js.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.d.ts +149 -1
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +314 -33
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/utils/PatchMatcher.d.ts +1 -0
- package/dist/cjs/utils/PatchMatcher.d.ts.map +1 -1
- package/dist/cjs/utils/PatchMatcher.js +4 -4
- package/dist/cjs/utils/PatchMatcher.js.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts +9 -0
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.js +19 -0
- package/dist/cjs/utils/SymbolSurgicalContext.js.map +1 -1
- package/dist/esm/mcp/index.js +3 -0
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/tasks.d.ts +20 -0
- package/dist/esm/mcp/tasks.d.ts.map +1 -0
- package/dist/esm/mcp/tasks.js +66 -0
- package/dist/esm/mcp/tasks.js.map +1 -0
- package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/esm/mcp/tool-profiles.js +1 -0
- package/dist/esm/mcp/tool-profiles.js.map +1 -1
- package/dist/esm/mcp/tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools.js +362 -44
- package/dist/esm/mcp/tools.js.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.d.ts +149 -1
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +310 -33
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/utils/PatchMatcher.d.ts +1 -0
- package/dist/esm/utils/PatchMatcher.d.ts.map +1 -1
- package/dist/esm/utils/PatchMatcher.js +4 -4
- package/dist/esm/utils/PatchMatcher.js.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.d.ts +9 -0
- package/dist/esm/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.js +18 -0
- package/dist/esm/utils/SymbolSurgicalContext.js.map +1 -1
- package/package.json +1 -1
|
@@ -38,6 +38,12 @@ export interface BrainEntry {
|
|
|
38
38
|
* fix — the Brain can only ever suggest reuse, never warn "we already tried this."
|
|
39
39
|
*/
|
|
40
40
|
outcome?: 'confirmed' | 'failed';
|
|
41
|
+
/**
|
|
42
|
+
* Free-text domain tag (e.g. "auth", "billing") lifted from cognitive_map's current
|
|
43
|
+
* context at store time. Absent means untagged — those entries stay visible to every
|
|
44
|
+
* domain-scoped search rather than disappearing, same rationale as projectId above.
|
|
45
|
+
*/
|
|
46
|
+
domain?: string;
|
|
41
47
|
/**
|
|
42
48
|
* Absolute-path::symbolName -> sha256 of just that symbol's extracted source (via
|
|
43
49
|
* SymbolSurgicalContext), not the whole file. When a file has an entry here, freshness
|
|
@@ -47,6 +53,16 @@ export interface BrainEntry {
|
|
|
47
53
|
* still applies, so every entry written before this existed keeps working unchanged.
|
|
48
54
|
*/
|
|
49
55
|
symbolHashes?: Record<string, string>;
|
|
56
|
+
/**
|
|
57
|
+
* Fase D: sha256 of the same symbols as symbolHashes, but of their normalized
|
|
58
|
+
* (comment/whitespace-stripped) source — see normalizeForFreshness. Always computed
|
|
59
|
+
* alongside symbolHashes when a symbol is stored, regardless of whether semanticDiff is
|
|
60
|
+
* ever used. Lets checkEntryFreshness tell "only a comment/formatting changed" apart from
|
|
61
|
+
* a real change, but only when the caller opts in via semanticDiff — absent (entries
|
|
62
|
+
* written before this existed) means that classification isn't possible and a raw-hash
|
|
63
|
+
* mismatch falls back to stale, same as pre-Fase-D behavior.
|
|
64
|
+
*/
|
|
65
|
+
symbolNormalizedHashes?: Record<string, string>;
|
|
50
66
|
/**
|
|
51
67
|
* Sub-claims within `response`, each with its own evidence. Absent means the whole
|
|
52
68
|
* entry is one claim, judged by fileHashes/symbolHashes above (pre-existing behavior).
|
|
@@ -55,12 +71,29 @@ export interface BrainEntry {
|
|
|
55
71
|
* still trustworthy instead of discarding (or blindly trusting) the whole thing.
|
|
56
72
|
*/
|
|
57
73
|
claims?: Claim[];
|
|
74
|
+
/**
|
|
75
|
+
* Count of explicit "this memory led me astray" signals via downvote(). Distinct from
|
|
76
|
+
* hits: hits means "this surfaced and looked relevant enough to reuse," demerits means
|
|
77
|
+
* "reuse turned out to be wrong." Absent/0 means never downvoted.
|
|
78
|
+
*/
|
|
79
|
+
demerits?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Ids of other entries/claims this memory's conclusion was built on top of (the agent
|
|
82
|
+
* read memory A, then stored B as a conclusion derived from it). Absent means B's
|
|
83
|
+
* freshness is judged only by its own fileHashes/symbolHashes, same as before this
|
|
84
|
+
* existed. When present, checkEntryFreshness walks it transitively (bounded by
|
|
85
|
+
* MAX_DERIVED_DEPTH): if A goes stale, B is stale too even though B's own evidence
|
|
86
|
+
* never changed — because B's conclusion was never independently verified against
|
|
87
|
+
* current state, only inherited.
|
|
88
|
+
*/
|
|
89
|
+
derivedFrom?: string[];
|
|
58
90
|
}
|
|
59
91
|
export interface Claim {
|
|
60
92
|
id: string;
|
|
61
93
|
text: string;
|
|
62
94
|
fileHashes?: Record<string, string>;
|
|
63
95
|
symbolHashes?: Record<string, string>;
|
|
96
|
+
symbolNormalizedHashes?: Record<string, string>;
|
|
64
97
|
}
|
|
65
98
|
export interface ClaimInput {
|
|
66
99
|
text: string;
|
|
@@ -72,6 +105,23 @@ export interface ClaimFreshness {
|
|
|
72
105
|
text: string;
|
|
73
106
|
fresh: boolean;
|
|
74
107
|
staleFiles?: string[];
|
|
108
|
+
/** Fase D, only set under semanticDiff: symbols whose raw hash changed but only cosmetically. */
|
|
109
|
+
cosmeticChanges?: string[];
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Result of a single id passed to `TheBrainV2.verifyByIds`. `id` may be an entry id or a
|
|
113
|
+
* claim id — the caller doesn't need to know which, since both are opaque ids handed back
|
|
114
|
+
* by a prior search_memory/store_memory call. "unknown" (never "fresh") is what a caller
|
|
115
|
+
* gets for a purged entry, a renamed symbol's old claim, or an id from another project.
|
|
116
|
+
*/
|
|
117
|
+
export interface VerifyMemoryResult {
|
|
118
|
+
id: string;
|
|
119
|
+
status: 'fresh' | 'stale' | 'unknown';
|
|
120
|
+
staleFiles?: string[];
|
|
121
|
+
/** Only set when `id` resolved to an entry that itself has per-claim tracking. */
|
|
122
|
+
claimBreakdown?: ClaimFreshness[];
|
|
123
|
+
/** Fase D, only set under semanticDiff: symbols whose raw hash changed but only cosmetically. */
|
|
124
|
+
cosmeticChanges?: string[];
|
|
75
125
|
}
|
|
76
126
|
export interface SymbolRef {
|
|
77
127
|
/** Relative or absolute; resolved against process.cwd() the same way filePaths is. */
|
|
@@ -89,6 +139,9 @@ export interface BrainSearchResult {
|
|
|
89
139
|
staleFiles?: string[];
|
|
90
140
|
outcome?: 'confirmed' | 'failed';
|
|
91
141
|
claims?: ClaimFreshness[];
|
|
142
|
+
domain?: string;
|
|
143
|
+
/** Fase D, only set under semanticDiff: symbols whose raw hash changed but only cosmetically. */
|
|
144
|
+
cosmeticChanges?: string[];
|
|
92
145
|
}
|
|
93
146
|
export interface BrainSearchOptions {
|
|
94
147
|
/**
|
|
@@ -99,6 +152,16 @@ export interface BrainSearchOptions {
|
|
|
99
152
|
countStats?: boolean;
|
|
100
153
|
/** Prefer memories from this project. See the scoping note in search(). */
|
|
101
154
|
projectId?: string;
|
|
155
|
+
/** Prefer memories tagged with this domain. Same soft-fallback rule as projectId. */
|
|
156
|
+
domain?: string;
|
|
157
|
+
/**
|
|
158
|
+
* Fase D, opt-in and off by default: when a tracked symbol's raw hash changed, check
|
|
159
|
+
* whether its normalized (comment/whitespace-stripped) hash also changed before marking
|
|
160
|
+
* stale. Only a real change still marks stale; a comment/formatting-only edit doesn't.
|
|
161
|
+
* Requires the entry to have been stored with symbolNormalizedHashes — an older entry
|
|
162
|
+
* without it still falls back to raw-hash-only (stale), same as with the flag off.
|
|
163
|
+
*/
|
|
164
|
+
semanticDiff?: boolean;
|
|
102
165
|
}
|
|
103
166
|
export interface BrainStats {
|
|
104
167
|
totalEntries: number;
|
|
@@ -137,6 +200,47 @@ export declare function bm25Score(queryTerms: string[], docTermFreq: Record<stri
|
|
|
137
200
|
* Jaccard similarity between two term sets.
|
|
138
201
|
*/
|
|
139
202
|
export declare function jaccardSimilarity(setA: Set<string>, setB: Set<string>): number;
|
|
203
|
+
/** A `derivedFrom` id resolves to either a full entry or one of its claims. */
|
|
204
|
+
export type FreshnessNode = {
|
|
205
|
+
kind: 'entry';
|
|
206
|
+
entry: BrainEntry;
|
|
207
|
+
} | {
|
|
208
|
+
kind: 'claim';
|
|
209
|
+
claim: Claim;
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Looks up a `derivedFrom` id against both entries and claims in one pass. `claimIndex`
|
|
213
|
+
* is built once per outer call (search/verifyByIds) and threaded through recursion,
|
|
214
|
+
* never rebuilt per level — rebuilding per level would turn a bounded-depth walk into
|
|
215
|
+
* O(depth * entries) work for no reason.
|
|
216
|
+
*/
|
|
217
|
+
export declare function resolveFreshnessNode(entries: Map<string, BrainEntry>, claimIndex: Map<string, Claim>, id: string): FreshnessNode | undefined;
|
|
218
|
+
/** Builds an id -> Claim index across every entry's claims, for resolveFreshnessNode. */
|
|
219
|
+
export declare function buildClaimIndex(entries: Map<string, BrainEntry>): Map<string, Claim>;
|
|
220
|
+
/**
|
|
221
|
+
* Bound on how many `derivedFrom` hops checkEntryFreshness will walk. Procedence chains
|
|
222
|
+
* are meant to be short (a conclusion built on a conclusion, maybe twice); an unbounded
|
|
223
|
+
* walk would turn every search() result into a full graph traversal.
|
|
224
|
+
*/
|
|
225
|
+
export declare const MAX_DERIVED_DEPTH = 3;
|
|
226
|
+
/**
|
|
227
|
+
* True only if every file/symbol this entry was recorded against still hashes the same,
|
|
228
|
+
* AND (when `derivedFrom` is present and a resolver was passed) every memory this one was
|
|
229
|
+
* built on top of is itself still fresh, walked up to MAX_DERIVED_DEPTH hops. A file that
|
|
230
|
+
* also has a tracked symbol is judged by the symbol's hash, not the whole file's — an edit
|
|
231
|
+
* elsewhere in the same file (a different function, an import, a comment) must not
|
|
232
|
+
* invalidate a memory that was only ever about one specific symbol.
|
|
233
|
+
*/
|
|
234
|
+
export declare function checkEntryFreshness(entry: BrainEntry, resolveNode?: (id: string) => FreshnessNode | undefined, depth?: number, visited?: Set<string>, semanticDiff?: boolean): {
|
|
235
|
+
fresh: boolean;
|
|
236
|
+
staleFiles: string[];
|
|
237
|
+
cosmeticChanges?: string[];
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Same hash-compare as checkEntryFreshness, scoped to one claim's own evidence — a claim
|
|
241
|
+
* with no fileHashes/symbolHashes at all is always fresh (nothing tracked to go stale).
|
|
242
|
+
*/
|
|
243
|
+
export declare function checkClaimFreshness(claim: Claim, semanticDiff?: boolean): ClaimFreshness;
|
|
140
244
|
export declare class TheBrainV2 {
|
|
141
245
|
private entries;
|
|
142
246
|
private invertedIndex;
|
|
@@ -156,11 +260,33 @@ export declare class TheBrainV2 {
|
|
|
156
260
|
* Store a query+response pair in the brain.
|
|
157
261
|
* Returns false if detected as duplicate (>= dupThreshold similarity).
|
|
158
262
|
*/
|
|
159
|
-
store(query: string, response: string, provider?: string, dupThreshold?: number, filePaths?: string[], projectId?: string, outcome?: 'confirmed' | 'failed', symbolRefs?: SymbolRef[], claimInputs?: ClaimInput[]): {
|
|
263
|
+
store(query: string, response: string, provider?: string, dupThreshold?: number, filePaths?: string[], projectId?: string, outcome?: 'confirmed' | 'failed', symbolRefs?: SymbolRef[], claimInputs?: ClaimInput[], domain?: string, derivedFrom?: string[]): {
|
|
160
264
|
stored: boolean;
|
|
161
265
|
reason: string;
|
|
162
266
|
duplicate?: BrainSearchResult;
|
|
267
|
+
conflicts?: Array<{
|
|
268
|
+
id: string;
|
|
269
|
+
query: string;
|
|
270
|
+
outcome: 'confirmed' | 'failed';
|
|
271
|
+
}>;
|
|
163
272
|
};
|
|
273
|
+
/**
|
|
274
|
+
* Hard cap on entry count. Past this, the inverted index keeps growing and old, unused
|
|
275
|
+
* entries dilute every future BM25 IDF calculation (more docs sharing a term → lower
|
|
276
|
+
* signal) without ever being asked for again. Evicting keeps ranking quality from
|
|
277
|
+
* degrading as the Brain accumulates months of memories.
|
|
278
|
+
*/
|
|
279
|
+
private static readonly MAX_ENTRIES;
|
|
280
|
+
/** How many entries to evict per pass once over MAX_ENTRIES — batched, not one-at-a-time. */
|
|
281
|
+
private static readonly EVICT_BATCH;
|
|
282
|
+
/**
|
|
283
|
+
* Evict the lowest-value entries once the Brain is over capacity. Value = hits (proven
|
|
284
|
+
* usefulness) with a mild recency tiebreak — never based on similarity to any one query,
|
|
285
|
+
* since an entry unrelated to today's search may still be exactly what tomorrow's needs.
|
|
286
|
+
* Failed-outcome entries are cheap to keep (they're short, deliberate warnings) so they're
|
|
287
|
+
* evicted last among equally-unused entries rather than first.
|
|
288
|
+
*/
|
|
289
|
+
private evictIfOverCapacity;
|
|
164
290
|
/**
|
|
165
291
|
* Search brain using BM25 + Jaccard re-ranking.
|
|
166
292
|
* Returns results with similarity scores normalized to 0-1.
|
|
@@ -180,6 +306,28 @@ export declare class TheBrainV2 {
|
|
|
180
306
|
similarity: number;
|
|
181
307
|
existing?: BrainSearchResult;
|
|
182
308
|
};
|
|
309
|
+
/**
|
|
310
|
+
* Record that a specific memory turned out NOT to help — the caller acted on it and it
|
|
311
|
+
* was wrong, misleading, or irrelevant despite ranking well. Unlike `outcome: 'failed'`
|
|
312
|
+
* (set at store time, about the underlying approach), this is set after the fact, about
|
|
313
|
+
* the memory's usefulness as a search result. Lowers future ranking and eviction priority
|
|
314
|
+
* without deleting the entry — a bad-fit-today memory may still be exactly right for a
|
|
315
|
+
* differently-phrased query tomorrow.
|
|
316
|
+
*/
|
|
317
|
+
downvote(id: string): {
|
|
318
|
+
ok: boolean;
|
|
319
|
+
message: string;
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* Revalidate ids from a prior search_memory/store_memory result via hash-compare only —
|
|
323
|
+
* no BM25, no `search()`. `ids` may mix entry ids and claim ids freely; each resolves
|
|
324
|
+
* independently and unknown ids fail closed to "unknown", never "fresh" (an id may be
|
|
325
|
+
* unknown because the entry was purged, or because the symbol it named was renamed —
|
|
326
|
+
* either way there is nothing left to vouch for it).
|
|
327
|
+
*/
|
|
328
|
+
verifyByIds(ids: string[], options?: {
|
|
329
|
+
semanticDiff?: boolean;
|
|
330
|
+
}): VerifyMemoryResult[];
|
|
183
331
|
getStats(): BrainStats;
|
|
184
332
|
clear(): void;
|
|
185
333
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TheBrainV2.d.ts","sourceRoot":"","sources":["../../../src/subconscious/TheBrainV2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACjC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TheBrainV2.d.ts","sourceRoot":"","sources":["../../../src/subconscious/TheBrainV2.ts"],"names":[],"mappings":"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"}
|