pindex 1.4.0 β†’ 1.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 (126) hide show
  1. package/README.md +53 -23
  2. package/dist/cli/daemon.d.ts +1 -1
  3. package/dist/cli/daemon.d.ts.map +1 -1
  4. package/dist/cli/daemon.js +25 -6
  5. package/dist/cli/daemon.js.map +1 -1
  6. package/dist/cli/federate.d.ts +6 -0
  7. package/dist/cli/federate.d.ts.map +1 -0
  8. package/dist/cli/federate.js +121 -0
  9. package/dist/cli/federate.js.map +1 -0
  10. package/dist/cli/index.js +46 -2
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/init.d.ts.map +1 -1
  13. package/dist/cli/init.js +14 -7
  14. package/dist/cli/init.js.map +1 -1
  15. package/dist/cli/project-detector.d.ts +16 -3
  16. package/dist/cli/project-detector.d.ts.map +1 -1
  17. package/dist/cli/project-detector.js +83 -11
  18. package/dist/cli/project-detector.js.map +1 -1
  19. package/dist/cli/setup.d.ts.map +1 -1
  20. package/dist/cli/setup.js +3 -5
  21. package/dist/cli/setup.js.map +1 -1
  22. package/dist/db/queries.d.ts +14 -0
  23. package/dist/db/queries.d.ts.map +1 -1
  24. package/dist/db/queries.js +22 -3
  25. package/dist/db/queries.js.map +1 -1
  26. package/dist/federation/merge.d.ts +4 -0
  27. package/dist/federation/merge.d.ts.map +1 -0
  28. package/dist/federation/merge.js +15 -0
  29. package/dist/federation/merge.js.map +1 -0
  30. package/dist/federation/registry-name.d.ts +6 -0
  31. package/dist/federation/registry-name.d.ts.map +1 -0
  32. package/dist/federation/registry-name.js +17 -0
  33. package/dist/federation/registry-name.js.map +1 -0
  34. package/dist/federation/repo-set.d.ts +27 -0
  35. package/dist/federation/repo-set.d.ts.map +1 -0
  36. package/dist/federation/repo-set.js +41 -0
  37. package/dist/federation/repo-set.js.map +1 -0
  38. package/dist/federation/repos-env.d.ts +16 -0
  39. package/dist/federation/repos-env.d.ts.map +1 -0
  40. package/dist/federation/repos-env.js +27 -0
  41. package/dist/federation/repos-env.js.map +1 -0
  42. package/dist/gui/server.d.ts.map +1 -1
  43. package/dist/gui/server.js +63 -23
  44. package/dist/gui/server.js.map +1 -1
  45. package/dist/index.js +36 -34
  46. package/dist/index.js.map +1 -1
  47. package/dist/indexer/detect-languages.d.ts +10 -0
  48. package/dist/indexer/detect-languages.d.ts.map +1 -0
  49. package/dist/indexer/detect-languages.js +36 -0
  50. package/dist/indexer/detect-languages.js.map +1 -0
  51. package/dist/indexer/index.d.ts +2 -0
  52. package/dist/indexer/index.d.ts.map +1 -1
  53. package/dist/indexer/index.js +21 -9
  54. package/dist/indexer/index.js.map +1 -1
  55. package/dist/indexer/parser.d.ts.map +1 -1
  56. package/dist/indexer/parser.js +36 -5
  57. package/dist/indexer/parser.js.map +1 -1
  58. package/dist/indexer/summarizer.d.ts.map +1 -1
  59. package/dist/indexer/summarizer.js +3 -0
  60. package/dist/indexer/summarizer.js.map +1 -1
  61. package/dist/memory/retention.d.ts +16 -0
  62. package/dist/memory/retention.d.ts.map +1 -0
  63. package/dist/memory/retention.js +32 -0
  64. package/dist/memory/retention.js.map +1 -0
  65. package/dist/monitoring/server.d.ts.map +1 -1
  66. package/dist/monitoring/server.js +22 -1
  67. package/dist/monitoring/server.js.map +1 -1
  68. package/dist/monitoring/ui/dashboard.js +83 -31
  69. package/dist/monitoring/ui/esc.js +17 -0
  70. package/dist/monitoring/ui/index.html +17 -11
  71. package/dist/monitoring/ui/styles.css +24 -4
  72. package/dist/server-config.d.ts +18 -0
  73. package/dist/server-config.d.ts.map +1 -0
  74. package/dist/server-config.js +41 -0
  75. package/dist/server-config.js.map +1 -0
  76. package/dist/server.d.ts +5 -0
  77. package/dist/server.d.ts.map +1 -1
  78. package/dist/server.js +21 -14
  79. package/dist/server.js.map +1 -1
  80. package/dist/tools/find_usages.d.ts +2 -2
  81. package/dist/tools/find_usages.d.ts.map +1 -1
  82. package/dist/tools/find_usages.js +24 -10
  83. package/dist/tools/find_usages.js.map +1 -1
  84. package/dist/tools/get_context.d.ts +2 -2
  85. package/dist/tools/get_context.d.ts.map +1 -1
  86. package/dist/tools/get_context.js +54 -50
  87. package/dist/tools/get_context.js.map +1 -1
  88. package/dist/tools/get_dependencies.d.ts +2 -2
  89. package/dist/tools/get_dependencies.d.ts.map +1 -1
  90. package/dist/tools/get_dependencies.js +24 -11
  91. package/dist/tools/get_dependencies.js.map +1 -1
  92. package/dist/tools/get_doc_chunk.d.ts +2 -2
  93. package/dist/tools/get_doc_chunk.d.ts.map +1 -1
  94. package/dist/tools/get_doc_chunk.js +38 -29
  95. package/dist/tools/get_doc_chunk.js.map +1 -1
  96. package/dist/tools/get_file_summary.d.ts +2 -2
  97. package/dist/tools/get_file_summary.d.ts.map +1 -1
  98. package/dist/tools/get_file_summary.js +48 -37
  99. package/dist/tools/get_file_summary.js.map +1 -1
  100. package/dist/tools/get_project_overview.d.ts +2 -3
  101. package/dist/tools/get_project_overview.d.ts.map +1 -1
  102. package/dist/tools/get_project_overview.js +22 -22
  103. package/dist/tools/get_project_overview.js.map +1 -1
  104. package/dist/tools/get_symbol.d.ts +2 -2
  105. package/dist/tools/get_symbol.d.ts.map +1 -1
  106. package/dist/tools/get_symbol.js +33 -27
  107. package/dist/tools/get_symbol.js.map +1 -1
  108. package/dist/tools/schemas.d.ts +9 -0
  109. package/dist/tools/schemas.d.ts.map +1 -1
  110. package/dist/tools/schemas.js +20 -2
  111. package/dist/tools/schemas.js.map +1 -1
  112. package/dist/tools/search_docs.d.ts +2 -2
  113. package/dist/tools/search_docs.d.ts.map +1 -1
  114. package/dist/tools/search_docs.js +40 -28
  115. package/dist/tools/search_docs.js.map +1 -1
  116. package/dist/tools/search_symbols.d.ts +2 -3
  117. package/dist/tools/search_symbols.d.ts.map +1 -1
  118. package/dist/tools/search_symbols.js +35 -46
  119. package/dist/tools/search_symbols.js.map +1 -1
  120. package/dist/types.d.ts +24 -10
  121. package/dist/types.d.ts.map +1 -1
  122. package/dist/util/net.d.ts +25 -0
  123. package/dist/util/net.d.ts.map +1 -0
  124. package/dist/util/net.js +50 -0
  125. package/dist/util/net.js.map +1 -0
  126. package/package.json +5 -5
