pindex 1.2.1 → 1.2.2

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/cli/index.js CHANGED
@@ -177,16 +177,42 @@ async function main() {
177
177
  }
178
178
  case 'gui':
179
179
  case 'monitor': {
180
- const { default: open } = await import('open');
181
- const registry = new GlobalRegistry();
182
- const projects = registry.list();
183
- // pindex-gui runs on 7842 by default
184
- const port = process.env.GUI_PORT ?? '7842';
185
- if (projects.length === 0) {
186
- console.log('No projects registered. Run `pindex` in a project first.');
180
+ const net = await import('node:net');
181
+ const port = parseInt(process.env.GUI_PORT ?? '7842', 10);
182
+ // Check if pindex-gui is already running
183
+ const isRunning = await new Promise((resolve) => {
184
+ const s = net.createConnection(port, 'localhost');
185
+ s.on('connect', () => { s.destroy(); resolve(true); });
186
+ s.on('error', () => resolve(false));
187
+ });
188
+ if (!isRunning) {
189
+ const registry = new GlobalRegistry();
190
+ if (registry.list().length === 0) {
191
+ console.log('No projects registered. Run `pindex` in a project first.');
192
+ break;
193
+ }
194
+ const { spawn } = await import('node:child_process');
195
+ spawn('pindex-gui', ['--port', String(port)], {
196
+ detached: true,
197
+ stdio: 'ignore',
198
+ shell: true,
199
+ }).unref();
200
+ // Wait for server to be ready (max 3s)
201
+ for (let i = 0; i < 15; i++) {
202
+ await new Promise((r) => setTimeout(r, 200));
203
+ const up = await new Promise((resolve) => {
204
+ const s = net.createConnection(port, 'localhost');
205
+ s.on('connect', () => { s.destroy(); resolve(true); });
206
+ s.on('error', () => resolve(false));
207
+ });
208
+ if (up)
209
+ break;
210
+ }
211
+ console.log(` [pindex] Started GUI dashboard on port ${port}`);
187
212
  }
213
+ const { default: open } = await import('open');
188
214
  await open(`http://localhost:${port}`);
189
- console.log(`Opening dashboard: http://localhost:${port}`);
215
+ console.log(` [pindex] Dashboard: http://localhost:${port}`);
190
216
  break;
191
217
  }
192
218
  case 'stats': {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export declare function injectClaudeMdSection(projectRoot: string, { force }?: {
9
9
  force?: boolean | undefined;
10
10
  }): 'added' | 'updated' | 'skipped' | 'created';
11
11
  /**
12
- * Writes/merges the PindeX PreToolUse hook into .claude/settings.json.
12
+ * Writes/merges PindeX hooks (PreToolUse + SessionStart) into .claude/settings.json.
13
13
  * Idempotent: skips if the hook marker is already present.
14
14
  */
15
15
  export declare function injectClaudeSettings(projectRoot: string, { force }?: {
@@ -31,7 +31,7 @@ export declare function initProject(cwd: string): Promise<void>;
31
31
  */
32
32
  export declare function removeClaudeMdSection(projectRoot: string): 'removed' | 'not_found' | 'skipped';
33
33
  /**
34
- * Removes the PindeX PreToolUse hook from .claude/settings.json (if present).
34
+ * Removes PindeX hooks (PreToolUse + SessionStart) from .claude/settings.json (if present).
35
35
  * Returns 'removed' | 'not_found' | 'skipped' (file didn't exist).
36
36
  */
37
37
  export declare function removeClaudeSettings(projectRoot: string): 'removed' | 'not_found' | 'skipped';
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAI/B,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,GACnB,IAAI,CA4BN;AA8BD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,EAAE,KAAa,EAAE;;CAAK,GACrB,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAqB7C;AAuBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,EAAE,KAAa,EAAE;;CAAK,GACrB,OAAO,GAAG,SAAS,GAAG,SAAS,CAqCjC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,GAClB,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAczC;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C5D;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAQ9F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAoB7F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAKxE;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCnF;AAID,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAI/B,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,aAAa,GACnB,IAAI,CA4BN;AA8BD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,EAAE,KAAa,EAAE;;CAAK,GACrB,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAqB7C;AAkCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,EAAE,KAAa,EAAE;;CAAK,GACrB,OAAO,GAAG,SAAS,GAAG,SAAS,CA4CjC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,GAClB,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAczC;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C5D;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAQ9F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAyB7F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAKxE;AAID;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCnF;AAID,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtF"}
package/dist/cli/init.js CHANGED
@@ -17,7 +17,7 @@ export function writeMcpJson(projectRoot, entry) {
17
17
  MONITORING_PORT: String(entry.monitoringPort),
18
18
  AUTO_REINDEX: 'true',
19
19
  GENERATE_SUMMARIES: 'false',
20
- MONITORING_AUTO_OPEN: 'false',
20
+ MONITORING_AUTO_OPEN: 'true',
21
21
  BASELINE_MODE: 'false',
22
22
  TOKEN_PRICE_PER_MILLION: '3.00',
23
23
  ...federationEnv,
@@ -94,10 +94,21 @@ const PINDEX_HOOKS = {
94
94
  ],
95
95
  },
96
96
  ],
97
+ SessionStart: [
98
+ {
99
+ hooks: [
100
+ {
101
+ type: 'command',
102
+ // Auto-start pindex-gui dashboard if not already running
103
+ command: 'pindex gui',
104
+ },
105
+ ],
106
+ },
107
+ ],
97
108
  },
98
109
  };
99
110
  /**
100
- * Writes/merges the PindeX PreToolUse hook into .claude/settings.json.
111
+ * Writes/merges PindeX hooks (PreToolUse + SessionStart) into .claude/settings.json.
101
112
  * Idempotent: skips if the hook marker is already present.
102
113
  */
103
114
  export function injectClaudeSettings(projectRoot, { force = false } = {}) {
@@ -117,16 +128,22 @@ export function injectClaudeSettings(projectRoot, { force = false } = {}) {
117
128
  existing = {};
118
129
  }
119
130
  // Deep-merge hooks
131
+ const existingHooks = existing.hooks;
120
132
  const merged = {
121
133
  ...existing,
122
134
  hooks: {
123
- ...existing.hooks,
135
+ ...existingHooks,
124
136
  PreToolUse: [
125
137
  // Remove old pindex hook entries, then re-add
126
- ...(existing.hooks?.PreToolUse ?? [])
138
+ ...(existingHooks?.PreToolUse ?? [])
127
139
  .filter((h) => !JSON.stringify(h).includes(HOOK_MARKER)),
128
140
  { ...PINDEX_HOOKS.hooks.PreToolUse[0], _pindex: HOOK_MARKER },
129
141
  ],
142
+ SessionStart: [
143
+ ...(existingHooks?.SessionStart ?? [])
144
+ .filter((h) => !JSON.stringify(h).includes(HOOK_MARKER)),
145
+ { ...PINDEX_HOOKS.hooks.SessionStart[0], _pindex: HOOK_MARKER },
146
+ ],
130
147
  },
131
148
  };
132
149
  writeFileSync(settingsPath, JSON.stringify(merged, null, 2) + '\n', 'utf-8');
@@ -136,6 +153,7 @@ export function injectClaudeSettings(projectRoot, { force = false } = {}) {
136
153
  const config = {
137
154
  hooks: {
138
155
  PreToolUse: [{ ...PINDEX_HOOKS.hooks.PreToolUse[0], _pindex: HOOK_MARKER }],
156
+ SessionStart: [{ ...PINDEX_HOOKS.hooks.SessionStart[0], _pindex: HOOK_MARKER }],
139
157
  },
140
158
  };
141
159
  writeFileSync(settingsPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
@@ -229,7 +247,7 @@ export function removeClaudeMdSection(projectRoot) {
229
247
  return 'removed';
230
248
  }
231
249
  /**
232
- * Removes the PindeX PreToolUse hook from .claude/settings.json (if present).
250
+ * Removes PindeX hooks (PreToolUse + SessionStart) from .claude/settings.json (if present).
233
251
  * Returns 'removed' | 'not_found' | 'skipped' (file didn't exist).
234
252
  */
235
253
  export function removeClaudeSettings(projectRoot) {
@@ -247,15 +265,19 @@ export function removeClaudeSettings(projectRoot) {
247
265
  return 'not_found';
248
266
  }
249
267
  const hooks = existing.hooks;
250
- const filtered = (hooks?.PreToolUse ?? []).filter((h) => !JSON.stringify(h).includes(HOOK_MARKER));
268
+ const filteredPre = (hooks?.PreToolUse ?? []).filter((h) => !JSON.stringify(h).includes(HOOK_MARKER));
269
+ const filteredSession = (hooks?.SessionStart ?? []).filter((h) => !JSON.stringify(h).includes(HOOK_MARKER));
251
270
  const updated = {
252
271
  ...existing,
253
- hooks: { ...hooks, PreToolUse: filtered },
272
+ hooks: { ...hooks, PreToolUse: filteredPre, SessionStart: filteredSession },
254
273
  };
255
- // Remove empty PreToolUse array to keep settings.json clean
256
- if (filtered.length === 0)
257
- delete updated.hooks.PreToolUse;
258
- if (Object.keys(updated.hooks).length === 0)
274
+ const hooksObj = updated.hooks;
275
+ // Remove empty arrays to keep settings.json clean
276
+ if (filteredPre.length === 0)
277
+ delete hooksObj.PreToolUse;
278
+ if (filteredSession.length === 0)
279
+ delete hooksObj.SessionStart;
280
+ if (Object.keys(hooksObj).length === 0)
259
281
  delete updated.hooks;
260
282
  writeFileSync(settingsPath, JSON.stringify(updated, null, 2) + '\n', 'utf-8');
261
283
  return 'removed';
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,321 @@
1
+ /* MCP Codebase Indexer – Live Dashboard (Vanilla JS + WebSocket) */
2
+
3
+ // ─── State ────────────────────────────────────────────────────────────────────
4
+
5
+ const MAX_CHART_POINTS = 20;
6
+ const state = {
7
+ calls: [],
8
+ cumulativeActual: 0,
9
+ cumulativeSavings: 0,
10
+ chart: null,
11
+ ws: null,
12
+ sessionId: null,
13
+ };
14
+
15
+ // ─── WebSocket Connection ─────────────────────────────────────────────────────
16
+
17
+ function connect() {
18
+ const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
19
+ const ws = new WebSocket(`${protocol}//${location.host}`);
20
+ state.ws = ws;
21
+
22
+ ws.addEventListener('open', () => {
23
+ document.getElementById('statusDot').classList.add('connected');
24
+ });
25
+
26
+ ws.addEventListener('close', () => {
27
+ document.getElementById('statusDot').classList.remove('connected');
28
+ setTimeout(connect, 3000); // Reconnect
29
+ });
30
+
31
+ ws.addEventListener('message', (event) => {
32
+ try {
33
+ const data = JSON.parse(event.data);
34
+ handleEvent(data);
35
+ } catch (e) {
36
+ console.error('Failed to parse event:', e);
37
+ }
38
+ });
39
+ }
40
+
41
+ // ─── Event Handling ───────────────────────────────────────────────────────────
42
+
43
+ function handleEvent(event) {
44
+ if (event.type === 'tool_call') {
45
+ state.cumulativeActual = event.cumulative_actual;
46
+ state.cumulativeSavings = event.cumulative_savings;
47
+ state.sessionId = event.session_id;
48
+
49
+ updateStatsCards(event);
50
+ updateChart(event);
51
+ appendCallFeedItem(event);
52
+ } else if (event.type === 'session_start' || event.type === 'session_update') {
53
+ if (event.session) {
54
+ document.getElementById('sessionLabel').textContent = event.session.label || event.session.id;
55
+ }
56
+ }
57
+ }
58
+
59
+ // ─── Stats Cards ──────────────────────────────────────────────────────────────
60
+
61
+ function formatNumber(n) {
62
+ return n.toLocaleString('de-DE');
63
+ }
64
+
65
+ function updateStatsCards(event) {
66
+ document.getElementById('tokensUsed').textContent = formatNumber(event.cumulative_actual);
67
+ document.getElementById('tokensSaved').textContent = formatNumber(event.cumulative_savings);
68
+ document.getElementById('savingsPercent').textContent = event.savings_percent.toFixed(1) + '%';
69
+ document.getElementById('savingsBar').style.width = Math.min(100, event.savings_percent) + '%';
70
+ document.getElementById('barTokenCount').textContent = formatNumber(event.cumulative_actual) + ' Token';
71
+ }
72
+
73
+ // ─── Chart ────────────────────────────────────────────────────────────────────
74
+
75
+ function initChart() {
76
+ const ctx = document.getElementById('tokenChart').getContext('2d');
77
+ state.chart = new Chart(ctx, {
78
+ type: 'bar',
79
+ data: {
80
+ labels: [],
81
+ datasets: [
82
+ {
83
+ label: 'Tatsächlich',
84
+ data: [],
85
+ backgroundColor: 'rgba(59, 130, 246, 0.8)',
86
+ borderRadius: 3,
87
+ },
88
+ {
89
+ label: 'Ohne Index (geschätzt)',
90
+ data: [],
91
+ backgroundColor: 'rgba(75, 85, 99, 0.5)',
92
+ borderRadius: 3,
93
+ },
94
+ ],
95
+ },
96
+ options: {
97
+ responsive: true,
98
+ maintainAspectRatio: false,
99
+ plugins: { legend: { labels: { color: '#9ca3af', font: { size: 11 } } } },
100
+ scales: {
101
+ x: { ticks: { color: '#6b7280', font: { size: 10 } }, grid: { color: '#1f2937' } },
102
+ y: { ticks: { color: '#6b7280', font: { size: 10 } }, grid: { color: '#1f2937' } },
103
+ },
104
+ },
105
+ });
106
+ }
107
+
108
+ function updateChart(event) {
109
+ const chart = state.chart;
110
+ const label = event.tool;
111
+ chart.data.labels.push(label);
112
+ chart.data.datasets[0].data.push(event.tokens_actual);
113
+ chart.data.datasets[1].data.push(event.tokens_estimated);
114
+
115
+ // Keep only last N points
116
+ if (chart.data.labels.length > MAX_CHART_POINTS) {
117
+ chart.data.labels.shift();
118
+ chart.data.datasets[0].data.shift();
119
+ chart.data.datasets[1].data.shift();
120
+ }
121
+
122
+ chart.update('none');
123
+ }
124
+
125
+ // ─── Calls Feed ───────────────────────────────────────────────────────────────
126
+
127
+ function appendCallFeedItem(event) {
128
+ const feed = document.getElementById('callsFeed');
129
+ const time = dayjs(event.timestamp).format('HH:mm:ss');
130
+
131
+ const item = document.createElement('div');
132
+ item.className = 'call-item';
133
+ item.innerHTML = `
134
+ <span class="call-time">${time}</span>
135
+ <span class="call-tool">${event.tool}${event.query ? `("${event.query}")` : ''}</span>
136
+ <span class="call-tokens"><span class="actual">${event.tokens_actual}</span> / ~${event.tokens_estimated}</span>
137
+ `;
138
+
139
+ // Prepend so newest is at top
140
+ feed.insertBefore(item, feed.firstChild);
141
+
142
+ // Keep only last 50 items in DOM
143
+ while (feed.children.length > 50) {
144
+ feed.removeChild(feed.lastChild);
145
+ }
146
+ }
147
+
148
+ // ─── Session History ──────────────────────────────────────────────────────────
149
+
150
+ async function loadSessionHistory() {
151
+ try {
152
+ const res = await fetch('/api/sessions');
153
+ if (!res.ok) return;
154
+ const sessions = await res.json();
155
+
156
+ const tbody = document.getElementById('historyBody');
157
+ tbody.innerHTML = '';
158
+
159
+ let totalTokens = 0;
160
+ let totalSaved = 0;
161
+
162
+ for (const s of sessions) {
163
+ const pct = s.total_tokens + s.total_savings > 0
164
+ ? ((s.total_savings / (s.total_tokens + s.total_savings)) * 100).toFixed(1)
165
+ : '0.0';
166
+
167
+ totalTokens += s.total_tokens;
168
+ totalSaved += s.total_savings;
169
+
170
+ const row = document.createElement('tr');
171
+ row.innerHTML = `
172
+ <td>${s.label || s.id.substring(0, 8)}</td>
173
+ <td>${formatNumber(s.total_tokens)}</td>
174
+ <td>${formatNumber(s.total_savings)}</td>
175
+ <td>${pct}%</td>
176
+ `;
177
+ tbody.appendChild(row);
178
+ }
179
+
180
+ const grandTotal = totalTokens + totalSaved;
181
+ const grandPct = grandTotal > 0 ? ((totalSaved / grandTotal) * 100).toFixed(1) : '0.0';
182
+ document.getElementById('histTotalTokens').textContent = formatNumber(totalTokens);
183
+ document.getElementById('histTotalSaved').textContent = formatNumber(totalSaved);
184
+ document.getElementById('histTotalPct').textContent = grandPct + '%';
185
+ } catch (e) {
186
+ console.error('Failed to load session history:', e);
187
+ }
188
+ }
189
+
190
+ // ─── Clock ────────────────────────────────────────────────────────────────────
191
+
192
+ function updateClock() {
193
+ document.getElementById('sessionTime').textContent = dayjs().format('HH:mm:ss');
194
+ }
195
+
196
+ // ─── Refresh Rate Control ─────────────────────────────────────────────────────
197
+
198
+ let historyInterval = null;
199
+
200
+ function setRefreshInterval(seconds) {
201
+ if (historyInterval) clearInterval(historyInterval);
202
+ historyInterval = setInterval(() => {
203
+ loadSessionHistory();
204
+ loadSessionMemory();
205
+ }, seconds * 1000);
206
+ }
207
+
208
+ // ─── Session Memory (Anti-Patterns & Observations) ───────────────────────────
209
+
210
+ const AP_LABELS = {
211
+ thrash_detected: 'Thrashing',
212
+ dead_end: 'Sackgasse',
213
+ failed_search: 'Fehlsuche',
214
+ tool_error: 'Tool-Fehler',
215
+ index_blind_spot: 'Index-Blindspot',
216
+ redundant_access: 'Redundanter Zugriff',
217
+ };
218
+
219
+ function escHtml(str) {
220
+ return String(str ?? '')
221
+ .replace(/&/g, '&amp;')
222
+ .replace(/</g, '&lt;')
223
+ .replace(/>/g, '&gt;')
224
+ .replace(/"/g, '&quot;');
225
+ }
226
+
227
+ function renderAntiPatterns(items) {
228
+ const feed = document.getElementById('antiPatternsFeed');
229
+ const countEl = document.getElementById('apCount');
230
+ countEl.textContent = items.length ? `(${items.length})` : '';
231
+
232
+ if (!items.length) {
233
+ feed.innerHTML = '<div class="memory-empty">Keine Anti-Patterns erkannt</div>';
234
+ return;
235
+ }
236
+
237
+ feed.innerHTML = items.map((item) => {
238
+ let description = item.event_type;
239
+ try {
240
+ const extra = JSON.parse(item.extra_json || '{}');
241
+ if (extra.description) description = extra.description;
242
+ } catch { /* ignore */ }
243
+
244
+ const label = AP_LABELS[item.event_type] || item.event_type;
245
+ const cssType = item.event_type.replace(/_/g, '-');
246
+ const time = dayjs(item.timestamp).format('DD.MM HH:mm');
247
+ const meta = [item.file_path, item.symbol_name].filter(Boolean).join(' › ');
248
+
249
+ return `
250
+ <div class="memory-item ap-${escHtml(cssType)}">
251
+ <div class="memory-item-header">
252
+ <span class="memory-badge">${escHtml(label)}</span>
253
+ <span class="memory-session">${escHtml((item.session_id || '').substring(0, 8))}</span>
254
+ <span class="memory-time">${time}</span>
255
+ </div>
256
+ <div class="memory-text">${escHtml(description)}</div>
257
+ ${meta ? `<div class="memory-meta">${escHtml(meta)}</div>` : ''}
258
+ </div>`;
259
+ }).join('');
260
+ }
261
+
262
+ function renderObservations(items) {
263
+ const feed = document.getElementById('observationsFeed');
264
+ const countEl = document.getElementById('obsCount');
265
+ countEl.textContent = items.length ? `(${items.length})` : '';
266
+
267
+ if (!items.length) {
268
+ feed.innerHTML = '<div class="memory-empty">Keine Beobachtungen vorhanden</div>';
269
+ return;
270
+ }
271
+
272
+ feed.innerHTML = items.map((item) => {
273
+ const time = dayjs(item.created_at).format('DD.MM HH:mm');
274
+ const meta = [item.file_path, item.symbol_name].filter(Boolean).join(' › ');
275
+ const stale = item.stale === 1;
276
+
277
+ return `
278
+ <div class="memory-item obs-item${stale ? ' stale' : ''}">
279
+ <div class="memory-item-header">
280
+ <span class="memory-badge obs-badge">${escHtml(item.type)}</span>
281
+ <span class="memory-session">${escHtml((item.session_id || '').substring(0, 8))}</span>
282
+ <span class="memory-time">${time}</span>
283
+ ${stale ? '<span class="stale-badge">veraltet</span>' : ''}
284
+ </div>
285
+ <div class="memory-text">${escHtml(item.observation)}</div>
286
+ ${meta ? `<div class="memory-meta">${escHtml(meta)}</div>` : ''}
287
+ </div>`;
288
+ }).join('');
289
+ }
290
+
291
+ async function loadSessionMemory() {
292
+ try {
293
+ const res = await fetch('/api/session-memory');
294
+ if (!res.ok) return;
295
+ const { anti_patterns, observations } = await res.json();
296
+ renderAntiPatterns(anti_patterns);
297
+ renderObservations(observations);
298
+ } catch (e) {
299
+ console.error('Failed to load session memory:', e);
300
+ }
301
+ }
302
+
303
+ // ─── Initialization ───────────────────────────────────────────────────────────
304
+
305
+ document.addEventListener('DOMContentLoaded', () => {
306
+ initChart();
307
+ connect();
308
+ loadSessionHistory();
309
+ loadSessionMemory();
310
+ setInterval(updateClock, 1000);
311
+ setRefreshInterval(30);
312
+ updateClock();
313
+
314
+ const slider = document.getElementById('refreshSlider');
315
+ const label = document.getElementById('refreshLabel');
316
+ slider.addEventListener('input', () => {
317
+ const s = Number(slider.value);
318
+ label.textContent = s + 's';
319
+ setRefreshInterval(s);
320
+ });
321
+ });
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html>
2
+ <html lang="de">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>MCP Codebase Indexer – Monitoring</title>
7
+ <link rel="stylesheet" href="/styles.css">
8
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4/dist/chart.umd.min.js"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
10
+ </head>
11
+ <body>
12
+ <div class="header">
13
+ <div class="header-title">
14
+ <span class="dot" id="statusDot">●</span>
15
+ <h1>MCP Codebase Indexer</h1>
16
+ <span id="sessionLabel" class="session-label"></span>
17
+ </div>
18
+ <div class="header-meta">
19
+ <label class="refresh-control" title="Aktualisierungsintervall der Session History">
20
+ <span id="refreshLabel">30s</span>
21
+ <input type="range" id="refreshSlider" min="1" max="60" value="30" step="1">
22
+ </label>
23
+ <span id="sessionTime"></span>
24
+ </div>
25
+ </div>
26
+
27
+ <div class="grid">
28
+ <!-- Stats Cards -->
29
+ <div class="card stats-card">
30
+ <div class="stat">
31
+ <div class="stat-value" id="tokensUsed">0</div>
32
+ <div class="stat-label">Token verwendet</div>
33
+ </div>
34
+ <div class="stat">
35
+ <div class="stat-value savings" id="tokensSaved">0</div>
36
+ <div class="stat-label">Token gespart</div>
37
+ </div>
38
+ <div class="stat">
39
+ <div class="stat-value" id="savingsPercent">0%</div>
40
+ <div class="stat-label">Effizienz</div>
41
+ <div class="progress-bar">
42
+ <div class="progress-fill" id="savingsBar" style="width: 0%"></div>
43
+ </div>
44
+ <div class="bar-token-count" id="barTokenCount">0 Token</div>
45
+ </div>
46
+ </div>
47
+
48
+ <!-- Live Chart -->
49
+ <div class="card chart-card">
50
+ <h2>Live Token-Verlauf (letzte 20 Aufrufe)</h2>
51
+ <canvas id="tokenChart"></canvas>
52
+ </div>
53
+
54
+ <!-- Recent Calls -->
55
+ <div class="card calls-card">
56
+ <h2>Letzte Aufrufe</h2>
57
+ <div id="callsFeed"></div>
58
+ </div>
59
+
60
+ <!-- Session History -->
61
+ <div class="card history-card">
62
+ <h2>Session History</h2>
63
+ <table id="historyTable">
64
+ <thead>
65
+ <tr>
66
+ <th>Label</th>
67
+ <th>Token</th>
68
+ <th>Gespart</th>
69
+ <th>%</th>
70
+ </tr>
71
+ </thead>
72
+ <tbody id="historyBody"></tbody>
73
+ <tfoot>
74
+ <tr id="historyTotal">
75
+ <td><strong>Gesamt</strong></td>
76
+ <td id="histTotalTokens">-</td>
77
+ <td id="histTotalSaved">-</td>
78
+ <td id="histTotalPct">-</td>
79
+ </tr>
80
+ </tfoot>
81
+ </table>
82
+ </div>
83
+ </div>
84
+
85
+ <!-- Session Memory: Anti-Patterns & Observations -->
86
+ <div class="memory-section">
87
+ <div class="memory-panel">
88
+ <h2>Anti-Patterns <span class="memory-count" id="apCount"></span></h2>
89
+ <div id="antiPatternsFeed" class="memory-feed">
90
+ <div class="memory-empty">Wird geladen…</div>
91
+ </div>
92
+ </div>
93
+ <div class="memory-panel">
94
+ <h2>Beobachtungen <span class="memory-count" id="obsCount"></span></h2>
95
+ <div id="observationsFeed" class="memory-feed">
96
+ <div class="memory-empty">Wird geladen…</div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+
101
+ <script src="/dashboard.js"></script>
102
+ </body>
103
+ </html>
@@ -0,0 +1,278 @@
1
+ /* ─── Reset & Base ────────────────────────────────────────────────────────── */
2
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
3
+
4
+ :root {
5
+ --bg: #0f1117;
6
+ --bg2: #1a1d27;
7
+ --bg3: #242838;
8
+ --border: #2e3348;
9
+ --text: #e2e8f0;
10
+ --text-muted: #6b7280;
11
+ --accent: #6366f1;
12
+ --green: #22c55e;
13
+ --blue: #3b82f6;
14
+ --gray: #4b5563;
15
+ --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
16
+ }
17
+
18
+ html, body { height: 100%; }
19
+ body {
20
+ background: var(--bg);
21
+ color: var(--text);
22
+ font-family: var(--font);
23
+ font-size: 14px;
24
+ line-height: 1.5;
25
+ }
26
+
27
+ /* ─── Header ──────────────────────────────────────────────────────────────── */
28
+ .header {
29
+ display: flex;
30
+ justify-content: space-between;
31
+ align-items: center;
32
+ padding: 16px 24px;
33
+ border-bottom: 1px solid var(--border);
34
+ background: var(--bg2);
35
+ position: sticky;
36
+ top: 0;
37
+ z-index: 10;
38
+ }
39
+
40
+ .header-title { display: flex; align-items: center; gap: 10px; }
41
+ .header-title h1 { font-size: 1rem; font-weight: 600; }
42
+ .dot { font-size: 10px; color: var(--gray); }
43
+ .dot.connected { color: var(--green); }
44
+ .session-label {
45
+ background: var(--bg3);
46
+ border: 1px solid var(--border);
47
+ border-radius: 4px;
48
+ padding: 2px 8px;
49
+ font-size: 12px;
50
+ color: var(--text-muted);
51
+ }
52
+ .header-meta { display: flex; align-items: center; gap: 16px; color: var(--text-muted); font-size: 12px; }
53
+
54
+ .refresh-control {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: 6px;
58
+ color: var(--text-muted);
59
+ font-size: 11px;
60
+ cursor: pointer;
61
+ user-select: none;
62
+ }
63
+ .refresh-control input[type="range"] {
64
+ -webkit-appearance: none;
65
+ appearance: none;
66
+ width: 80px;
67
+ height: 3px;
68
+ background: var(--bg3);
69
+ border-radius: 2px;
70
+ outline: none;
71
+ cursor: pointer;
72
+ }
73
+ .refresh-control input[type="range"]::-webkit-slider-thumb {
74
+ -webkit-appearance: none;
75
+ appearance: none;
76
+ width: 12px;
77
+ height: 12px;
78
+ border-radius: 50%;
79
+ background: var(--accent);
80
+ cursor: pointer;
81
+ }
82
+ .refresh-control input[type="range"]::-moz-range-thumb {
83
+ width: 12px;
84
+ height: 12px;
85
+ border: none;
86
+ border-radius: 50%;
87
+ background: var(--accent);
88
+ cursor: pointer;
89
+ }
90
+
91
+ /* ─── Grid Layout ─────────────────────────────────────────────────────────── */
92
+ .grid {
93
+ display: grid;
94
+ grid-template-columns: repeat(12, 1fr);
95
+ gap: 16px;
96
+ padding: 20px 24px;
97
+ max-width: 1400px;
98
+ margin: 0 auto;
99
+ }
100
+
101
+ .card {
102
+ background: var(--bg2);
103
+ border: 1px solid var(--border);
104
+ border-radius: 8px;
105
+ padding: 16px;
106
+ }
107
+ .card h2 { font-size: 0.85rem; font-weight: 600; margin-bottom: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; }
108
+
109
+ .stats-card { grid-column: span 12; display: flex; gap: 24px; }
110
+ .chart-card { grid-column: span 8; }
111
+ .calls-card { grid-column: span 4; }
112
+ .history-card { grid-column: span 12; }
113
+
114
+ @media (max-width: 768px) {
115
+ .chart-card, .calls-card, .history-card { grid-column: span 12; }
116
+ }
117
+
118
+ /* ─── Stats ───────────────────────────────────────────────────────────────── */
119
+ .stat { flex: 1; }
120
+ .stat-value { font-size: 2rem; font-weight: 700; font-variant-numeric: tabular-nums; }
121
+ .stat-value.savings { color: var(--green); }
122
+ .stat-label { font-size: 11px; color: var(--text-muted); text-transform: uppercase; margin-top: 2px; }
123
+
124
+ .progress-bar {
125
+ height: 6px;
126
+ background: var(--bg3);
127
+ border-radius: 3px;
128
+ margin-top: 8px;
129
+ overflow: hidden;
130
+ }
131
+ .progress-fill {
132
+ height: 100%;
133
+ background: var(--green);
134
+ border-radius: 3px;
135
+ transition: width 0.4s ease;
136
+ }
137
+ .bar-token-count {
138
+ font-size: 11px;
139
+ color: var(--text-muted);
140
+ margin-top: 5px;
141
+ font-variant-numeric: tabular-nums;
142
+ }
143
+
144
+ /* ─── Chart ───────────────────────────────────────────────────────────────── */
145
+ #tokenChart { width: 100% !important; height: 200px !important; }
146
+
147
+ /* ─── Calls Feed ──────────────────────────────────────────────────────────── */
148
+ #callsFeed { overflow-y: auto; max-height: 300px; }
149
+ .call-item {
150
+ display: grid;
151
+ grid-template-columns: 55px 1fr auto;
152
+ gap: 6px;
153
+ padding: 6px 0;
154
+ border-bottom: 1px solid var(--border);
155
+ font-size: 12px;
156
+ align-items: baseline;
157
+ }
158
+ .call-item:last-child { border-bottom: none; }
159
+ .call-time { color: var(--text-muted); font-variant-numeric: tabular-nums; }
160
+ .call-tool { color: var(--blue); font-family: monospace; }
161
+ .call-tokens { color: var(--text-muted); text-align: right; white-space: nowrap; }
162
+ .call-tokens .actual { color: var(--text); font-weight: 600; }
163
+
164
+ /* ─── History Table ───────────────────────────────────────────────────────── */
165
+ #historyTable { width: 100%; border-collapse: collapse; font-size: 13px; }
166
+ #historyTable th, #historyTable td { text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--border); }
167
+ #historyTable th { color: var(--text-muted); font-weight: 500; font-size: 11px; text-transform: uppercase; }
168
+ #historyTable tbody tr:hover { background: var(--bg3); }
169
+ #historyTotal td { color: var(--text-muted); font-size: 12px; }
170
+
171
+ /* ─── Session Memory (Anti-Patterns & Observations) ─────────────────────────── */
172
+ .memory-section {
173
+ display: grid;
174
+ grid-template-columns: 1fr 1fr;
175
+ gap: 16px;
176
+ padding: 0 24px 24px;
177
+ max-width: 1400px;
178
+ margin: 0 auto;
179
+ }
180
+
181
+ @media (max-width: 768px) {
182
+ .memory-section { grid-template-columns: 1fr; }
183
+ }
184
+
185
+ .memory-panel {
186
+ background: var(--bg2);
187
+ border: 1px solid var(--border);
188
+ border-radius: 8px;
189
+ padding: 16px;
190
+ }
191
+
192
+ .memory-panel h2 {
193
+ font-size: 0.85rem;
194
+ font-weight: 600;
195
+ margin-bottom: 12px;
196
+ color: var(--text-muted);
197
+ text-transform: uppercase;
198
+ letter-spacing: 0.05em;
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 6px;
202
+ }
203
+
204
+ .memory-count { font-weight: 400; font-size: 11px; color: var(--text-muted); }
205
+
206
+ .memory-feed { overflow-y: auto; max-height: 320px; display: flex; flex-direction: column; gap: 6px; }
207
+ .memory-empty { color: var(--text-muted); font-size: 12px; padding: 16px 0; text-align: center; }
208
+
209
+ .memory-item {
210
+ background: var(--bg3);
211
+ border-radius: 6px;
212
+ padding: 9px 12px;
213
+ border-left: 3px solid var(--gray);
214
+ font-size: 12px;
215
+ }
216
+
217
+ /* Anti-pattern accent colours */
218
+ .ap-failed-search { border-left-color: #f59e0b; }
219
+ .ap-dead-end { border-left-color: #ef4444; }
220
+ .ap-thrash-detected { border-left-color: #f97316; }
221
+ .ap-tool-error { border-left-color: #ef4444; }
222
+ .ap-index-blind-spot { border-left-color: #eab308; }
223
+ .ap-redundant-access { border-left-color: #6b7280; }
224
+
225
+ /* Observations */
226
+ .obs-item { border-left-color: var(--accent); }
227
+ .memory-item.stale { opacity: 0.55; }
228
+
229
+ .memory-item-header {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 6px;
233
+ margin-bottom: 4px;
234
+ flex-wrap: wrap;
235
+ }
236
+
237
+ .memory-badge {
238
+ font-size: 10px;
239
+ font-weight: 600;
240
+ text-transform: uppercase;
241
+ letter-spacing: 0.05em;
242
+ background: var(--bg);
243
+ border-radius: 3px;
244
+ padding: 1px 5px;
245
+ color: var(--text-muted);
246
+ }
247
+
248
+ .obs-badge { color: var(--accent); }
249
+
250
+ .memory-session {
251
+ font-size: 10px;
252
+ color: var(--text-muted);
253
+ font-family: monospace;
254
+ opacity: 0.6;
255
+ }
256
+
257
+ .memory-time { margin-left: auto; color: var(--text-muted); font-variant-numeric: tabular-nums; font-size: 11px; }
258
+
259
+ .stale-badge {
260
+ font-size: 10px;
261
+ color: var(--text-muted);
262
+ background: var(--bg);
263
+ border-radius: 3px;
264
+ padding: 1px 5px;
265
+ border: 1px solid var(--border);
266
+ }
267
+
268
+ .memory-text { color: var(--text); line-height: 1.4; }
269
+
270
+ .memory-meta {
271
+ margin-top: 4px;
272
+ color: var(--text-muted);
273
+ font-family: monospace;
274
+ font-size: 11px;
275
+ overflow: hidden;
276
+ text-overflow: ellipsis;
277
+ white-space: nowrap;
278
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pindex",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "MCP Server that structurally indexes a codebase for 80-90% token reduction",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,7 +15,7 @@
15
15
  "LICENSE"
16
16
  ],
17
17
  "scripts": {
18
- "build": "tsc",
18
+ "build": "tsc && node -e \"require('fs').cpSync('src/monitoring/ui','dist/monitoring/ui',{recursive:true})\"",
19
19
  "build:watch": "tsc --watch",
20
20
  "test": "vitest run",
21
21
  "test:watch": "vitest",