claude-memory-store 0.1.4 → 0.1.5
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/dist/bin/mcp-server.js +1 -1
- package/dist/watch/monitor.d.ts.map +1 -1
- package/dist/watch/monitor.js +7 -6
- package/dist/watch/monitor.js.map +1 -1
- package/dist/watch/renderer.d.ts +2 -1
- package/dist/watch/renderer.d.ts.map +1 -1
- package/dist/watch/renderer.js +90 -52
- package/dist/watch/renderer.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/mcp-server.js
CHANGED
|
@@ -23,7 +23,7 @@ const developer_js_1 = require("../memory/developer.js");
|
|
|
23
23
|
const working_js_1 = require("../memory/working.js");
|
|
24
24
|
const server = new mcp_js_1.McpServer({
|
|
25
25
|
name: 'claude-memory',
|
|
26
|
-
version: '0.1.
|
|
26
|
+
version: '0.1.5',
|
|
27
27
|
});
|
|
28
28
|
let connected = false;
|
|
29
29
|
async function ensureConnected() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/watch/monitor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,iBAAS,eAAe,IAAI,MAAM,CAEjC;
|
|
1
|
+
{"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/watch/monitor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,iBAAS,eAAe,IAAI,MAAM,CAEjC;AAiJD,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA+DhD;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/watch/monitor.js
CHANGED
|
@@ -76,24 +76,25 @@ async function loadInitialCounts(collection, projectId, metrics) {
|
|
|
76
76
|
metrics.initTypeCounts(counts);
|
|
77
77
|
}
|
|
78
78
|
// ─── Change Stream Processing ───────────────────────────────────────────────
|
|
79
|
+
/** Extract readable content from a document, preferring human-readable fields */
|
|
80
|
+
function extractContent(doc) {
|
|
81
|
+
// Prefer content > description > trigger over searchable_text (which may contain XML/noise)
|
|
82
|
+
return doc?.content || doc?.description || doc?.trigger || doc?.current_state || '';
|
|
83
|
+
}
|
|
79
84
|
function processChangeEvent(event, metrics) {
|
|
80
85
|
const doc = event.fullDocument;
|
|
81
86
|
const type = doc?.type || event.documentKey?.type || 'unknown';
|
|
82
87
|
switch (event.operationType) {
|
|
83
88
|
case 'insert': {
|
|
84
|
-
|
|
85
|
-
metrics.recordInsert(type, content);
|
|
89
|
+
metrics.recordInsert(type, extractContent(doc));
|
|
86
90
|
break;
|
|
87
91
|
}
|
|
88
92
|
case 'update':
|
|
89
93
|
case 'replace': {
|
|
90
|
-
|
|
91
|
-
const accessCount = doc?.access_count;
|
|
92
|
-
metrics.recordUpdate(type, content, accessCount);
|
|
94
|
+
metrics.recordUpdate(type, extractContent(doc), doc?.access_count);
|
|
93
95
|
break;
|
|
94
96
|
}
|
|
95
97
|
case 'delete': {
|
|
96
|
-
// Delete events don't have fullDocument, use what we can
|
|
97
98
|
metrics.recordDelete(type, '(deleted)');
|
|
98
99
|
break;
|
|
99
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/watch/monitor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/watch/monitor.ts"],"names":[],"mappings":"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"}
|
package/dist/watch/renderer.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Full-screen dashboard renderer for `claude-memory watch`.
|
|
3
|
-
* Uses cursor-home +
|
|
3
|
+
* Uses cursor-home + per-line erase for flicker-free updates.
|
|
4
|
+
* Side-by-side panel layout to minimize vertical space.
|
|
4
5
|
*/
|
|
5
6
|
import type { WatchMetrics } from './metrics.js';
|
|
6
7
|
declare function clearScreen(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/watch/renderer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/watch/renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,cAAc,CAAC;AAcnF,iBAAS,WAAW,IAAI,IAAI,CAE3B;AAED,iBAAS,UAAU,IAAI,IAAI,CAE1B;AAED,iBAAS,UAAU,IAAI,IAAI,CAE1B;AA4ED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAoHrF;AAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/watch/renderer.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* Full-screen dashboard renderer for `claude-memory watch`.
|
|
4
|
-
* Uses cursor-home +
|
|
4
|
+
* Uses cursor-home + per-line erase for flicker-free updates.
|
|
5
|
+
* Side-by-side panel layout to minimize vertical space.
|
|
5
6
|
*/
|
|
6
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
8
|
exports.renderWatchDashboard = renderWatchDashboard;
|
|
@@ -11,6 +12,7 @@ exports.hideCursor = hideCursor;
|
|
|
11
12
|
const colors_js_1 = require("../editor/colors.js");
|
|
12
13
|
const charts_js_1 = require("../editor/charts.js");
|
|
13
14
|
// ─── Screen Control ─────────────────────────────────────────────────────────
|
|
15
|
+
const EL = '\x1b[K'; // Erase to end of line
|
|
14
16
|
function cursorHome() {
|
|
15
17
|
process.stdout.write('\x1b[H');
|
|
16
18
|
}
|
|
@@ -26,12 +28,42 @@ function hideCursor() {
|
|
|
26
28
|
function showCursor() {
|
|
27
29
|
process.stdout.write('\x1b[?25h');
|
|
28
30
|
}
|
|
29
|
-
// ───
|
|
31
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
30
32
|
function padRight(text, width) {
|
|
31
|
-
const visLen =
|
|
33
|
+
const visLen = (0, colors_js_1.stripAnsi)(text).length;
|
|
32
34
|
const pad = Math.max(0, width - visLen);
|
|
33
35
|
return text + ' '.repeat(pad);
|
|
34
36
|
}
|
|
37
|
+
/** Sanitize content — strip XML tags, control chars, and truncate */
|
|
38
|
+
function sanitize(text, maxLen = 45) {
|
|
39
|
+
let clean = text
|
|
40
|
+
.replace(/<[^>]+>/g, '') // Strip XML/HTML tags
|
|
41
|
+
.replace(/[\x00-\x1f]/g, ' ') // Strip control chars
|
|
42
|
+
.replace(/\s+/g, ' ') // Collapse whitespace
|
|
43
|
+
.trim();
|
|
44
|
+
if (clean.length > maxLen)
|
|
45
|
+
clean = clean.slice(0, maxLen - 3) + '...';
|
|
46
|
+
return clean;
|
|
47
|
+
}
|
|
48
|
+
/** Merge two sets of lines side by side with a gap */
|
|
49
|
+
function sideBySide(leftLines, rightLines, gap = 2) {
|
|
50
|
+
// Find the visual width of the left column
|
|
51
|
+
let leftWidth = 0;
|
|
52
|
+
for (const line of leftLines) {
|
|
53
|
+
const w = (0, colors_js_1.stripAnsi)(line).length;
|
|
54
|
+
if (w > leftWidth)
|
|
55
|
+
leftWidth = w;
|
|
56
|
+
}
|
|
57
|
+
const maxLen = Math.max(leftLines.length, rightLines.length);
|
|
58
|
+
const result = [];
|
|
59
|
+
const gapStr = ' '.repeat(gap);
|
|
60
|
+
for (let i = 0; i < maxLen; i++) {
|
|
61
|
+
const left = i < leftLines.length ? leftLines[i] : '';
|
|
62
|
+
const right = i < rightLines.length ? rightLines[i] : '';
|
|
63
|
+
result.push(padRight(left, leftWidth) + gapStr + right);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
35
67
|
function formatLatency(stats, label) {
|
|
36
68
|
if (stats.count === 0) {
|
|
37
69
|
return [`${(0, colors_js_1.dim)(label + ':')}`, ` ${(0, colors_js_1.dim)('no data')}`];
|
|
@@ -68,8 +100,8 @@ function formatFeedEvent(event) {
|
|
|
68
100
|
opLabel = (0, colors_js_1.dim)(String(event.operation).padEnd(6));
|
|
69
101
|
break;
|
|
70
102
|
}
|
|
71
|
-
const typeStr = (0, colors_js_1.dim)(event.memoryType.padEnd(
|
|
72
|
-
const content = (0, colors_js_1.white)(`"${event.content}"`);
|
|
103
|
+
const typeStr = (0, colors_js_1.dim)(event.memoryType.padEnd(13));
|
|
104
|
+
const content = (0, colors_js_1.white)(`"${sanitize(event.content, 35)}"`);
|
|
73
105
|
const extra = event.extra ? (0, colors_js_1.dim)(` ${event.extra}`) : '';
|
|
74
106
|
return `${time} ${opLabel} ${typeStr} ${content}${extra}`;
|
|
75
107
|
}
|
|
@@ -81,58 +113,56 @@ function renderWatchDashboard(metrics, projectName) {
|
|
|
81
113
|
// Header
|
|
82
114
|
lines.push((0, charts_js_1.coloredHeader)('CLAUDE MEMORY — LIVE MONITOR', `Watching: ${projectName} | Uptime: ${metrics.getUptime()}`));
|
|
83
115
|
lines.push('');
|
|
84
|
-
// Activity sparklines
|
|
116
|
+
// ── Row 1: Activity sparklines (full width) ──
|
|
85
117
|
const sparkData = metrics.getSparklineData();
|
|
86
118
|
const counts = metrics.getCounts();
|
|
87
119
|
const activityLines = [
|
|
88
|
-
`${padRight((0, colors_js_1.green)('Inserts:'),
|
|
89
|
-
`${padRight((0, colors_js_1.yellow)('Updates:'),
|
|
90
|
-
`${padRight((0, colors_js_1.red)('Deletes:'),
|
|
91
|
-
`${padRight((0, colors_js_1.cyan)('Searches:'),
|
|
120
|
+
`${padRight((0, colors_js_1.green)('Inserts:'), 18)} ${(0, charts_js_1.sparkline)(sparkData.inserts)} ${(0, colors_js_1.boldWhite)(String(counts.inserts).padStart(4))} total ${(0, colors_js_1.dim)(metrics.getRate('inserts') + '/s')}`,
|
|
121
|
+
`${padRight((0, colors_js_1.yellow)('Updates:'), 18)} ${(0, charts_js_1.sparkline)(sparkData.updates)} ${(0, colors_js_1.boldWhite)(String(counts.updates).padStart(4))} total ${(0, colors_js_1.dim)(metrics.getRate('updates') + '/s')}`,
|
|
122
|
+
`${padRight((0, colors_js_1.red)('Deletes:'), 18)} ${(0, charts_js_1.sparkline)(sparkData.deletes)} ${(0, colors_js_1.boldWhite)(String(counts.deletes).padStart(4))} total ${(0, colors_js_1.dim)(metrics.getRate('deletes') + '/s')}`,
|
|
123
|
+
`${padRight((0, colors_js_1.cyan)('Searches:'), 18)} ${(0, charts_js_1.sparkline)(sparkData.searches)} ${(0, colors_js_1.boldWhite)(String(counts.searches).padStart(4))} total ${(0, colors_js_1.dim)(metrics.getRate('searches') + '/s')}`,
|
|
92
124
|
];
|
|
93
|
-
lines.push((0, charts_js_1.boxPanel)('Activity (last 60s)', activityLines,
|
|
125
|
+
lines.push((0, charts_js_1.boxPanel)('Activity (last 60s)', activityLines, 72));
|
|
94
126
|
lines.push('');
|
|
95
|
-
// Memory by Type + Top Accessed side by side
|
|
127
|
+
// ── Row 2: Memory by Type + Top Accessed (side by side) ──
|
|
96
128
|
const typeCounts = metrics.getTypeCounts();
|
|
97
129
|
const maxTypeCount = Math.max(...typeCounts.values(), 1);
|
|
98
|
-
const
|
|
99
|
-
architecture: 'architecture',
|
|
100
|
-
pattern: 'pattern',
|
|
101
|
-
avoid: 'avoid',
|
|
102
|
-
context: 'context',
|
|
103
|
-
thread: 'thread',
|
|
104
|
-
command: 'command',
|
|
105
|
-
preference: 'preference',
|
|
106
|
-
style: 'style',
|
|
107
|
-
dev_default: 'dev_default',
|
|
108
|
-
dev_avoid: 'dev_avoid',
|
|
109
|
-
working: 'working',
|
|
110
|
-
};
|
|
130
|
+
const showTypes = ['architecture', 'pattern', 'avoid', 'context', 'thread', 'command', 'preference', 'working'];
|
|
111
131
|
const typeLines = [];
|
|
112
|
-
for (const
|
|
132
|
+
for (const type of showTypes) {
|
|
113
133
|
const count = typeCounts.get(type) || 0;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
typeLines.push(`${padRight((0, colors_js_1.dim)(displayName), 14)} ${bar} ${(0, colors_js_1.boldWhite)(String(count))}`);
|
|
117
|
-
}
|
|
134
|
+
const bar = (0, charts_js_1.horizontalBar)(count, maxTypeCount, 8);
|
|
135
|
+
typeLines.push(`${padRight((0, colors_js_1.dim)(type), 13)} ${bar} ${(0, colors_js_1.boldWhite)(String(count).padStart(3))}`);
|
|
118
136
|
}
|
|
119
|
-
|
|
120
|
-
lines.push('');
|
|
121
|
-
// Top Accessed
|
|
137
|
+
const leftPanel = (0, charts_js_1.boxPanel)('Memory by Type', typeLines, 34).split('\n');
|
|
122
138
|
const topItems = metrics.getTopAccessed();
|
|
123
139
|
const topLines = [];
|
|
124
140
|
if (topItems.length === 0) {
|
|
125
|
-
topLines.push((0, colors_js_1.dim)('
|
|
141
|
+
topLines.push((0, colors_js_1.dim)('(waiting for access events)'));
|
|
142
|
+
topLines.push('');
|
|
143
|
+
topLines.push('');
|
|
144
|
+
topLines.push('');
|
|
145
|
+
topLines.push('');
|
|
126
146
|
}
|
|
127
147
|
else {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
148
|
+
for (let i = 0; i < 5; i++) {
|
|
149
|
+
if (i < topItems.length) {
|
|
150
|
+
const item = topItems[i];
|
|
151
|
+
const content = sanitize(item.content, 25);
|
|
152
|
+
topLines.push(`${(0, colors_js_1.dim)(`${i + 1}.`)} ${(0, colors_js_1.white)(`"${content}"`)} ${(0, colors_js_1.dim)(`(${item.accessCount}x)`)}`);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
topLines.push('');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
132
158
|
}
|
|
133
|
-
lines
|
|
159
|
+
// Pad top lines to match left panel height
|
|
160
|
+
while (topLines.length < typeLines.length)
|
|
161
|
+
topLines.push('');
|
|
162
|
+
const rightPanel = (0, charts_js_1.boxPanel)('Top Accessed', topLines, 38).split('\n');
|
|
163
|
+
lines.push(...sideBySide(leftPanel, rightPanel));
|
|
134
164
|
lines.push('');
|
|
135
|
-
// Latency + Cache
|
|
165
|
+
// ── Row 3: Latency + Cache (side by side) ──
|
|
136
166
|
const netLatency = metrics.getNetworkLatency();
|
|
137
167
|
const embLatency = metrics.getEmbeddingLatency();
|
|
138
168
|
const latencyLines = [
|
|
@@ -140,27 +170,34 @@ function renderWatchDashboard(metrics, projectName) {
|
|
|
140
170
|
'',
|
|
141
171
|
...formatLatency(embLatency, 'Embedding gen'),
|
|
142
172
|
];
|
|
143
|
-
|
|
144
|
-
lines.push('');
|
|
145
|
-
// Cache stats
|
|
173
|
+
const latencyPanel = (0, charts_js_1.boxPanel)('Latency', latencyLines, 34).split('\n');
|
|
146
174
|
const cache = metrics.getCacheStats();
|
|
147
175
|
const cacheLines = [];
|
|
148
176
|
if (cache.total === 0) {
|
|
149
|
-
cacheLines.push((0, colors_js_1.dim)('
|
|
177
|
+
cacheLines.push((0, colors_js_1.dim)('(no cache lookups yet)'));
|
|
178
|
+
cacheLines.push('');
|
|
179
|
+
cacheLines.push('');
|
|
180
|
+
cacheLines.push('');
|
|
181
|
+
cacheLines.push('');
|
|
182
|
+
cacheLines.push('');
|
|
183
|
+
cacheLines.push('');
|
|
150
184
|
}
|
|
151
185
|
else {
|
|
152
|
-
const hitBar = (0, charts_js_1.healthGauge)(cache.hitRate,
|
|
186
|
+
const hitBar = (0, charts_js_1.healthGauge)(cache.hitRate, 12);
|
|
153
187
|
const missRate = 100 - cache.hitRate;
|
|
154
|
-
const missBar = (0, charts_js_1.healthGauge)(
|
|
188
|
+
const missBar = (0, charts_js_1.healthGauge)(missRate, 12);
|
|
155
189
|
cacheLines.push(`${(0, colors_js_1.green)('Hits:')} ${hitBar} ${(0, colors_js_1.green)(cache.hitRate + '%')}`);
|
|
156
190
|
cacheLines.push(`${(0, colors_js_1.red)('Misses:')} ${missBar} ${(0, colors_js_1.red)(missRate + '%')}`);
|
|
157
191
|
cacheLines.push('');
|
|
158
192
|
cacheLines.push(`${(0, colors_js_1.dim)('Total:')} ${(0, colors_js_1.boldWhite)(String(cache.total))} lookups`);
|
|
159
193
|
cacheLines.push(`${(0, colors_js_1.dim)('Hit rate:')} ${(0, charts_js_1.percentLabel)(cache.hitRate)} (${cache.hits}/${cache.total})`);
|
|
194
|
+
cacheLines.push('');
|
|
195
|
+
cacheLines.push('');
|
|
160
196
|
}
|
|
161
|
-
|
|
197
|
+
const cachePanel = (0, charts_js_1.boxPanel)('Cache', cacheLines, 34).split('\n');
|
|
198
|
+
lines.push(...sideBySide(latencyPanel, cachePanel));
|
|
162
199
|
lines.push('');
|
|
163
|
-
// Live Feed
|
|
200
|
+
// ── Row 4: Live Feed (full width) ──
|
|
164
201
|
const feed = metrics.getFeed();
|
|
165
202
|
const feedLines = [];
|
|
166
203
|
if (feed.length === 0) {
|
|
@@ -171,11 +208,12 @@ function renderWatchDashboard(metrics, projectName) {
|
|
|
171
208
|
feedLines.push(formatFeedEvent(event));
|
|
172
209
|
}
|
|
173
210
|
}
|
|
174
|
-
lines.push((0, charts_js_1.boxPanel)('Live Feed', feedLines,
|
|
211
|
+
lines.push((0, charts_js_1.boxPanel)('Live Feed', feedLines, 72));
|
|
175
212
|
lines.push('');
|
|
176
213
|
lines.push((0, colors_js_1.dim)(' Press Ctrl+C to exit'));
|
|
177
|
-
//
|
|
178
|
-
|
|
179
|
-
|
|
214
|
+
// Append EL (erase-to-end-of-line) to every line to clear ghost text
|
|
215
|
+
const output = lines.map((line) => line + EL).join('\n') + '\n';
|
|
216
|
+
process.stdout.write(output);
|
|
217
|
+
clearToEnd(); // Clear any leftover lines below the frame
|
|
180
218
|
}
|
|
181
219
|
//# sourceMappingURL=renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/watch/renderer.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/watch/renderer.ts"],"names":[],"mappings":"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"}
|