claude-memory-store 0.1.1 → 0.1.3

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 (124) hide show
  1. package/README.md +278 -76
  2. package/dist/atlas/client.d.ts +0 -2
  3. package/dist/atlas/client.d.ts.map +1 -1
  4. package/dist/atlas/client.js +0 -8
  5. package/dist/atlas/client.js.map +1 -1
  6. package/dist/atlas/embeddings.d.ts +31 -4
  7. package/dist/atlas/embeddings.d.ts.map +1 -1
  8. package/dist/atlas/embeddings.js +31 -4
  9. package/dist/atlas/embeddings.js.map +1 -1
  10. package/dist/atlas/indexes.d.ts.map +1 -1
  11. package/dist/atlas/indexes.js +5 -3
  12. package/dist/atlas/indexes.js.map +1 -1
  13. package/dist/atlas/vector.d.ts +11 -1
  14. package/dist/atlas/vector.d.ts.map +1 -1
  15. package/dist/atlas/vector.js +50 -3
  16. package/dist/atlas/vector.js.map +1 -1
  17. package/dist/bin/claude-memory.js +49 -35
  18. package/dist/bin/claude-memory.js.map +1 -1
  19. package/dist/bin/mcp-server.js +7 -21
  20. package/dist/bin/mcp-server.js.map +1 -1
  21. package/dist/cache/command-cache.js +1 -1
  22. package/dist/cache/command-cache.js.map +1 -1
  23. package/dist/cleanup.d.ts +6 -3
  24. package/dist/cleanup.d.ts.map +1 -1
  25. package/dist/cleanup.js +31 -11
  26. package/dist/cleanup.js.map +1 -1
  27. package/dist/config.d.ts +5 -0
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +23 -0
  30. package/dist/config.js.map +1 -1
  31. package/dist/decay.d.ts +29 -0
  32. package/dist/decay.d.ts.map +1 -0
  33. package/dist/decay.js +58 -0
  34. package/dist/decay.js.map +1 -0
  35. package/dist/editor/charts.d.ts +9 -0
  36. package/dist/editor/charts.d.ts.map +1 -0
  37. package/dist/editor/charts.js +157 -0
  38. package/dist/editor/charts.js.map +1 -0
  39. package/dist/editor/colors.d.ts +28 -0
  40. package/dist/editor/colors.d.ts.map +1 -0
  41. package/dist/editor/colors.js +66 -0
  42. package/dist/editor/colors.js.map +1 -0
  43. package/dist/editor/dashboard.d.ts +26 -0
  44. package/dist/editor/dashboard.d.ts.map +1 -0
  45. package/dist/editor/dashboard.js +156 -0
  46. package/dist/editor/dashboard.js.map +1 -0
  47. package/dist/editor/interactive.d.ts +24 -0
  48. package/dist/editor/interactive.d.ts.map +1 -0
  49. package/dist/editor/interactive.js +533 -0
  50. package/dist/editor/interactive.js.map +1 -0
  51. package/dist/hooks/pre-tool-use.d.ts.map +1 -1
  52. package/dist/hooks/pre-tool-use.js +15 -4
  53. package/dist/hooks/pre-tool-use.js.map +1 -1
  54. package/dist/hooks/stop.d.ts +1 -0
  55. package/dist/hooks/stop.d.ts.map +1 -1
  56. package/dist/hooks/stop.js +72 -0
  57. package/dist/hooks/stop.js.map +1 -1
  58. package/dist/index.d.ts +3 -1
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +11 -3
  61. package/dist/index.js.map +1 -1
  62. package/dist/memory/developer.d.ts.map +1 -1
  63. package/dist/memory/developer.js +4 -0
  64. package/dist/memory/developer.js.map +1 -1
  65. package/dist/memory/fading.d.ts +12 -0
  66. package/dist/memory/fading.d.ts.map +1 -0
  67. package/dist/memory/fading.js +45 -0
  68. package/dist/memory/fading.js.map +1 -0
  69. package/dist/memory/project.d.ts +2 -0
  70. package/dist/memory/project.d.ts.map +1 -1
  71. package/dist/memory/project.js +60 -0
  72. package/dist/memory/project.js.map +1 -1
  73. package/dist/memory/working.d.ts.map +1 -1
  74. package/dist/memory/working.js +1 -0
  75. package/dist/memory/working.js.map +1 -1
  76. package/dist/natural-language/parser.d.ts +6 -0
  77. package/dist/natural-language/parser.d.ts.map +1 -1
  78. package/dist/natural-language/parser.js +17 -0
  79. package/dist/natural-language/parser.js.map +1 -1
  80. package/dist/natural-language/router.d.ts.map +1 -1
  81. package/dist/natural-language/router.js +48 -33
  82. package/dist/natural-language/router.js.map +1 -1
  83. package/dist/slash-commands/recall.js +1 -1
  84. package/dist/slash-commands/recall.js.map +1 -1
  85. package/dist/slash-commands/remember.d.ts.map +1 -1
  86. package/dist/slash-commands/remember.js +8 -2
  87. package/dist/slash-commands/remember.js.map +1 -1
  88. package/dist/slash-commands/stats.d.ts.map +1 -1
  89. package/dist/slash-commands/stats.js +11 -0
  90. package/dist/slash-commands/stats.js.map +1 -1
  91. package/dist/startup/conversation.d.ts +1 -0
  92. package/dist/startup/conversation.d.ts.map +1 -1
  93. package/dist/startup/conversation.js +7 -1
  94. package/dist/startup/conversation.js.map +1 -1
  95. package/dist/startup/feature-search.d.ts +5 -0
  96. package/dist/startup/feature-search.d.ts.map +1 -1
  97. package/dist/startup/feature-search.js +10 -26
  98. package/dist/startup/feature-search.js.map +1 -1
  99. package/dist/startup/injector.d.ts +1 -0
  100. package/dist/startup/injector.d.ts.map +1 -1
  101. package/dist/startup/injector.js +23 -5
  102. package/dist/startup/injector.js.map +1 -1
  103. package/dist/summarizer.d.ts.map +1 -1
  104. package/dist/summarizer.js +20 -4
  105. package/dist/summarizer.js.map +1 -1
  106. package/dist/types.d.ts +10 -2
  107. package/dist/types.d.ts.map +1 -1
  108. package/dist/watch/event-log.d.ts +11 -0
  109. package/dist/watch/event-log.d.ts.map +1 -0
  110. package/dist/watch/event-log.js +80 -0
  111. package/dist/watch/event-log.js.map +1 -0
  112. package/dist/watch/metrics.d.ts +92 -0
  113. package/dist/watch/metrics.d.ts.map +1 -0
  114. package/dist/watch/metrics.js +260 -0
  115. package/dist/watch/metrics.js.map +1 -0
  116. package/dist/watch/monitor.d.ts +9 -0
  117. package/dist/watch/monitor.d.ts.map +1 -0
  118. package/dist/watch/monitor.js +232 -0
  119. package/dist/watch/monitor.js.map +1 -0
  120. package/dist/watch/renderer.d.ts +11 -0
  121. package/dist/watch/renderer.d.ts.map +1 -0
  122. package/dist/watch/renderer.js +173 -0
  123. package/dist/watch/renderer.js.map +1 -0
  124. package/package.json +2 -2
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderDashboard = renderDashboard;
4
+ exports.gatherProjectStats = gatherProjectStats;
5
+ exports.gatherDeveloperStats = gatherDeveloperStats;
6
+ exports.formatDashboard = formatDashboard;
7
+ const colors_js_1 = require("./colors.js");
8
+ const client_js_1 = require("../atlas/client.js");
9
+ const project_id_js_1 = require("../project-id.js");
10
+ const project_js_1 = require("../memory/project.js");
11
+ const decay_js_1 = require("../decay.js");
12
+ const config_js_1 = require("../config.js");
13
+ const charts_js_1 = require("./charts.js");
14
+ const PROJECT_TYPES = ['architecture', 'pattern', 'avoid', 'thread', 'command', 'context'];
15
+ const DEV_TYPES = ['preference', 'style', 'dev_default', 'dev_avoid'];
16
+ const DISPLAY_NAMES = {
17
+ architecture: 'Architecture',
18
+ pattern: 'Patterns',
19
+ avoid: 'Avoid Rules',
20
+ thread: 'Open Threads',
21
+ command: 'Commands',
22
+ context: 'Context',
23
+ preference: 'Preferences',
24
+ style: 'Style',
25
+ dev_default: 'Defaults',
26
+ dev_avoid: 'Dev Avoid',
27
+ };
28
+ async function gatherStats(types, filterField, filterId, projectName) {
29
+ const collection = await (0, client_js_1.getCollection)();
30
+ const halfLife = (0, config_js_1.getDecayHalfLifeDays)();
31
+ const deathThreshold = (0, config_js_1.getDecayDeathThreshold)();
32
+ const docs = await collection
33
+ .find({ [filterField]: filterId, type: { $in: types } }, { projection: { type: 1, last_accessed: 1, access_count: 1, created_at: 1 } })
34
+ .toArray();
35
+ const categories = [];
36
+ let totalHealth = 0;
37
+ let totalItems = 0;
38
+ let activeItems = 0;
39
+ let decayingItems = 0;
40
+ const now = Date.now();
41
+ const dailyActivity = new Array(7).fill(0);
42
+ const dailyAccesses = new Array(7).fill(0);
43
+ const categoryMap = new Map();
44
+ for (const type of types) {
45
+ categoryMap.set(type, { count: 0, healthSum: 0, mostRecent: null });
46
+ }
47
+ for (const doc of docs) {
48
+ const type = doc.type;
49
+ const cat = categoryMap.get(type);
50
+ if (!cat)
51
+ continue;
52
+ const lastAccessed = doc.last_accessed;
53
+ const accessCount = doc.access_count;
54
+ const score = (0, decay_js_1.calculateDecayScore)(lastAccessed, accessCount, halfLife);
55
+ cat.count++;
56
+ cat.healthSum += score * 100;
57
+ if (!cat.mostRecent || lastAccessed > cat.mostRecent) {
58
+ cat.mostRecent = lastAccessed;
59
+ }
60
+ totalItems++;
61
+ totalHealth += score * 100;
62
+ if (score >= 0.2)
63
+ activeItems++;
64
+ else if (score >= deathThreshold)
65
+ decayingItems++;
66
+ const daysAgo = Math.floor((now - lastAccessed.getTime()) / 86_400_000);
67
+ if (daysAgo >= 0 && daysAgo < 7) {
68
+ dailyActivity[6 - daysAgo]++;
69
+ dailyAccesses[6 - daysAgo] += accessCount || 1;
70
+ }
71
+ }
72
+ let maxCount = 0;
73
+ let minCount = Infinity;
74
+ let mostActiveCategory = 'None';
75
+ let leastUsedCategory = 'None';
76
+ for (const [type, cat] of categoryMap) {
77
+ categories.push({
78
+ name: type,
79
+ displayName: DISPLAY_NAMES[type] || type,
80
+ count: cat.count,
81
+ avgHealth: cat.count > 0 ? cat.healthSum / cat.count : 0,
82
+ mostRecentAccess: cat.mostRecent,
83
+ });
84
+ if (cat.count > maxCount) {
85
+ maxCount = cat.count;
86
+ mostActiveCategory = DISPLAY_NAMES[type] || type;
87
+ }
88
+ if (cat.count < minCount && cat.count > 0) {
89
+ minCount = cat.count;
90
+ leastUsedCategory = DISPLAY_NAMES[type] || type;
91
+ }
92
+ }
93
+ return {
94
+ projectName,
95
+ categories,
96
+ totalItems,
97
+ activeItems,
98
+ decayingItems,
99
+ avgHealth: totalItems > 0 ? totalHealth / totalItems : 0,
100
+ dailyActivity,
101
+ dailyAccesses,
102
+ mostActiveCategory,
103
+ leastUsedCategory,
104
+ };
105
+ }
106
+ async function gatherProjectStats() {
107
+ const pm = await (0, project_js_1.getProjectMeta)();
108
+ return gatherStats(PROJECT_TYPES, 'project_id', (0, project_id_js_1.getProjectId)(), pm?.project_name || 'Unknown Project');
109
+ }
110
+ async function gatherDeveloperStats() {
111
+ return gatherStats(DEV_TYPES, 'developer_id', (0, project_id_js_1.getDeveloperId)(), 'Developer Memory');
112
+ }
113
+ function formatDashboard(data, scope) {
114
+ const lines = [];
115
+ const title = scope === 'project' ? 'CLAUDE MEMORY BROWSER' : 'DEVELOPER MEMORY BROWSER';
116
+ lines.push((0, charts_js_1.coloredHeader)(title, `Project: ${data.projectName}`));
117
+ lines.push('');
118
+ // Memory Usage panel
119
+ const maxCount = Math.max(...data.categories.map((c) => c.count), 1);
120
+ const usageLines = [];
121
+ for (const cat of data.categories) {
122
+ const nameStr = (0, colors_js_1.boldWhite)(cat.displayName.padEnd(14));
123
+ const bar = (0, charts_js_1.horizontalBar)(cat.count, maxCount, 20);
124
+ const countStr = (0, colors_js_1.dim)(`${cat.count} item${cat.count !== 1 ? 's' : ''}`);
125
+ const pct = data.totalItems > 0 ? (0, charts_js_1.percentLabel)((cat.count / data.totalItems) * 100) : (0, colors_js_1.dim)('0%');
126
+ const arrow = cat.mostRecentAccess ? (0, charts_js_1.activityArrow)(cat.mostRecentAccess) : '';
127
+ usageLines.push(`${nameStr} ${bar} ${countStr.padEnd(12)} ${pct}${arrow}`);
128
+ }
129
+ lines.push((0, charts_js_1.boxPanel)('Memory Usage', usageLines, 70));
130
+ lines.push('');
131
+ // Health panel
132
+ const activePercent = data.totalItems > 0 ? Math.round((data.activeItems / data.totalItems) * 100) : 0;
133
+ const decayPercent = data.totalItems > 0 ? Math.round((data.decayingItems / data.totalItems) * 100) : 0;
134
+ const healthLines = [
135
+ `${(0, colors_js_1.dim)('Total:')} ${(0, colors_js_1.boldWhite)(String(data.totalItems))} items`,
136
+ `${(0, colors_js_1.dim)('Active:')} ${(0, colors_js_1.green)(String(data.activeItems))} (${activePercent}%)`,
137
+ `${(0, colors_js_1.dim)('Decaying:')} ${(0, colors_js_1.yellow)(String(data.decayingItems))} (${decayPercent}%)`,
138
+ `${(0, colors_js_1.dim)('Health:')} ${(0, charts_js_1.healthGauge)(data.avgHealth)} ${(0, charts_js_1.percentLabel)(data.avgHealth)}`,
139
+ ];
140
+ lines.push((0, charts_js_1.boxPanel)('Health', healthLines, 32));
141
+ lines.push('');
142
+ // Activity panel
143
+ const activityLines = [
144
+ `${(0, colors_js_1.dim)('Last 7 days:')} ${(0, charts_js_1.sparkline)(data.dailyActivity)}`,
145
+ `${(0, colors_js_1.dim)('Accesses:')} ${(0, charts_js_1.sparkline)(data.dailyAccesses)}`,
146
+ `${(0, colors_js_1.dim)('Most active:')} ${(0, colors_js_1.white)(data.mostActiveCategory)}`,
147
+ `${(0, colors_js_1.dim)('Least used:')} ${(0, colors_js_1.white)(data.leastUsedCategory)}`,
148
+ ];
149
+ lines.push((0, charts_js_1.boxPanel)('Activity', activityLines, 42));
150
+ return lines.join('\n');
151
+ }
152
+ async function renderDashboard(scope = 'project') {
153
+ const data = scope === 'project' ? await gatherProjectStats() : await gatherDeveloperStats();
154
+ return formatDashboard(data, scope);
155
+ }
156
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/editor/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { OpenThread, VerifiedCommand } from '../types.js';
2
+ type Scope = 'project' | 'developer';
3
+ interface CategoryDef {
4
+ key: string;
5
+ displayName: string;
6
+ scope: Scope;
7
+ getItems: () => Promise<string[] | OpenThread[] | Record<string, VerifiedCommand>>;
8
+ addItem: (value: string, extra?: any) => Promise<void>;
9
+ removeItem: (value: string) => Promise<boolean>;
10
+ }
11
+ export declare function buildCategoryChoices(categories: CategoryDef[], counts: Map<string, number>, scope: Scope): any[];
12
+ export declare function buildActionChoices(): ({
13
+ name: string;
14
+ value: "edit";
15
+ } | {
16
+ name: string;
17
+ value: "delete";
18
+ } | {
19
+ name: string;
20
+ value: "back";
21
+ })[];
22
+ export declare function interactiveEditor(initialScope?: Scope): Promise<void>;
23
+ export {};
24
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/editor/interactive.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAuB/D,KAAK,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC;AAErC,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IACnF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAoKD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,WAAW,EAAE,EACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,KAAK,EAAE,KAAK,SA2Bb;AAiDD,wBAAgB,kBAAkB;;;;;;;;;KAMjC;AAyJD,wBAAsB,iBAAiB,CAAC,YAAY,GAAE,KAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEtF"}