lemma-mcp 0.7.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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +474 -0
  3. package/README.tr.md +384 -0
  4. package/dist/guides/core.d.ts +33 -0
  5. package/dist/guides/core.d.ts.map +1 -0
  6. package/dist/guides/core.js +424 -0
  7. package/dist/guides/core.js.map +1 -0
  8. package/dist/guides/index.d.ts +2 -0
  9. package/dist/guides/index.d.ts.map +1 -0
  10. package/dist/guides/index.js +2 -0
  11. package/dist/guides/index.js.map +1 -0
  12. package/dist/guides/task-map.d.ts +3 -0
  13. package/dist/guides/task-map.d.ts.map +1 -0
  14. package/dist/guides/task-map.js +107 -0
  15. package/dist/guides/task-map.js.map +1 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +7 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/memory/config.d.ts +6 -0
  21. package/dist/memory/config.d.ts.map +1 -0
  22. package/dist/memory/config.js +69 -0
  23. package/dist/memory/config.js.map +1 -0
  24. package/dist/memory/core.d.ts +27 -0
  25. package/dist/memory/core.d.ts.map +1 -0
  26. package/dist/memory/core.js +415 -0
  27. package/dist/memory/core.js.map +1 -0
  28. package/dist/memory/index.d.ts +2 -0
  29. package/dist/memory/index.d.ts.map +1 -0
  30. package/dist/memory/index.js +2 -0
  31. package/dist/memory/index.js.map +1 -0
  32. package/dist/server/handlers.d.ts +131 -0
  33. package/dist/server/handlers.d.ts.map +1 -0
  34. package/dist/server/handlers.js +694 -0
  35. package/dist/server/handlers.js.map +1 -0
  36. package/dist/server/hooks.d.ts +16 -0
  37. package/dist/server/hooks.d.ts.map +1 -0
  38. package/dist/server/hooks.js +77 -0
  39. package/dist/server/hooks.js.map +1 -0
  40. package/dist/server/index.d.ts +5 -0
  41. package/dist/server/index.d.ts.map +1 -0
  42. package/dist/server/index.js +322 -0
  43. package/dist/server/index.js.map +1 -0
  44. package/dist/server/system-prompt.d.ts +5 -0
  45. package/dist/server/system-prompt.d.ts.map +1 -0
  46. package/dist/server/system-prompt.js +143 -0
  47. package/dist/server/system-prompt.js.map +1 -0
  48. package/dist/server/tools.d.ts +22 -0
  49. package/dist/server/tools.d.ts.map +1 -0
  50. package/dist/server/tools.js +443 -0
  51. package/dist/server/tools.js.map +1 -0
  52. package/dist/sessions/core.d.ts +17 -0
  53. package/dist/sessions/core.d.ts.map +1 -0
  54. package/dist/sessions/core.js +162 -0
  55. package/dist/sessions/core.js.map +1 -0
  56. package/dist/sessions/index.d.ts +2 -0
  57. package/dist/sessions/index.d.ts.map +1 -0
  58. package/dist/sessions/index.js +2 -0
  59. package/dist/sessions/index.js.map +1 -0
  60. package/dist/sessions/virtual.d.ts +23 -0
  61. package/dist/sessions/virtual.d.ts.map +1 -0
  62. package/dist/sessions/virtual.js +157 -0
  63. package/dist/sessions/virtual.js.map +1 -0
  64. package/dist/types.d.ts +143 -0
  65. package/dist/types.d.ts.map +1 -0
  66. package/dist/types.js +2 -0
  67. package/dist/types.js.map +1 -0
  68. package/package.json +62 -0