@@ -1,8 +1,12 @@
1
- /* MCP Codebase Indexer – Live Dashboard (Vanilla JS + WebSocket) */
1
+ /* MCP Codebase Indexer – Live Dashboard (Vanilla JS + WebSocket, ESM module) */
2
+
3
+ import { escHtml } from './esc.js';
2
4
 
3
5
  // ─── State ────────────────────────────────────────────────────────────────────
4
6
 
5
7
  const MAX_CHART_POINTS = 20;
8
+ const RECONNECT_BASE_MS = 1000;
9
+ const RECONNECT_MAX_MS = 30000;
6
10
  const state = {
7
11
  calls: [],
8
12
  cumulativeActual: 0,
@@ -10,22 +14,52 @@ const state = {
10
14
  chart: null,
11
15
  ws: null,
12
16
  sessionId: null,
17
+ reconnectAttempts: 0,
18
+ reconnectTimer: null,
13
19
  };
14
20
 
15
21
  // ─── WebSocket Connection ─────────────────────────────────────────────────────
16
22
 
23
+ /** Reflects connection state in the status dot + accessible text label (UX-06). */
24
+ function setConnState(connected, message) {
25
+ const dot = document.getElementById('statusDot');
26
+ const text = document.getElementById('statusText');
27
+ const label = message || (connected ? 'Verbunden' : 'Getrennt');
28
+ dot.classList.toggle('connected', connected);
29
+ dot.setAttribute('aria-label', label);
30
+ if (text) text.textContent = label;
31
+ }
32
+
33
+ /** Capped exponential backoff with jitter, instead of a fixed 3s loop (UX-05). */
34
+ function scheduleReconnect() {
35
+ if (state.reconnectTimer) return;
36
+ const delay = Math.min(RECONNECT_MAX_MS, RECONNECT_BASE_MS * 2 ** state.reconnectAttempts);
37
+ const jitter = delay * 0.2 * Math.random();
38
+ state.reconnectAttempts++;
39
+ setConnState(false, 'Verbindung verloren – erneuter Versuch …');
40
+ state.reconnectTimer = setTimeout(() => {
41
+ state.reconnectTimer = null;
42
+ connect();
43
+ }, delay + jitter);
44
+ }
45
+
17
46
  function connect() {
18
47
  const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
19
48
  const ws = new WebSocket(`${protocol}//${location.host}`);
20
49
  state.ws = ws;
21
50
 
22
51
  ws.addEventListener('open', () => {
23
- document.getElementById('statusDot').classList.add('connected');
52
+ state.reconnectAttempts = 0;
53
+ setConnState(true, 'Verbunden');
24
54
  });
25
55
 
26
56
  ws.addEventListener('close', () => {
27
- document.getElementById('statusDot').classList.remove('connected');
28
- setTimeout(connect, 3000); // Reconnect
57
+ scheduleReconnect();
58
+ });
59
+
60
+ ws.addEventListener('error', () => {
61
+ // A 'close' normally follows, but reflect the drop immediately.
62
+ setConnState(false, 'Verbindungsfehler');
29
63
  });
30
64
 
31
65
  ws.addEventListener('message', (event) => {
@@ -42,11 +76,13 @@ function connect() {
42
76
 
43
77
  function handleEvent(event) {
44
78
  if (event.type === 'tool_call') {
45
- state.cumulativeActual = event.cumulative_actual;
46
- state.cumulativeSavings = event.cumulative_savings;
79
+ // The broadcast carries per-call figures; accumulate running totals here so
80
+ // the KPI cards show a session total, not the last call's value (UX-01).
81
+ state.cumulativeActual += event.tokens_actual || 0;
82
+ state.cumulativeSavings += event.savings || 0;
47
83
  state.sessionId = event.session_id;
48
84
 
49
- updateStatsCards(event);
85
+ updateStatsCards();
50
86
  updateChart(event);
51
87
  appendCallFeedItem(event);
52
88
  } else if (event.type === 'session_start' || event.type === 'session_update') {
@@ -62,12 +98,16 @@ function formatNumber(n) {
62
98
  return n.toLocaleString('de-DE');
63
99
  }
64
100
 
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';
101
+ function updateStatsCards() {
102
+ const actual = state.cumulativeActual;
103
+ const saved = state.cumulativeSavings;
104
+ const base = actual + saved;
105
+ const pct = base > 0 ? (saved / base) * 100 : 0;
106
+ document.getElementById('tokensUsed').textContent = formatNumber(actual);
107
+ document.getElementById('tokensSaved').textContent = formatNumber(saved);
108
+ document.getElementById('savingsPercent').textContent = pct.toFixed(1) + '%';
109
+ document.getElementById('savingsBar').style.width = Math.min(100, pct) + '%';
110
+ document.getElementById('barTokenCount').textContent = formatNumber(actual) + ' Token';
71
111
  }
72
112
 
73
113
  // ─── Chart ────────────────────────────────────────────────────────────────────
@@ -98,8 +138,9 @@ function initChart() {
98
138
  maintainAspectRatio: false,
99
139
  plugins: { legend: { labels: { color: '#9ca3af', font: { size: 11 } } } },
100
140
  scales: {
101
- x: { ticks: { color: '#6b7280', font: { size: 10 } }, grid: { color: '#1f2937' } },
102
- y: { ticks: { color: '#6b7280', font: { size: 10 } }, grid: { color: '#1f2937' } },
141
+ // #9ca3af matches the legend and clears WCAG AA on the chart bg (UX-02).
142
+ x: { ticks: { color: '#9ca3af', font: { size: 11 } }, grid: { color: '#1f2937' } },
143
+ y: { ticks: { color: '#9ca3af', font: { size: 11 } }, grid: { color: '#1f2937' } },
103
144
  },
104
145
  },
105
146
  });
@@ -126,14 +167,19 @@ function updateChart(event) {
126
167
 
127
168
  function appendCallFeedItem(event) {
128
169
  const feed = document.getElementById('callsFeed');
170
+ // Drop the "no calls yet" placeholder once real data arrives (UX-04).
171
+ feed.querySelector('.memory-empty')?.remove();
129
172
  const time = dayjs(event.timestamp).format('HH:mm:ss');
130
173
 
131
174
  const item = document.createElement('div');
132
175
  item.className = 'call-item';
176
+ // event.tool and event.query derive from MCP tool arguments β€” escape both
177
+ // before they touch innerHTML (SEC-07).
178
+ const toolLabel = escHtml(event.tool) + (event.query ? `("${escHtml(event.query)}")` : '');
133
179
  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>
180
+ <span class="call-time">${escHtml(time)}</span>
181
+ <span class="call-tool">${toolLabel}</span>
182
+ <span class="call-tokens"><span class="actual">${escHtml(event.tokens_actual)}</span> / ~${escHtml(event.tokens_estimated)}</span>
137
183
  `;
138
184
 
139
185
  // Prepend so newest is at top
@@ -147,12 +193,23 @@ function appendCallFeedItem(event) {
147
193
 
148
194
  // ─── Session History ──────────────────────────────────────────────────────────
149
195
 
196
+ /** Renders a single full-width message row + dashes in the totals (UX-04). */
197
+ function setHistoryMessage(msg) {
198
+ document.getElementById('historyBody').innerHTML =
199
+ `<tr><td colspan="4" class="memory-empty">${escHtml(msg)}</td></tr>`;
200
+ document.getElementById('histTotalTokens').textContent = '-';
201
+ document.getElementById('histTotalSaved').textContent = '-';
202
+ document.getElementById('histTotalPct').textContent = '-';
203
+ }
204
+
150
205
  async function loadSessionHistory() {
151
206
  try {
152
207
  const res = await fetch('/api/sessions');
153
- if (!res.ok) return;
208
+ if (!res.ok) { setHistoryMessage('Fehler beim Laden der Session History'); return; }
154
209
  const sessions = await res.json();
155
210
 
211
+ if (!sessions.length) { setHistoryMessage('Noch keine Sessions'); return; }
212
+
156
213
  const tbody = document.getElementById('historyBody');
157
214
  tbody.innerHTML = '';
158
215
 
@@ -168,11 +225,13 @@ async function loadSessionHistory() {
168
225
  totalSaved += s.total_savings;
169
226
 
170
227
  const row = document.createElement('tr');
228
+ // s.label is attacker-influenceable (start_comparison tool arg) β€” escape it
229
+ // and every other interpolated value before it touches innerHTML (SEC-02).
171
230
  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>
231
+ <td>${escHtml(s.label || s.id.substring(0, 8))}</td>
232
+ <td>${escHtml(formatNumber(s.total_tokens))}</td>
233
+ <td>${escHtml(formatNumber(s.total_savings))}</td>
234
+ <td>${escHtml(pct)}%</td>
176
235
  `;
177
236
  tbody.appendChild(row);
178
237
  }
@@ -184,6 +243,7 @@ async function loadSessionHistory() {
184
243
  document.getElementById('histTotalPct').textContent = grandPct + '%';
185
244
  } catch (e) {
186
245
  console.error('Failed to load session history:', e);
246
+ setHistoryMessage('Fehler beim Laden der Session History');
187
247
  }
188
248
  }
189
249
 
@@ -216,14 +276,6 @@ const AP_LABELS = {
216
276
  redundant_access: 'Redundanter Zugriff',
217
277
  };
218
278
 
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
279
  function renderAntiPatterns(items) {
228
280
  const feed = document.getElementById('antiPatternsFeed');
229
281
  const countEl = document.getElementById('apCount');
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared HTML-escaping helper for the monitoring dashboard.
3
+ *
4
+ * Exported as an ESM module so it can be unit-tested (tests/monitoring/esc.test.ts)
5
+ * and imported by dashboard.js. EVERY dynamic value interpolated into innerHTML β€”
6
+ * tool names, search queries, session labels, observations, file paths β€” must pass
7
+ * through this, because those fields are derived from MCP tool arguments and are
8
+ * therefore attacker-influenceable (SEC-02 / SEC-07).
9
+ */
10
+ export function escHtml(str) {
11
+ return String(str ?? '')
12
+ .replace(/&/g, '&amp;')
13
+ .replace(/</g, '&lt;')
14
+ .replace(/>/g, '&gt;')
15
+ .replace(/"/g, '&quot;')
16
+ .replace(/'/g, '&#39;');
17
+ }
@@ -9,22 +9,26 @@
9
9
  <script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
10
10
  </head>
11
11
  <body>
12
- <div class="header">
12
+ <header class="header">
13
13
  <div class="header-title">
14
- <span class="dot" id="statusDot">●</span>
14
+ <span class="conn-status" role="status" aria-live="polite">
15
+ <span class="dot" id="statusDot" aria-hidden="true">●</span>
16
+ <span id="statusText" class="conn-text">Verbinde…</span>
17
+ </span>
15
18
  <h1>MCP Codebase Indexer</h1>
16
19
  <span id="sessionLabel" class="session-label"></span>
17
20
  </div>
18
21
  <div class="header-meta">
19
22
  <label class="refresh-control" title="Aktualisierungsintervall der Session History">
20
23
  <span id="refreshLabel">30s</span>
21
- <input type="range" id="refreshSlider" min="1" max="60" value="30" step="1">
24
+ <input type="range" id="refreshSlider" min="1" max="60" value="30" step="1"
25
+ aria-label="Aktualisierungsintervall in Sekunden">
22
26
  </label>
23
27
  <span id="sessionTime"></span>
24
28
  </div>
25
- </div>
29
+ </header>
26
30
 
27
- <div class="grid">
31
+ <main class="grid">
28
32
  <!-- Stats Cards -->
29
33
  <div class="card stats-card">
30
34
  <div class="stat">
@@ -54,12 +58,13 @@
54
58
  <!-- Recent Calls -->
55
59
  <div class="card calls-card">
56
60
  <h2>Letzte Aufrufe</h2>
57
- <div id="callsFeed"></div>
61
+ <div id="callsFeed"><div class="memory-empty">Noch keine Aufrufe</div></div>
58
62
  </div>
59
63
 
60
64
  <!-- Session History -->
61
65
  <div class="card history-card">
62
66
  <h2>Session History</h2>
67
+ <div class="table-wrap">
63
68
  <table id="historyTable">
64
69
  <thead>
65
70
  <tr>
@@ -69,7 +74,7 @@
69
74
  <th>%</th>
70
75
  </tr>
71
76
  </thead>
72
- <tbody id="historyBody"></tbody>
77
+ <tbody id="historyBody"><tr><td colspan="4" class="memory-empty">Wird geladen…</td></tr></tbody>
73
78
  <tfoot>
74
79
  <tr id="historyTotal">
75
80
  <td><strong>Gesamt</strong></td>
@@ -79,11 +84,12 @@
79
84
  </tr>
80
85
  </tfoot>
81
86
  </table>
87
+ </div>
82
88
  </div>
83
- </div>
89
+ </main>
84
90
 
85
91
  <!-- Session Memory: Anti-Patterns & Observations -->
86
- <div class="memory-section">
92
+ <section class="memory-section" aria-label="Session-Speicher">
87
93
  <div class="memory-panel">
88
94
  <h2>Anti-Patterns <span class="memory-count" id="apCount"></span></h2>
89
95
  <div id="antiPatternsFeed" class="memory-feed">
@@ -96,8 +102,8 @@
96
102
  <div class="memory-empty">Wird geladen…</div>
97
103
  </div>
98
104
  </div>
99
- </div>
105
+ </section>
100
106
 
101
- <script src="/dashboard.js"></script>
107
+ <script type="module" src="/dashboard.js"></script>
102
108
  </body>
103
109
  </html>
@@ -7,7 +7,9 @@
7
7
  --bg3: #242838;
8
8
  --border: #2e3348;
9
9
  --text: #e2e8f0;
10
- --text-muted: #6b7280;
10
+ /* #9ca3af clears WCAG AA (>=4.5:1) on every dashboard surface; the previous
11
+ #6b7280 failed contrast on all three backgrounds (UX-02). */
12
+ --text-muted: #9ca3af;
11
13
  --accent: #6366f1;
12
14
  --green: #22c55e;
13
15
  --blue: #3b82f6;
@@ -29,6 +31,8 @@ body {
29
31
  display: flex;
30
32
  justify-content: space-between;
31
33
  align-items: center;
34
+ flex-wrap: wrap;
35
+ gap: 8px 16px;
32
36
  padding: 16px 24px;
33
37
  border-bottom: 1px solid var(--border);
34
38
  background: var(--bg2);
@@ -37,8 +41,14 @@ body {
37
41
  z-index: 10;
38
42
  }
39
43
 
44
+ @media (max-width: 768px) {
45
+ .header { flex-direction: column; align-items: flex-start; }
46
+ }
47
+
40
48
  .header-title { display: flex; align-items: center; gap: 10px; }
41
- .header-title h1 { font-size: 1rem; font-weight: 600; }
49
+ .header-title h1 { font-size: 1rem; font-weight: 600; white-space: nowrap; }
50
+ .conn-status { display: inline-flex; align-items: center; gap: 5px; }
51
+ .conn-text { font-size: 11px; color: var(--text-muted); }
42
52
  .dot { font-size: 10px; color: var(--gray); }
43
53
  .dot.connected { color: var(--green); }
44
54
  .session-label {
@@ -70,6 +80,11 @@ body {
70
80
  outline: none;
71
81
  cursor: pointer;
72
82
  }
83
+ /* Restore a visible keyboard-focus indicator on the page's only control (UX-07). */
84
+ .refresh-control input[type="range"]:focus-visible {
85
+ outline: 2px solid var(--accent);
86
+ outline-offset: 3px;
87
+ }
73
88
  .refresh-control input[type="range"]::-webkit-slider-thumb {
74
89
  -webkit-appearance: none;
75
90
  appearance: none;
@@ -157,11 +172,12 @@ body {
157
172
  }
158
173
  .call-item:last-child { border-bottom: none; }
159
174
  .call-time { color: var(--text-muted); font-variant-numeric: tabular-nums; }
160
- .call-tool { color: var(--blue); font-family: monospace; }
175
+ .call-tool { color: var(--blue); font-family: monospace; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
161
176
  .call-tokens { color: var(--text-muted); text-align: right; white-space: nowrap; }
162
177
  .call-tokens .actual { color: var(--text); font-weight: 600; }
163
178
 
164
179
  /* ─── History Table ───────────────────────────────────────────────────────── */
180
+ .table-wrap { overflow-x: auto; }
165
181
  #historyTable { width: 100%; border-collapse: collapse; font-size: 13px; }
166
182
  #historyTable th, #historyTable td { text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--border); }
167
183
  #historyTable th { color: var(--text-muted); font-weight: 500; font-size: 11px; text-transform: uppercase; }
@@ -224,7 +240,11 @@ body {
224
240
 
225
241
  /* Observations */
226
242
  .obs-item { border-left-color: var(--accent); }
227
- .memory-item.stale { opacity: 0.55; }
243
+ /* Signal staleness with a dashed border + muted text rather than a blanket
244
+ opacity that pushed already-muted children below the contrast floor (UX-09).
245
+ The explicit "veraltet" badge already communicates the state. */
246
+ .memory-item.stale { border-left-style: dashed; }
247
+ .memory-item.stale .memory-text { color: var(--text-muted); }
228
248
 
229
249
  .memory-item-header {
230
250
  display: flex;
@@ -0,0 +1,18 @@
1
+ export interface ServerConfig {
2
+ projectRoot: string;
3
+ indexPath: string;
4
+ monitoringPort: number;
5
+ languages: string[];
6
+ federationRepos: string[];
7
+ }
8
+ /**
9
+ * Resolves the server's runtime configuration. Explicit environment variables
10
+ * always win; anything not set is derived from the project root and the global
11
+ * registry. When the project isn't registered yet (e.g. the server was launched
12
+ * as a zero-config Claude Code plugin), it is self-registered so the CLI and the
13
+ * aggregated GUI discover it, and it uses the same index path / port a
14
+ * `pindex init` would have assigned. Registry access is best-effort and never
15
+ * blocks startup.
16
+ */
17
+ export declare function resolveServerConfig(env: NodeJS.ProcessEnv, cwd: string): Promise<ServerConfig>;
18
+ //# sourceMappingURL=server-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../src/server-config.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,YAAY,CAAC,CAkCvB"}
@@ -0,0 +1,41 @@
1
+ import { findProjectRoot, getProjectIndexPath, GlobalRegistry, } from './cli/project-detector.js';
2
+ import { detectProjectLanguages } from './indexer/detect-languages.js';
3
+ import { parseFederationRepos } from './federation/repos-env.js';
4
+ /**
5
+ * Resolves the server's runtime configuration. Explicit environment variables
6
+ * always win; anything not set is derived from the project root and the global
7
+ * registry. When the project isn't registered yet (e.g. the server was launched
8
+ * as a zero-config Claude Code plugin), it is self-registered so the CLI and the
9
+ * aggregated GUI discover it, and it uses the same index path / port a
10
+ * `pindex init` would have assigned. Registry access is best-effort and never
11
+ * blocks startup.
12
+ */
13
+ export async function resolveServerConfig(env, cwd) {
14
+ // A plugin passes PROJECT_ROOT="${CLAUDE_PROJECT_DIR}" so the server anchors to
15
+ // the real project even when Claude Code is launched from a parent directory.
16
+ // If the token was left unsubstituted (a literal "${...}"), ignore it and fall
17
+ // back to cwd, which defaults to the project root.
18
+ const explicitRoot = env.PROJECT_ROOT;
19
+ const projectRoot = explicitRoot && !explicitRoot.includes('${') ? explicitRoot : findProjectRoot(cwd);
20
+ let entry;
21
+ try {
22
+ const registry = new GlobalRegistry();
23
+ entry = registry.getByPath(projectRoot) ?? registry.upsert(projectRoot);
24
+ }
25
+ catch (err) {
26
+ process.stderr.write(`[pindex] registry self-register skipped: ${String(err)}\n`);
27
+ }
28
+ const root = entry?.path ?? projectRoot;
29
+ const indexPath = env.INDEX_PATH ?? getProjectIndexPath(root);
30
+ const monitoringPort = env.MONITORING_PORT
31
+ ? parseInt(env.MONITORING_PORT, 10)
32
+ : entry?.monitoringPort ?? 7842;
33
+ const languages = env.LANGUAGES
34
+ ? env.LANGUAGES.split(',').map((s) => s.trim()).filter(Boolean)
35
+ : await detectProjectLanguages(root);
36
+ const federationRepos = env.FEDERATION_REPOS
37
+ ? parseFederationRepos(env.FEDERATION_REPOS)
38
+ : entry?.federatedRepos.map((r) => r.path) ?? [];
39
+ return { projectRoot: root, indexPath, monitoringPort, languages, federationRepos };
40
+ }
41
+ //# sourceMappingURL=server-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../src/server-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,cAAc,GAEf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAUjE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAsB,EACtB,GAAW;IAEX,gFAAgF;IAChF,8EAA8E;IAC9E,+EAA+E;IAC/E,mDAAmD;IACnD,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IACtC,MAAM,WAAW,GACf,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAErF,IAAI,KAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACtC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,WAAW,CAAC;IAExC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,cAAc,GAAG,GAAG,CAAC,eAAe;QACxC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;QACnC,CAAC,CAAC,KAAK,EAAE,cAAc,IAAI,IAAI,CAAC;IAElC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS;QAC7B,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/D,CAAC,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,eAAe,GAAG,GAAG,CAAC,gBAAgB;QAC1C,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC5C,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAEnD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AACtF,CAAC"}
package/dist/server.d.ts CHANGED
@@ -6,6 +6,8 @@ import type { MonitoringServer } from './monitoring/server.js';
6
6
  import type { SessionObserver } from './memory/observer.js';
7
7
  /** A secondary project whose index is searched alongside the primary DB (federation). */
8
8
  export interface FederatedDb {
9
+ /** Human-readable name for this repo (populated from GlobalRegistry or assignName()). */
10
+ name: string;
9
11
  /** Absolute path to the federated project root (used for result attribution). */
10
12
  path: string;
11
13
  /** Open SQLite connection to the federated project's index.db. */
@@ -28,6 +30,9 @@ export interface ServerOptions {
28
30
  sessionId?: string;
29
31
  /** Passive observer that records tool calls for session memory generation. */
30
32
  observer?: SessionObserver;
33
+ /** Name for the primary (local) repo. Required so RepoSet has a stable
34
+ * identity for it in tool results. Provided by index.ts at startup. */
35
+ primaryName?: string;
31
36
  }
32
37
  /**
33
38
  * Creates and configures the MCP stdio server with all registered tools.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgB/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAoN5D,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;CACvB;AAED,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,wBAAwB,EAAE,gBAAgB,GAAG,IAAI,EACjD,OAAO,EAAE,aAAa,GACrB,MAAM,CAqLR;AAOD,8EAA8E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgB/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAyN5D,yFAAyF;AACzF,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;CACvB;AAED,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;4EACwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,wBAAwB,EAAE,gBAAgB,GAAG,IAAI,EACjD,OAAO,EAAE,aAAa,GACrB,MAAM,CAiMR;AAOD,8EAA8E"}
package/dist/server.js CHANGED
@@ -19,6 +19,7 @@ import { saveContext } from './tools/save_context.js';
19
19
  import { getSessionMemory } from './tools/get_session_memory.js';
20
20
  import { getApiEndpoints } from './tools/get_api_endpoints.js';
21
21
  import { TOOL_SCHEMAS } from './tools/schemas.js';
22
+ import { RepoSet } from './federation/repo-set.js';
22
23
  /**
23
24
  * MCP tool schemas exposed to the client (name, description, JSON input schema).
24
25
  * Returned verbatim by the ListTools handler and drive input validation on the
@@ -236,6 +237,8 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
236
237
  catch { /* fallback */ }
237
238
  const server = new Server({ name: 'mcp-codebase-indexer', version }, { capabilities: { tools: {} } });
238
239
  const { projectRoot, monitoringPort = 7842, baselineMode = false, federatedDbs = [], sessionId = 'default', observer } = options;
240
+ const primaryName = options.primaryName ?? 'local';
241
+ const repoSet = RepoSet.fromServerConfig(db, primaryName, federatedDbs.map((f) => ({ name: f.name, path: f.path, db: f.db })), projectRoot);
239
242
  // ─── List Tools ────────────────────────────────────────────────────────────
240
243
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
241
244
  tools: process.env.EXPOSE_CORE_TOOLS_ONLY === 'true'
@@ -276,37 +279,37 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
276
279
  try {
277
280
  switch (name) {
278
281
  case 'search_symbols': {
279
- result = searchSymbols(db, args, federatedDbs, projectRoot);
282
+ result = searchSymbols(repoSet, args);
280
283
  heuristicMultiplier = 10;
281
284
  break;
282
285
  }
283
286
  case 'get_symbol': {
284
- result = getSymbol(db, args);
285
- heuristicMultiplier = result ? 15 : 0;
287
+ result = getSymbol(repoSet, args);
288
+ heuristicMultiplier = result.length > 0 ? 15 : 0;
286
289
  break;
287
290
  }
288
291
  case 'get_context': {
289
- result = await getContext(db, projectRoot, args);
290
- heuristicMultiplier = result ? 5 : 0;
292
+ result = await getContext(repoSet, args);
293
+ heuristicMultiplier = result.length > 0 ? 5 : 0;
291
294
  break;
292
295
  }
293
296
  case 'get_file_summary': {
294
- result = getFileSummary(db, args);
295
- heuristicMultiplier = result ? 8 : 0;
297
+ result = getFileSummary(repoSet, args);
298
+ heuristicMultiplier = result.length > 0 ? 8 : 0;
296
299
  break;
297
300
  }
298
301
  case 'find_usages': {
299
- result = findUsages(db, args);
302
+ result = findUsages(repoSet, args);
300
303
  heuristicMultiplier = 10;
301
304
  break;
302
305
  }
303
306
  case 'get_dependencies': {
304
- result = getDependencies(db, args);
307
+ result = getDependencies(repoSet, args);
305
308
  heuristicMultiplier = 10;
306
309
  break;
307
310
  }
308
311
  case 'get_project_overview': {
309
- result = getProjectOverview(db, projectRoot, federatedDbs, sessionId, args);
312
+ result = getProjectOverview(repoSet, projectRoot, sessionId, args);
310
313
  heuristicMultiplier = 5;
311
314
  break;
312
315
  }
@@ -328,13 +331,13 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
328
331
  break;
329
332
  }
330
333
  case 'search_docs': {
331
- result = searchDocs(db, args);
334
+ result = searchDocs(repoSet, args);
332
335
  heuristicMultiplier = 8;
333
336
  break;
334
337
  }
335
338
  case 'get_doc_chunk': {
336
- result = getDocChunk(db, args);
337
- heuristicMultiplier = result ? 3 : 0;
339
+ result = getDocChunk(repoSet, args);
340
+ heuristicMultiplier = result.length > 0 ? 3 : 0;
338
341
  break;
339
342
  }
340
343
  case 'save_context': {
@@ -350,7 +353,11 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
350
353
  }
351
354
  }
352
355
  catch (err) {
353
- result = { error: `Tool error: ${String(err)}` };
356
+ // Log the full error to stderr for debugging, but return only a generic
357
+ // message to the client: raw errors leak absolute host paths, file
358
+ // existence, and federated repo names into the LLM context (SEC-09).
359
+ process.stderr.write(`[pindex] Tool '${name}' failed: ${String(err)}\n`);
360
+ result = { error: `Tool '${name}' failed` };
354
361
  toolIsError = true;
355
362
  }
356
363
  // Passive observation (fire-and-forget, never throws)
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAKnG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkBlD;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;IACvB;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,iFAAiF;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBAChE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBACnE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACnE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,+BAA+B,EAAE;aAC3E;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;gBACpD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aACrE;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACrE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBAChE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aACtE;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAC3B;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;aACtE;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;aACvD;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACvE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,qCAAqC,EAAE;aAC5H;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE;aACrH;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;aAC/E;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;aAC7E;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBACvD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAC5F;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SAC5B;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2CAA2C;QACxD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBACtD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;gBACnE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE;aAC7G;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACrE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;aAC3E;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;gBAC3D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;aAC9D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBAC5E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;gBAC5D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;gBAChE,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6CAA6C,EAAE;aAC/F;YACD,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC;AAEF,8FAA8F;AAC9F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB;IACjE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB;CAC/E,CAAC,CAAC;AA6BH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,OAAgB,EAChB,WAA+B,EAC/B,wBAAiD,EACjD,OAAsB;IAEtB,iDAAiD;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAwB,CAAC;QAC5G,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,EACzC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,EAAE,YAAY,GAAG,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAEjI,8EAA8E;IAE9E,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM;YAClD,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3D,CAAC,CAAC,gBAAgB;KACrB,CAAC,CAAC,CAAC;IAEJ,8EAA8E;IAE9E,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEzD,yDAAyD;QACzD,IAAI,YAAY,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC9E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,EAAE,CAAC;aACxG,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAI,GAAY,OAAO,CAAC;QAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCAC7C,KAAK,EAAE,mBAAmB;gCAC1B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;6BAC3E,CAAC,EAAE,CAAC;oBACL,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,MAAe,CAAC;QACpB,oFAAoF;QACpF,6FAA6F;QAC7F,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,IAAI,CAAC;YACH,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBACtB,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,IAA0B,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;oBAClF,mBAAmB,GAAG,EAAE,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,IAAsB,CAAC,CAAC;oBAC/C,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM;gBACR,CAAC;gBACD,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,IAAuB,CAAC,CAAC;oBACpE,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACR,CAAC;gBACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;oBACxB,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,IAA2B,CAAC,CAAC;oBACzD,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACR,CAAC;gBACD,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,IAAuB,CAAC,CAAC;oBACjD,mBAAmB,GAAG,EAAE,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;oBACxB,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,IAA4B,CAAC,CAAC;oBAC3D,mBAAmB,GAAG,EAAE,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;oBAC5B,MAAM,GAAG,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,IAA+B,CAAC,CAAC;oBACvG,mBAAmB,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACR,CAAC;gBACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC7B,mBAAmB,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACR,CAAC;gBACD,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAoB,CAAC,CAAC;oBAC1D,MAAM;gBACR,CAAC;gBACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;oBACvB,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,IAA0B,CAAC,CAAC;oBACvD,MAAM;gBACR,CAAC;gBACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;oBACxB,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,IAA4B,EAAE,cAAc,CAAC,CAAC;oBAC3E,MAAM;gBACR,CAAC;gBACD,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,IAAuB,CAAC,CAAC;oBACjD,mBAAmB,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACR,CAAC;gBACD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,IAAwB,CAAC,CAAC;oBACnD,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACR,CAAC;gBACD,KAAK,cAAc,CAAC,CAAC,CAAC;oBACpB,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAwB,CAAC,CAAC;oBAC9D,MAAM;gBACR,CAAC;gBACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;oBAC1B,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAA6B,CAAC,CAAC;oBACxE,MAAM;gBACR,CAAC;gBACD;oBACE,MAAM,GAAG,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,EAAE,KAAK,EAAE,eAAe,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACjD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,sDAAsD;QACtD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAA+B,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAClF,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC5C,kBAAkB,GAAG,UAAU,GAAG,mBAAmB,CAAC;QAEtD,kFAAkF;QAClF,IAAI,WAAW,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,WAAW,CAAC,GAAG,CAAC;gBACd,QAAQ,EAAE,IAAI;gBACd,UAAU;gBACV,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC;gBAC5D,KAAK,EAAG,IAAgC,CAAC,KAA2B;aACrE,CAAC,CAAC;YAEH,6BAA6B;YAC7B,wBAAwB,EAAE,SAAS,CAAC;gBAClC,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,WAAW,CAAC,mBAAmB,EAAE;gBAC7C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,IAAI;gBACV,aAAa,EAAE,UAAU;gBACzB,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC;gBAC1D,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,EAAE,CAAC,CAAC;gBACrD,eAAe,EAAE,CAAC,EAAE,+DAA+D;gBACnF,iBAAiB,EAAE,UAAU;gBAC7B,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,UAAU,EAAE,CAAC,CAAC;aACjE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wFAAwF;AACxF,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,8EAA8E"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { FindUsagesInput, UsageResult } from '../types.js';
3
- export declare function findUsages(db: Database.Database, input: FindUsagesInput): UsageResult[];
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function findUsages(repoSet: RepoSet, input: FindUsagesInput): UsageResult[];
4
4
  //# sourceMappingURL=find_usages.d.ts.map