@@ -0,0 +1,69 @@
1
+ import os from "os";
2
+ import path from "path";
3
+ import fs from "fs";
4
+ const CONFIG_PATH = path.join(os.homedir(), ".lemma", "config.json");
5
+ const DEFAULT_CONFIG = {
6
+ token_budget: {
7
+ full_content: 3000,
8
+ summary_index: 1000,
9
+ guides_detail: 1000,
10
+ },
11
+ injection: {
12
+ max_full_content_fragments: 15,
13
+ max_summary_fragments: 30,
14
+ max_guides: 20,
15
+ max_guide_detail: 3,
16
+ },
17
+ virtual_session: {
18
+ timeout_minutes: 30,
19
+ },
20
+ };
21
+ let _config = null;
22
+ let _configDir = null;
23
+ export function setConfigDir(dir) {
24
+ _configDir = dir;
25
+ }
26
+ function getConfigPath() {
27
+ return _configDir ? path.join(_configDir, "config.json") : CONFIG_PATH;
28
+ }
29
+ export function loadConfig() {
30
+ if (_config)
31
+ return _config;
32
+ const configPath = getConfigPath();
33
+ try {
34
+ if (fs.existsSync(configPath)) {
35
+ const raw = fs.readFileSync(configPath, "utf-8");
36
+ const userConfig = JSON.parse(raw);
37
+ _config = deepMerge(DEFAULT_CONFIG, userConfig);
38
+ }
39
+ else {
40
+ _config = { ...DEFAULT_CONFIG };
41
+ }
42
+ }
43
+ catch {
44
+ _config = { ...DEFAULT_CONFIG };
45
+ }
46
+ return _config;
47
+ }
48
+ export function resetConfig() {
49
+ _config = null;
50
+ }
51
+ function deepMerge(target, source) {
52
+ const result = { ...target };
53
+ for (const key of Object.keys(source)) {
54
+ const srcVal = source[key];
55
+ if (srcVal && typeof srcVal === "object" && !Array.isArray(srcVal)) {
56
+ result[key] = deepMerge((result[key] || {}), srcVal);
57
+ }
58
+ else {
59
+ result[key] = srcVal;
60
+ }
61
+ }
62
+ return result;
63
+ }
64
+ export function estimateTokens(text) {
65
+ if (!text)
66
+ return 0;
67
+ return Math.ceil(text.length / 3.5);
68
+ }
69
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAErE,MAAM,cAAc,GAAgB;IAClC,YAAY,EAAE;QACZ,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;KACpB;IACD,SAAS,EAAE;QACT,0BAA0B,EAAE,EAAE;QAC9B,qBAAqB,EAAE,EAAE;QACzB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,CAAC;KACpB;IACD,eAAe,EAAE;QACf,eAAe,EAAE,EAAE;KACpB;CACF,CAAC;AAEF,IAAI,OAAO,GAAuB,IAAI,CAAC;AACvC,IAAI,UAAU,GAAkB,IAAI,CAAC;AAErC,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,UAAU,GAAG,GAAG,CAAC;AACnB,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,GAAG,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,MAAmB,EAAE,MAA+B;IACrE,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAA6B,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAI,MAAkC,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAgB,EAAE,MAAiC,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,MAAgC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA+B;IAC5D,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { MemoryFragment, MemoryStats, AuditResult } from "../types.js";
2
+ export declare function setMemoryDir(dir: string): void;
3
+ export declare function generateId(): string;
4
+ export declare function detectProject(): string | null;
5
+ export declare function createFragment(fragment: string, source: "user" | "ai", title?: string | null, project?: string | null, description?: string | null): MemoryFragment;
6
+ export declare function findSimilarFragment(fragments: MemoryFragment[], fragmentText: string, project: string | null, threshold?: number): MemoryFragment | null;
7
+ export declare function boostOnAccess(fragment: MemoryFragment, context?: string | null): MemoryFragment;
8
+ export declare function recordNegativeHit(fragment: MemoryFragment): MemoryFragment;
9
+ export declare function trackAssociations(fragments: MemoryFragment[], accessedId: string, sessionIds: string[]): void;
10
+ export declare function loadMemory(): MemoryFragment[];
11
+ export declare function saveMemory(fragments: MemoryFragment[], options?: {
12
+ force?: boolean;
13
+ }): void;
14
+ export declare function saveMemorySafe(fragments: MemoryFragment[], options?: {
15
+ force?: boolean;
16
+ }): Promise<void>;
17
+ export declare function applySessionDecay(): MemoryFragment[];
18
+ export declare function filterByProject(fragments: MemoryFragment[], currentProject: string | null): MemoryFragment[];
19
+ export declare function decayConfidence(fragments: MemoryFragment[]): MemoryFragment[];
20
+ export declare function searchAndSortFragments(fragments: MemoryFragment[], query?: string | null, topK?: number): MemoryFragment[];
21
+ export declare function formatMemoryForLLM(fragments: MemoryFragment[], currentProject?: string | null): string;
22
+ export declare function formatMemoryDetail(fragment: MemoryFragment | null): string;
23
+ export declare function calculateStats(fragments: MemoryFragment[], project?: string | null): MemoryStats;
24
+ export declare function formatStats(stats: MemoryStats): string;
25
+ export declare function auditMemory(fragments: MemoryFragment[]): AuditResult;
26
+ export declare function formatAuditReport(result: AuditResult): string;
27
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/memory/core.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK5E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG9C;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAQ7C;AAeD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,EAAE,OAAO,GAAE,MAAM,GAAG,IAAW,EAAE,WAAW,GAAE,MAAM,GAAG,IAAW,GAAG,cAAc,CA+BrL;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,SAAO,GAAG,cAAc,GAAG,IAAI,CAqBtJ;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,cAAc,CAerG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAO1E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAmB7G;AAED,wBAAgB,UAAU,IAAI,cAAc,EAAE,CAkB7C;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAsC/F;AAyBD,wBAAsB,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlH;AAED,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAKpD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,EAAE,CAY5G;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAa7E;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,EAAE,IAAI,SAAK,GAAG,cAAc,EAAE,CAyC5H;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,cAAc,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAc5G;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,CAsC1E;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,WAAW,CAkCtG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAWtD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,WAAW,CAsCpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAW7D"}
@@ -0,0 +1,415 @@
1
+ import os from "os";
2
+ import path from "path";
3
+ import fs from "fs";
4
+ import crypto from "crypto";
5
+ import Fuse from "fuse.js";
6
+ let MEMORY_DIR = path.join(os.homedir(), ".lemma");
7
+ let MEMORY_FILE = path.join(MEMORY_DIR, "memory.jsonl");
8
+ export function setMemoryDir(dir) {
9
+ MEMORY_DIR = dir;
10
+ MEMORY_FILE = path.join(MEMORY_DIR, "memory.jsonl");
11
+ }
12
+ export function generateId() {
13
+ return "m" + crypto.randomUUID().replace(/-/g, "").substring(0, 12);
14
+ }
15
+ export function detectProject() {
16
+ try {
17
+ const cwd = process.cwd();
18
+ const projectName = path.basename(cwd);
19
+ return projectName || null;
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ function generateDescription(fragment, title) {
26
+ if (fragment.length <= 80) {
27
+ return fragment;
28
+ }
29
+ const firstSentence = fragment.split(/[.!?\n]/)[0];
30
+ if (firstSentence && firstSentence.length <= 100) {
31
+ return firstSentence.trim() + (firstSentence.endsWith('.') ? '' : '...');
32
+ }
33
+ return fragment.substring(0, 80).trim() + '...';
34
+ }
35
+ export function createFragment(fragment, source, title = null, project = null, description = null) {
36
+ const autoTitle = title || (fragment.length > 40 ? fragment.substring(0, 40) + "..." : fragment);
37
+ const autoDescription = description || generateDescription(fragment, autoTitle);
38
+ const now = new Date();
39
+ return {
40
+ id: generateId(),
41
+ title: autoTitle,
42
+ description: autoDescription,
43
+ fragment: fragment,
44
+ project: project,
45
+ confidence: 1.0,
46
+ source: source,
47
+ created: now.toISOString().split("T")[0] ?? "",
48
+ lastAccessed: now.toISOString(),
49
+ accessed: 0,
50
+ tags: [],
51
+ associatedWith: [],
52
+ negativeHits: 0,
53
+ quality_score: null,
54
+ refinement_count: 0,
55
+ parent_id: null,
56
+ child_ids: [],
57
+ session_id: null,
58
+ task_type: null,
59
+ outcome: null,
60
+ positive_feedback: 0,
61
+ negative_feedback: 0,
62
+ last_refined: null
63
+ };
64
+ }
65
+ export function findSimilarFragment(fragments, fragmentText, project, threshold = 0.65) {
66
+ const scopedFragments = filterByProject(fragments, project);
67
+ if (scopedFragments.length === 0)
68
+ return null;
69
+ const fuse = new Fuse(scopedFragments, {
70
+ keys: ['fragment', 'title'],
71
+ threshold: 0.3,
72
+ includeScore: true,
73
+ ignoreLocation: true,
74
+ });
75
+ const fuseResults = fuse.search(fragmentText, { limit: 3 });
76
+ for (const result of fuseResults) {
77
+ const similarity = 1 - (result.score || 1);
78
+ if (similarity >= threshold) {
79
+ return result.item;
80
+ }
81
+ }
82
+ return null;
83
+ }
84
+ export function boostOnAccess(fragment, context = null) {
85
+ const boosted = { ...fragment };
86
+ boosted.confidence = Math.min(1.0, boosted.confidence + 0.1);
87
+ boosted.accessed++;
88
+ boosted.lastAccessed = new Date().toISOString();
89
+ if (context && typeof context === "string") {
90
+ const tags = boosted.tags || [];
91
+ const newTag = context.trim().toLowerCase();
92
+ if (newTag && !tags.includes(newTag)) {
93
+ boosted.tags = [...tags, newTag];
94
+ }
95
+ }
96
+ return boosted;
97
+ }
98
+ export function recordNegativeHit(fragment) {
99
+ return {
100
+ ...fragment,
101
+ confidence: Math.max(0, fragment.confidence - 0.1),
102
+ negativeHits: (fragment.negativeHits || 0) + 1,
103
+ lastAccessed: new Date().toISOString()
104
+ };
105
+ }
106
+ export function trackAssociations(fragments, accessedId, sessionIds) {
107
+ if (!sessionIds || sessionIds.length === 0)
108
+ return;
109
+ const target = fragments.find(f => f.id === accessedId);
110
+ if (!target)
111
+ return;
112
+ const existing = new Set(target.associatedWith || []);
113
+ for (const id of sessionIds) {
114
+ if (id !== accessedId && !existing.has(id)) {
115
+ existing.add(id);
116
+ const other = fragments.find(f => f.id === id);
117
+ if (other) {
118
+ const otherAssoc = new Set(other.associatedWith || []);
119
+ otherAssoc.add(accessedId);
120
+ other.associatedWith = [...otherAssoc];
121
+ }
122
+ }
123
+ }
124
+ target.associatedWith = [...existing];
125
+ }
126
+ export function loadMemory() {
127
+ try {
128
+ if (!fs.existsSync(MEMORY_FILE)) {
129
+ return [];
130
+ }
131
+ const content = fs.readFileSync(MEMORY_FILE, "utf-8");
132
+ if (!content.trim()) {
133
+ return [];
134
+ }
135
+ return content
136
+ .trim()
137
+ .split("\n")
138
+ .map(line => JSON.parse(line));
139
+ }
140
+ catch (error) {
141
+ const msg = error instanceof Error ? error.message : String(error);
142
+ console.error("Error loading memory:", msg);
143
+ return [];
144
+ }
145
+ }
146
+ export function saveMemory(fragments, options = {}) {
147
+ try {
148
+ const dir = path.dirname(MEMORY_FILE);
149
+ if (!fs.existsSync(dir)) {
150
+ fs.mkdirSync(dir, { recursive: true });
151
+ }
152
+ if ((!fragments || fragments.length === 0) && !options.force) {
153
+ console.warn("WARNING: Attempted to save empty memory array - ABORTED to prevent data loss");
154
+ return;
155
+ }
156
+ const jsonl = fragments && fragments.length > 0 ? fragments.map(f => JSON.stringify(f)).join("\n") : "";
157
+ const backupFile = MEMORY_FILE + ".bak";
158
+ if (fs.existsSync(backupFile)) {
159
+ try {
160
+ const backupContent = fs.readFileSync(backupFile, "utf-8");
161
+ const backupEntries = backupContent.trim().split("\n").filter(Boolean).map(l => JSON.parse(l));
162
+ const backupIds = new Set(backupEntries.map((e) => e.id));
163
+ const newEntries = fragments.filter(f => !backupIds.has(f.id));
164
+ if (newEntries.length > 0) {
165
+ const merged = [...backupEntries, ...newEntries];
166
+ fs.writeFileSync(backupFile, merged.map(f => JSON.stringify(f)).join("\n"), "utf-8");
167
+ }
168
+ }
169
+ catch {
170
+ fs.writeFileSync(backupFile, jsonl, "utf-8");
171
+ }
172
+ }
173
+ else {
174
+ fs.writeFileSync(backupFile, jsonl, "utf-8");
175
+ }
176
+ fs.writeFileSync(MEMORY_FILE, jsonl, "utf-8");
177
+ }
178
+ catch (error) {
179
+ const msg = error instanceof Error ? error.message : String(error);
180
+ console.error("Error saving memory:", msg);
181
+ throw error;
182
+ }
183
+ }
184
+ let writeLock = false;
185
+ let writeQueue = [];
186
+ function acquireLock() {
187
+ return new Promise((resolve) => {
188
+ if (!writeLock) {
189
+ writeLock = true;
190
+ resolve();
191
+ }
192
+ else {
193
+ writeQueue.push(resolve);
194
+ }
195
+ });
196
+ }
197
+ function releaseLock() {
198
+ writeLock = false;
199
+ if (writeQueue.length > 0) {
200
+ writeLock = true;
201
+ const next = writeQueue.shift();
202
+ next();
203
+ }
204
+ }
205
+ export async function saveMemorySafe(fragments, options = {}) {
206
+ await acquireLock();
207
+ try {
208
+ saveMemory(fragments, options);
209
+ }
210
+ finally {
211
+ releaseLock();
212
+ }
213
+ }
214
+ export function applySessionDecay() {
215
+ const memory = loadMemory();
216
+ const decayed = decayConfidence(memory);
217
+ saveMemory(decayed);
218
+ return decayed;
219
+ }
220
+ export function filterByProject(fragments, currentProject) {
221
+ const project = (typeof currentProject === 'string')
222
+ ? currentProject.trim().toLowerCase() || null
223
+ : null;
224
+ if (!project) {
225
+ return fragments.filter(f => f.project === null || f.project === undefined);
226
+ }
227
+ return fragments.filter(f => (f.project && f.project.toLowerCase() === project) ||
228
+ (f.project === null || f.project === undefined));
229
+ }
230
+ export function decayConfidence(fragments) {
231
+ return fragments
232
+ .map(frag => {
233
+ const sessionDecay = Math.max(0.005, 0.05 - (frag.accessed * 0.005));
234
+ const newConfidence = frag.confidence - sessionDecay;
235
+ return {
236
+ ...frag,
237
+ confidence: Math.max(0, newConfidence),
238
+ accessed: 0,
239
+ negativeHits: 0
240
+ };
241
+ });
242
+ }
243
+ export function searchAndSortFragments(fragments, query = null, topK = 30) {
244
+ const nowDate = new Date().toISOString();
245
+ if (!query) {
246
+ const sorted = [...fragments]
247
+ .sort((a, b) => b.confidence - a.confidence)
248
+ .slice(0, topK);
249
+ sorted.forEach(frag => { frag.lastAccessed = nowDate; });
250
+ return sorted;
251
+ }
252
+ const fuseOptions = {
253
+ keys: [
254
+ { name: 'title', weight: 0.4 },
255
+ { name: 'fragment', weight: 0.6 }
256
+ ],
257
+ threshold: 0.3,
258
+ distance: 100,
259
+ minMatchCharLength: 2,
260
+ includeScore: true,
261
+ ignoreLocation: true,
262
+ findAllMatches: true
263
+ };
264
+ const fuse = new Fuse(fragments, fuseOptions);
265
+ const fuseResults = fuse.search(query, { limit: topK });
266
+ if (fuseResults.length > 0) {
267
+ const topResults = fuseResults.map(r => r.item);
268
+ topResults.sort((a, b) => b.confidence - a.confidence);
269
+ topResults.forEach(frag => { frag.lastAccessed = nowDate; });
270
+ return topResults;
271
+ }
272
+ const fallback = [...fragments]
273
+ .sort((a, b) => b.confidence - a.confidence)
274
+ .slice(0, topK);
275
+ fallback.forEach(frag => { frag.lastAccessed = nowDate; });
276
+ return fallback;
277
+ }
278
+ export function formatMemoryForLLM(fragments, currentProject = null) {
279
+ const projectHeader = currentProject ? ` (${currentProject})` : "";
280
+ if (fragments.length === 0) {
281
+ return `## Memory Fragments${projectHeader}\n---\n(no fragments)\n---`;
282
+ }
283
+ const lines = fragments.map(frag => {
284
+ const scopeTag = frag.project || "global";
285
+ const summary = frag.description || frag.title;
286
+ return `[${frag.id}] [${scopeTag}] ${frag.title} — ${summary}`;
287
+ });
288
+ return `## Memory Fragments${projectHeader}\n---\n${lines.join("\n")}\n---`;
289
+ }
290
+ export function formatMemoryDetail(fragment) {
291
+ if (!fragment) {
292
+ return "Fragment not found.";
293
+ }
294
+ const barCount = Math.round(fragment.confidence / 0.2);
295
+ const confidenceBar = "█".repeat(barCount) + "░".repeat(5 - barCount);
296
+ const sourceIcon = fragment.source === "ai" ? "🤖" : "👤";
297
+ const scopeTag = fragment.project ? `[${fragment.project}]` : "[global]";
298
+ let detail = `=== MEMORY FRAGMENT DETAIL ===\n`;
299
+ detail += `ID: [${fragment.id}] ${confidenceBar} (${sourceIcon}) ${scopeTag}\n`;
300
+ detail += `Title: ${fragment.title}\n`;
301
+ if (fragment.description && fragment.description !== fragment.title) {
302
+ detail += `Summary: ${fragment.description}\n`;
303
+ }
304
+ detail += `Created: ${fragment.created} | Confidence: ${fragment.confidence.toFixed(2)}\n`;
305
+ if (fragment.tags && fragment.tags.length > 0) {
306
+ detail += `Tags: ${fragment.tags.join(", ")}\n`;
307
+ }
308
+ if (fragment.associatedWith && fragment.associatedWith.length > 0) {
309
+ detail += `Related: ${fragment.associatedWith.join(", ")}\n`;
310
+ }
311
+ if (fragment.positive_feedback > 0 || fragment.negative_feedback > 0) {
312
+ detail += `Feedback: ${fragment.positive_feedback || 0} positive, ${fragment.negative_feedback || 0} negative\n`;
313
+ }
314
+ if (fragment.refinement_count > 0) {
315
+ detail += `Refinements: ${fragment.refinement_count}\n`;
316
+ }
317
+ if (fragment.parent_id) {
318
+ detail += `Refined from: [${fragment.parent_id}]\n`;
319
+ }
320
+ if (fragment.child_ids && fragment.child_ids.length > 0) {
321
+ detail += `Refined into: ${fragment.child_ids.map(id => `[${id}]`).join(", ")}\n`;
322
+ }
323
+ detail += `--- CONTENT ---\n${fragment.fragment}\n==============`;
324
+ return detail;
325
+ }
326
+ export function calculateStats(fragments, project = null) {
327
+ const filtered = project
328
+ ? filterByProject(fragments, project)
329
+ : fragments;
330
+ if (filtered.length === 0) {
331
+ return {
332
+ total: 0,
333
+ avg_confidence: 0,
334
+ by_source: {},
335
+ by_project: {},
336
+ low_confidence: 0,
337
+ high_confidence: 0,
338
+ };
339
+ }
340
+ const avgConf = filtered.reduce((sum, f) => sum + f.confidence, 0) / filtered.length;
341
+ const bySource = {};
342
+ const byProject = {};
343
+ for (const f of filtered) {
344
+ bySource[f.source] = (bySource[f.source] || 0) + 1;
345
+ const scope = f.project || "global";
346
+ byProject[scope] = (byProject[scope] || 0) + 1;
347
+ }
348
+ return {
349
+ total: filtered.length,
350
+ avg_confidence: Math.round(avgConf * 100) / 100,
351
+ by_source: bySource,
352
+ by_project: byProject,
353
+ low_confidence: filtered.filter(f => f.confidence < 0.3).length,
354
+ high_confidence: filtered.filter(f => f.confidence > 0.8).length,
355
+ };
356
+ }
357
+ export function formatStats(stats) {
358
+ let output = `## Memory Stats\n`;
359
+ output += `Total: ${stats.total} fragments | Avg confidence: ${stats.avg_confidence}\n`;
360
+ if (stats.total > 0) {
361
+ output += `High confidence (>0.8): ${stats.high_confidence} | Low (<0.3): ${stats.low_confidence}\n`;
362
+ const sources = Object.entries(stats.by_source).map(([k, v]) => `${k}: ${v}`).join(", ");
363
+ output += `Sources: ${sources}\n`;
364
+ const projects = Object.entries(stats.by_project).map(([k, v]) => `${k}: ${v}`).join(", ");
365
+ output += `Projects: ${projects}\n`;
366
+ }
367
+ return output;
368
+ }
369
+ export function auditMemory(fragments) {
370
+ const issues = [];
371
+ const ids = new Set();
372
+ const duplicates = [];
373
+ for (const f of fragments) {
374
+ if (ids.has(f.id)) {
375
+ duplicates.push(f.id);
376
+ }
377
+ ids.add(f.id);
378
+ if (typeof f.confidence !== "number" || f.confidence < 0 || f.confidence > 1) {
379
+ issues.push(`Fragment [${f.id}] has invalid confidence: ${f.confidence}`);
380
+ }
381
+ if (!f.fragment || typeof f.fragment !== "string") {
382
+ issues.push(`Fragment [${f.id}] has missing or invalid fragment text`);
383
+ }
384
+ if (f.associatedWith) {
385
+ for (const assocId of f.associatedWith) {
386
+ if (!ids.has(assocId) && !fragments.find(x => x.id === assocId)) {
387
+ issues.push(`Fragment [${f.id}] references non-existent associated fragment [${assocId}]`);
388
+ }
389
+ }
390
+ }
391
+ }
392
+ if (duplicates.length > 0) {
393
+ issues.push(`Duplicate IDs found: ${duplicates.join(", ")}`);
394
+ }
395
+ return {
396
+ total_fragments: fragments.length,
397
+ issues_found: issues.length,
398
+ issues,
399
+ healthy: issues.length === 0,
400
+ };
401
+ }
402
+ export function formatAuditReport(result) {
403
+ let output = `## Memory Audit\n`;
404
+ output += `Total fragments: ${result.total_fragments} | Issues: ${result.issues_found}\n`;
405
+ if (result.issues.length > 0) {
406
+ for (const issue of result.issues) {
407
+ output += ` ! ${issue}\n`;
408
+ }
409
+ }
410
+ else {
411
+ output += `All clear — no issues found.\n`;
412
+ }
413
+ return output;
414
+ }
415
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/memory/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { generateId, detectProject, createFragment, findSimilarFragment, loadMemory, saveMemory, saveMemorySafe, applySessionDecay, filterByProject, decayConfidence, searchAndSortFragments, formatMemoryForLLM, formatMemoryDetail, boostOnAccess, recordNegativeHit, trackAssociations, setMemoryDir, calculateStats, formatStats, auditMemory, formatAuditReport } from "./core.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EAClB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { generateId, detectProject, createFragment, findSimilarFragment, loadMemory, saveMemory, saveMemorySafe, applySessionDecay, filterByProject, decayConfidence, searchAndSortFragments, formatMemoryForLLM, formatMemoryDetail, boostOnAccess, recordNegativeHit, trackAssociations, setMemoryDir, calculateStats, formatStats, auditMemory, formatAuditReport } from "./core.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,EAClB,MAAM,WAAW,CAAC"}