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.
- package/README.md +53 -23
- package/dist/cli/daemon.d.ts +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +25 -6
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/federate.d.ts +6 -0
- package/dist/cli/federate.d.ts.map +1 -0
- package/dist/cli/federate.js +121 -0
- package/dist/cli/federate.js.map +1 -0
- package/dist/cli/index.js +46 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +14 -7
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/project-detector.d.ts +16 -3
- package/dist/cli/project-detector.d.ts.map +1 -1
- package/dist/cli/project-detector.js +83 -11
- package/dist/cli/project-detector.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +3 -5
- package/dist/cli/setup.js.map +1 -1
- package/dist/db/queries.d.ts +14 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +22 -3
- package/dist/db/queries.js.map +1 -1
- package/dist/federation/merge.d.ts +4 -0
- package/dist/federation/merge.d.ts.map +1 -0
- package/dist/federation/merge.js +15 -0
- package/dist/federation/merge.js.map +1 -0
- package/dist/federation/registry-name.d.ts +6 -0
- package/dist/federation/registry-name.d.ts.map +1 -0
- package/dist/federation/registry-name.js +17 -0
- package/dist/federation/registry-name.js.map +1 -0
- package/dist/federation/repo-set.d.ts +27 -0
- package/dist/federation/repo-set.d.ts.map +1 -0
- package/dist/federation/repo-set.js +41 -0
- package/dist/federation/repo-set.js.map +1 -0
- package/dist/federation/repos-env.d.ts +16 -0
- package/dist/federation/repos-env.d.ts.map +1 -0
- package/dist/federation/repos-env.js +27 -0
- package/dist/federation/repos-env.js.map +1 -0
- package/dist/gui/server.d.ts.map +1 -1
- package/dist/gui/server.js +63 -23
- package/dist/gui/server.js.map +1 -1
- package/dist/index.js +36 -34
- package/dist/index.js.map +1 -1
- package/dist/indexer/detect-languages.d.ts +10 -0
- package/dist/indexer/detect-languages.d.ts.map +1 -0
- package/dist/indexer/detect-languages.js +36 -0
- package/dist/indexer/detect-languages.js.map +1 -0
- package/dist/indexer/index.d.ts +2 -0
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +21 -9
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/parser.d.ts.map +1 -1
- package/dist/indexer/parser.js +36 -5
- package/dist/indexer/parser.js.map +1 -1
- package/dist/indexer/summarizer.d.ts.map +1 -1
- package/dist/indexer/summarizer.js +3 -0
- package/dist/indexer/summarizer.js.map +1 -1
- package/dist/memory/retention.d.ts +16 -0
- package/dist/memory/retention.d.ts.map +1 -0
- package/dist/memory/retention.js +32 -0
- package/dist/memory/retention.js.map +1 -0
- package/dist/monitoring/server.d.ts.map +1 -1
- package/dist/monitoring/server.js +22 -1
- package/dist/monitoring/server.js.map +1 -1
- package/dist/monitoring/ui/dashboard.js +83 -31
- package/dist/monitoring/ui/esc.js +17 -0
- package/dist/monitoring/ui/index.html +17 -11
- package/dist/monitoring/ui/styles.css +24 -4
- package/dist/server-config.d.ts +18 -0
- package/dist/server-config.d.ts.map +1 -0
- package/dist/server-config.js +41 -0
- package/dist/server-config.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -14
- package/dist/server.js.map +1 -1
- package/dist/tools/find_usages.d.ts +2 -2
- package/dist/tools/find_usages.d.ts.map +1 -1
- package/dist/tools/find_usages.js +24 -10
- package/dist/tools/find_usages.js.map +1 -1
- package/dist/tools/get_context.d.ts +2 -2
- package/dist/tools/get_context.d.ts.map +1 -1
- package/dist/tools/get_context.js +54 -50
- package/dist/tools/get_context.js.map +1 -1
- package/dist/tools/get_dependencies.d.ts +2 -2
- package/dist/tools/get_dependencies.d.ts.map +1 -1
- package/dist/tools/get_dependencies.js +24 -11
- package/dist/tools/get_dependencies.js.map +1 -1
- package/dist/tools/get_doc_chunk.d.ts +2 -2
- package/dist/tools/get_doc_chunk.d.ts.map +1 -1
- package/dist/tools/get_doc_chunk.js +38 -29
- package/dist/tools/get_doc_chunk.js.map +1 -1
- package/dist/tools/get_file_summary.d.ts +2 -2
- package/dist/tools/get_file_summary.d.ts.map +1 -1
- package/dist/tools/get_file_summary.js +48 -37
- package/dist/tools/get_file_summary.js.map +1 -1
- package/dist/tools/get_project_overview.d.ts +2 -3
- package/dist/tools/get_project_overview.d.ts.map +1 -1
- package/dist/tools/get_project_overview.js +22 -22
- package/dist/tools/get_project_overview.js.map +1 -1
- package/dist/tools/get_symbol.d.ts +2 -2
- package/dist/tools/get_symbol.d.ts.map +1 -1
- package/dist/tools/get_symbol.js +33 -27
- package/dist/tools/get_symbol.js.map +1 -1
- package/dist/tools/schemas.d.ts +9 -0
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +20 -2
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/search_docs.d.ts +2 -2
- package/dist/tools/search_docs.d.ts.map +1 -1
- package/dist/tools/search_docs.js +40 -28
- package/dist/tools/search_docs.js.map +1 -1
- package/dist/tools/search_symbols.d.ts +2 -3
- package/dist/tools/search_symbols.d.ts.map +1 -1
- package/dist/tools/search_symbols.js +35 -46
- package/dist/tools/search_symbols.js.map +1 -1
- package/dist/types.d.ts +24 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/util/net.d.ts +25 -0
- package/dist/util/net.d.ts.map +1 -0
- package/dist/util/net.js +50 -0
- package/dist/util/net.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { delimiter } from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* `FEDERATION_REPOS` is a delimiter-separated list of absolute repo paths stored
|
|
4
|
+
* in `.mcp.json`. We use the OS path delimiter (`:` on POSIX, `;` on Windows) —
|
|
5
|
+
* the same convention as `PATH` — because a plain `:` collides with the colon in
|
|
6
|
+
* Windows drive letters (`C:\...`), which silently corrupts every path on
|
|
7
|
+
* Windows. On POSIX the delimiter stays `:`, so existing values keep working
|
|
8
|
+
* with no migration.
|
|
9
|
+
*
|
|
10
|
+
* Read side additionally accepts a comma as a separator for backward
|
|
11
|
+
* compatibility with hand-edited values.
|
|
12
|
+
*/
|
|
13
|
+
/** Parses a `FEDERATION_REPOS` env value into a list of absolute paths. */
|
|
14
|
+
export function parseFederationRepos(value) {
|
|
15
|
+
if (!value)
|
|
16
|
+
return [];
|
|
17
|
+
return value
|
|
18
|
+
.split(delimiter)
|
|
19
|
+
.flatMap((s) => s.split(','))
|
|
20
|
+
.map((s) => s.trim())
|
|
21
|
+
.filter(Boolean);
|
|
22
|
+
}
|
|
23
|
+
/** Serialises a list of absolute paths into a `FEDERATION_REPOS` env value. */
|
|
24
|
+
export function joinFederationRepos(paths) {
|
|
25
|
+
return paths.join(delimiter);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=repos-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repos-env.js","sourceRoot":"","sources":["../../src/federation/repos-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,MAAM,UAAU,oBAAoB,CAAC,KAAyB;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK;SACT,KAAK,CAAC,SAAS,CAAC;SAChB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,KAAe;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/gui/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/gui/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/gui/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAKpC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAaD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAuD1F;AAID,wBAAgB,YAAY,IAAI,OAAO,CAAC,WAAW,CAmLlD;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IAC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2BvE"}
|
package/dist/gui/server.js
CHANGED
|
@@ -10,6 +10,7 @@ import express from 'express';
|
|
|
10
10
|
import open from 'open';
|
|
11
11
|
import Database from 'better-sqlite3';
|
|
12
12
|
import { GlobalRegistry, getProjectIndexPath, } from '../cli/project-detector.js';
|
|
13
|
+
import { isAllowedHost, isAllowedOrigin } from '../util/net.js';
|
|
13
14
|
/** Check whether a TCP port is accepting connections (timeout: 300ms). */
|
|
14
15
|
function isPortListening(port) {
|
|
15
16
|
return new Promise((resolve) => {
|
|
@@ -76,6 +77,15 @@ export function loadProjectStats(entry) {
|
|
|
76
77
|
export function createGuiApp() {
|
|
77
78
|
const app = express();
|
|
78
79
|
app.use(express.json());
|
|
80
|
+
// Block DNS-rebinding: only accept loopback Host headers (unless the operator
|
|
81
|
+
// opted into a non-loopback bind via PINDEX_BIND_HOST). SEC-03/SEC-04.
|
|
82
|
+
app.use((req, res, next) => {
|
|
83
|
+
if (!isAllowedHost(req.headers.host)) {
|
|
84
|
+
res.status(403).json({ error: 'Forbidden' });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
next();
|
|
88
|
+
});
|
|
79
89
|
// Cache registry reads with a 5-second TTL to avoid re-reading the file on every request
|
|
80
90
|
let registryCache = null;
|
|
81
91
|
let registryCacheTime = 0;
|
|
@@ -209,7 +219,13 @@ export function createGuiApp() {
|
|
|
209
219
|
});
|
|
210
220
|
return res.json(result);
|
|
211
221
|
});
|
|
212
|
-
|
|
222
|
+
// POST (not GET) + Origin check so a cross-site page cannot trigger the
|
|
223
|
+
// open() side effect via a navigation/<img>/<iframe>. A forged cross-origin
|
|
224
|
+
// form POST carries the attacker's Origin and is rejected. SEC-04 (CSRF).
|
|
225
|
+
app.post('/api/projects/:hash/open', async (req, res) => {
|
|
226
|
+
if (!isAllowedOrigin(req.headers.origin)) {
|
|
227
|
+
return res.status(403).json({ error: 'Forbidden' });
|
|
228
|
+
}
|
|
213
229
|
const registry = { list: getCachedRegistry };
|
|
214
230
|
const entry = registry.list().find((p) => p.hash === req.params.hash);
|
|
215
231
|
if (!entry)
|
|
@@ -250,9 +266,10 @@ export function startGuiServer(port) {
|
|
|
250
266
|
});
|
|
251
267
|
}
|
|
252
268
|
// ─── Inline Dashboard HTML ─────────────────────────────────────────────────
|
|
253
|
-
// NOTE:
|
|
254
|
-
//
|
|
255
|
-
//
|
|
269
|
+
// NOTE: data rendered below comes from our own SQLite DBs, but several fields
|
|
270
|
+
// (session labels, tool queries, paths) are derived from MCP tool arguments and
|
|
271
|
+
// are therefore attacker-influenceable. All dynamic values interpolated into the
|
|
272
|
+
// DOM MUST be escaped via esc() before being assigned to innerHTML.
|
|
256
273
|
function buildDashboardHtml() {
|
|
257
274
|
return `<!DOCTYPE html>
|
|
258
275
|
<html lang="en">
|
|
@@ -302,8 +319,9 @@ function buildDashboardHtml() {
|
|
|
302
319
|
.srv-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
|
|
303
320
|
.srv-dot.on{background:var(--green);box-shadow:0 0 6px var(--green)}
|
|
304
321
|
.srv-dot.off{background:var(--border)}
|
|
305
|
-
.project-
|
|
306
|
-
.project-
|
|
322
|
+
.project-info{min-width:0}
|
|
323
|
+
.project-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
324
|
+
.project-path{font-size:.75rem;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
307
325
|
.badge{background:var(--border);border-radius:4px;padding:2px 8px;font-size:.75rem;white-space:nowrap}
|
|
308
326
|
.badge.green{background:#1c3829;color:var(--green)}
|
|
309
327
|
.badge.blue{background:#1c2a3e;color:var(--accent)}
|
|
@@ -329,7 +347,7 @@ function buildDashboardHtml() {
|
|
|
329
347
|
.detail-table tr:hover td{background:#1c2128}
|
|
330
348
|
.kind-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:.7rem;background:var(--border);color:var(--muted)}
|
|
331
349
|
.info-box{background:#0d1117;border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:16px;font-size:.85rem;line-height:1.7}
|
|
332
|
-
.info-box .formula{color:var(--accent);font-family:monospace;font-size:.8rem;margin-top:8px;padding:8px;background:var(--surface);border-radius:4px}
|
|
350
|
+
.info-box .formula{color:var(--accent);font-family:monospace;font-size:.8rem;margin-top:8px;padding:8px;background:var(--surface);border-radius:4px;white-space:pre}
|
|
333
351
|
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
|
|
334
352
|
.stat-box{background:#0d1117;border:1px solid var(--border);border-radius:6px;padding:12px}
|
|
335
353
|
.stat-box .v{font-size:1.4rem;font-weight:700;color:var(--accent)}
|
|
@@ -403,6 +421,22 @@ let chart = null, currentProjects = [];
|
|
|
403
421
|
let _modalSessions = [], _sessPage = 0;
|
|
404
422
|
const SESS_PER_PAGE = 6;
|
|
405
423
|
|
|
424
|
+
// Opens a project folder via POST (CSRF-safe) and surfaces failures on the button
|
|
425
|
+
// instead of swallowing them silently.
|
|
426
|
+
async function openFolder(hash, btn) {
|
|
427
|
+
try {
|
|
428
|
+
const r = await fetch('/api/projects/' + encodeURIComponent(hash) + '/open', { method: 'POST' });
|
|
429
|
+
if (!r.ok) throw new Error(String(r.status));
|
|
430
|
+
} catch (e) {
|
|
431
|
+
if (btn) {
|
|
432
|
+
const pTitle = btn.title, pColor = btn.style.color, pBorder = btn.style.borderColor;
|
|
433
|
+
btn.style.color = 'var(--red)'; btn.style.borderColor = 'var(--red)';
|
|
434
|
+
btn.title = 'Failed to open folder';
|
|
435
|
+
setTimeout(() => { btn.title = pTitle; btn.style.color = pColor; btn.style.borderColor = pBorder; }, 1800);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
406
440
|
function updateChart(projects) {
|
|
407
441
|
if (typeof Chart === 'undefined') return;
|
|
408
442
|
try {
|
|
@@ -435,10 +469,22 @@ function updateChart(projects) {
|
|
|
435
469
|
}
|
|
436
470
|
|
|
437
471
|
async function load() {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
472
|
+
let overview, projects, sessions;
|
|
473
|
+
try {
|
|
474
|
+
[{ overview, projects }, sessions] = await Promise.all([
|
|
475
|
+
fetch('/api/overview').then(r => { if (!r.ok) throw new Error(String(r.status)); return r.json(); }),
|
|
476
|
+
fetch('/api/sessions/recent').then(r => r.ok ? r.json() : []).catch(() => []),
|
|
477
|
+
]);
|
|
478
|
+
} catch (e) {
|
|
479
|
+
console.error('Failed to load overview:', e);
|
|
480
|
+
const list = document.getElementById('project-list');
|
|
481
|
+
list.textContent = '';
|
|
482
|
+
const msg = document.createElement('div');
|
|
483
|
+
msg.className = 'no-data';
|
|
484
|
+
msg.textContent = 'Failed to load dashboard data — retrying…';
|
|
485
|
+
list.appendChild(msg);
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
442
488
|
currentProjects = projects;
|
|
443
489
|
renderSessionGrid(sessions);
|
|
444
490
|
document.getElementById('ov-projects').textContent = overview.totalProjects;
|
|
@@ -466,12 +512,15 @@ async function load() {
|
|
|
466
512
|
dot.className = 'srv-dot ' + (p.serverRunning ? 'on' : 'off');
|
|
467
513
|
dot.title = p.serverRunning ? 'MCP server running (port ' + p.entry.monitoringPort + ')' : 'MCP server not running';
|
|
468
514
|
const info = document.createElement('div');
|
|
515
|
+
info.className = 'project-info';
|
|
469
516
|
const name = document.createElement('div');
|
|
470
517
|
name.className = 'project-name';
|
|
471
518
|
name.textContent = p.entry.name;
|
|
519
|
+
name.title = p.entry.name;
|
|
472
520
|
const path = document.createElement('div');
|
|
473
521
|
path.className = 'project-path';
|
|
474
522
|
path.textContent = p.entry.path;
|
|
523
|
+
path.title = p.entry.path;
|
|
475
524
|
info.appendChild(name);
|
|
476
525
|
info.appendChild(path);
|
|
477
526
|
const mkBadge = (text, cls) => { const b = document.createElement('span'); b.className = 'badge' + (cls ? ' ' + cls : ''); b.textContent = text; return b; };
|
|
@@ -479,7 +528,7 @@ async function load() {
|
|
|
479
528
|
openBtn.className = 'open-btn';
|
|
480
529
|
openBtn.title = 'Open project folder in explorer';
|
|
481
530
|
openBtn.textContent = '\\u{1F4C2}';
|
|
482
|
-
openBtn.onclick = (e) => { e.stopPropagation();
|
|
531
|
+
openBtn.onclick = (e) => { e.stopPropagation(); openFolder(p.entry.hash, openBtn); };
|
|
483
532
|
row.appendChild(dot);
|
|
484
533
|
row.appendChild(info);
|
|
485
534
|
row.appendChild(mkBadge(fmt(p.fileCount) + ' files', 'blue'));
|
|
@@ -541,6 +590,7 @@ async function openDetail(hash, name) {
|
|
|
541
590
|
document.getElementById('tab-ov').classList.add('active');
|
|
542
591
|
|
|
543
592
|
const proj = currentProjects.find(p => p.entry.hash === hash);
|
|
593
|
+
if (!proj) { closeModal(); return; }
|
|
544
594
|
const srvEl = document.getElementById('modal-srv');
|
|
545
595
|
srvEl.textContent = proj.serverRunning ? '\u25cf MCP running' : '\u25cb MCP stopped';
|
|
546
596
|
srvEl.className = 'modal-srv ' + (proj.serverRunning ? 'on' : 'off');
|
|
@@ -619,7 +669,7 @@ function renderOv(proj, detail) {
|
|
|
619
669
|
openLink.style.cssText = 'margin-top:8px;background:none;border:1px solid var(--border);border-radius:4px;padding:4px 10px;color:var(--muted);cursor:pointer;font-size:.8rem;transition:border-color .15s,color .15s';
|
|
620
670
|
openLink.onmouseover = () => { openLink.style.borderColor = 'var(--accent)'; openLink.style.color = 'var(--text)'; };
|
|
621
671
|
openLink.onmouseout = () => { openLink.style.borderColor = 'var(--border)'; openLink.style.color = 'var(--muted)'; };
|
|
622
|
-
openLink.onclick = () =>
|
|
672
|
+
openLink.onclick = () => openFolder(proj.entry.hash, openLink);
|
|
623
673
|
infoB.appendChild(openLink);
|
|
624
674
|
panel.appendChild(infoB);
|
|
625
675
|
}
|
|
@@ -649,16 +699,6 @@ function buildTable(cols, rows) {
|
|
|
649
699
|
return tbl;
|
|
650
700
|
}
|
|
651
701
|
|
|
652
|
-
function makeSearchPanel(tabId, placeholder, allItems, renderFn) {
|
|
653
|
-
const panel = document.getElementById(tabId);
|
|
654
|
-
panel.textContent = '';
|
|
655
|
-
const inp = el('input', 'search-input');
|
|
656
|
-
inp.placeholder = placeholder;
|
|
657
|
-
inp.oninput = () => renderFn(inp.value, panel.querySelector('tbody'));
|
|
658
|
-
panel.appendChild(inp);
|
|
659
|
-
return panel;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
702
|
function renderFiles(files) {
|
|
663
703
|
window._files = files;
|
|
664
704
|
const panel = document.getElementById('tab-files');
|
package/dist/gui/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/gui/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/gui/server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,16 +7,19 @@ import { FileWatcher } from './indexer/watcher.js';
|
|
|
7
7
|
import { startMonitoringServer } from './monitoring/server.js';
|
|
8
8
|
import { TokenLogger } from './monitoring/token-logger.js';
|
|
9
9
|
import { createMcpServer } from './server.js';
|
|
10
|
-
import { createSession
|
|
11
|
-
import { getProjectIndexPath } from './cli/project-detector.js';
|
|
10
|
+
import { createSession } from './db/queries.js';
|
|
11
|
+
import { getProjectIndexPath, GlobalRegistry } from './cli/project-detector.js';
|
|
12
|
+
import { assignName } from './federation/registry-name.js';
|
|
13
|
+
import { resolveServerConfig } from './server-config.js';
|
|
12
14
|
import { SessionObserver } from './memory/observer.js';
|
|
15
|
+
import { applyObservationRetention } from './memory/retention.js';
|
|
13
16
|
import { v4 as uuidv4 } from 'uuid';
|
|
14
17
|
// ─── Configuration (from environment variables) ───────────────────────────────
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
// PROJECT_ROOT, INDEX_PATH, MONITORING_PORT, LANGUAGES and FEDERATION_REPOS are
|
|
19
|
+
// resolved at startup by resolveServerConfig() (explicit env wins, otherwise
|
|
20
|
+
// derived from the project root + self-registered), so the server also works as
|
|
21
|
+
// a zero-config plugin. The remaining knobs are plain env reads.
|
|
18
22
|
const AUTO_REINDEX = process.env.AUTO_REINDEX !== 'false';
|
|
19
|
-
const MONITORING_PORT = parseInt(process.env.MONITORING_PORT ?? '7842', 10);
|
|
20
23
|
const MONITORING_AUTO_OPEN = process.env.MONITORING_AUTO_OPEN === 'true';
|
|
21
24
|
const BASELINE_MODE = process.env.BASELINE_MODE === 'true';
|
|
22
25
|
const GENERATE_SUMMARIES = process.env.GENERATE_SUMMARIES === 'true';
|
|
@@ -26,21 +29,40 @@ const OBSERVATION_RETENTION = process.env.OBSERVATION_RETENTION ?? 'permanent';
|
|
|
26
29
|
const SUMMARIZER_API_KEY = process.env.SUMMARIZER_API_KEY ?? '';
|
|
27
30
|
const SUMMARIZER_BASE_URL = process.env.SUMMARIZER_BASE_URL ?? 'https://api.openai.com/v1';
|
|
28
31
|
const SUMMARIZER_MODEL = process.env.SUMMARIZER_MODEL ?? 'gpt-4o-mini';
|
|
29
|
-
// Federated repos: colon- or comma-separated absolute paths
|
|
30
|
-
const FEDERATION_REPOS = (process.env.FEDERATION_REPOS ?? '')
|
|
31
|
-
.split(/[:,,]/)
|
|
32
|
-
.map((p) => p.trim())
|
|
33
|
-
.filter(Boolean);
|
|
34
32
|
async function main() {
|
|
33
|
+
// Resolve config: explicit env wins, otherwise derive from the project root
|
|
34
|
+
// and self-register in the global registry (see server-config.ts).
|
|
35
|
+
const cfg = await resolveServerConfig(process.env, process.cwd());
|
|
36
|
+
const INDEX_PATH = cfg.indexPath;
|
|
37
|
+
const PROJECT_ROOT = cfg.projectRoot;
|
|
38
|
+
const LANGUAGES = cfg.languages;
|
|
39
|
+
const MONITORING_PORT = cfg.monitoringPort;
|
|
40
|
+
const FEDERATION_REPOS = cfg.federationRepos;
|
|
41
|
+
process.stderr.write(`[pindex] project=${PROJECT_ROOT} languages=${LANGUAGES.join(',')} port=${MONITORING_PORT} index=${INDEX_PATH}\n`);
|
|
35
42
|
// 1. Open / create the SQLite database
|
|
36
43
|
const db = openDatabase(INDEX_PATH);
|
|
37
44
|
runMigrations(db);
|
|
38
|
-
// 1b. Open federated repo databases (read-only)
|
|
45
|
+
// 1b. Open federated repo databases (read-only), resolving names from GlobalRegistry
|
|
46
|
+
const registry = new GlobalRegistry();
|
|
47
|
+
const allEntries = registry.list();
|
|
48
|
+
const usedNames = new Set();
|
|
49
|
+
// Resolve the primary (local) name first so collisions in federated
|
|
50
|
+
// names don't accidentally shadow it.
|
|
51
|
+
const primaryEntry = allEntries.find((e) => e.path === PROJECT_ROOT);
|
|
52
|
+
const primaryName = primaryEntry?.name ?? assignName(PROJECT_ROOT, usedNames);
|
|
53
|
+
usedNames.add(primaryName);
|
|
39
54
|
const federatedDbs = FEDERATION_REPOS.map((repoPath) => {
|
|
40
55
|
const dbPath = getProjectIndexPath(repoPath);
|
|
41
56
|
try {
|
|
42
57
|
const fedDb = openDatabase(dbPath);
|
|
43
|
-
|
|
58
|
+
const entry = allEntries.find((e) => e.path === repoPath);
|
|
59
|
+
let name = entry?.name;
|
|
60
|
+
if (!name) {
|
|
61
|
+
name = assignName(repoPath, usedNames);
|
|
62
|
+
process.stderr.write(`[pindex] federated repo '${repoPath}' has no persisted name; using auto-generated '${name}'. Run 'pindex federate add ${repoPath}' to persist.\n`);
|
|
63
|
+
}
|
|
64
|
+
usedNames.add(name);
|
|
65
|
+
return { name, path: repoPath, db: fedDb };
|
|
44
66
|
}
|
|
45
67
|
catch {
|
|
46
68
|
process.stderr.write(`[pindex] Warning: could not open federated DB for ${repoPath}\n`);
|
|
@@ -96,6 +118,7 @@ async function main() {
|
|
|
96
118
|
federatedDbs,
|
|
97
119
|
sessionId,
|
|
98
120
|
observer,
|
|
121
|
+
primaryName,
|
|
99
122
|
});
|
|
100
123
|
const transport = new StdioServerTransport();
|
|
101
124
|
await server.connect(transport);
|
|
@@ -136,25 +159,4 @@ main().catch((err) => {
|
|
|
136
159
|
process.stderr.write(`[pindex] Fatal error: ${String(err)}\n`);
|
|
137
160
|
process.exit(1);
|
|
138
161
|
});
|
|
139
|
-
/**
|
|
140
|
-
* Applies the OBSERVATION_RETENTION policy on startup.
|
|
141
|
-
* Supported values: 'permanent' (default), 'session', or '<N>d' (e.g. '30d').
|
|
142
|
-
*/
|
|
143
|
-
function applyObservationRetention(db, currentSessionId, policy) {
|
|
144
|
-
if (policy === 'permanent')
|
|
145
|
-
return;
|
|
146
|
-
if (policy === 'session') {
|
|
147
|
-
deleteObservationsExceptSession(db, currentSessionId);
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
const match = /^(\d+)d$/.exec(policy);
|
|
151
|
-
if (match) {
|
|
152
|
-
const days = parseInt(match[1], 10);
|
|
153
|
-
const cutoff = new Date();
|
|
154
|
-
cutoff.setDate(cutoff.getDate() - days);
|
|
155
|
-
deleteObservationsOlderThan(db, cutoff.toISOString());
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
process.stderr.write(`[pindex] Unknown OBSERVATION_RETENTION value: "${policy}" — defaulting to permanent\n`);
|
|
159
|
-
}
|
|
160
162
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects which supported code languages actually have files in the project.
|
|
3
|
+
* Used to auto-configure LANGUAGES when the env var is not set — so a Python or
|
|
4
|
+
* Go project is indexed correctly instead of silently defaulting to TS/JS.
|
|
5
|
+
* Reuses the indexer's ignore patterns so build/vendor dirs don't skew the
|
|
6
|
+
* result. Falls back to the TS/JS default when nothing is found or the scan
|
|
7
|
+
* fails.
|
|
8
|
+
*/
|
|
9
|
+
export declare function detectProjectLanguages(projectRoot: string): Promise<string[]>;
|
|
10
|
+
//# sourceMappingURL=detect-languages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-languages.d.ts","sourceRoot":"","sources":["../../src/indexer/detect-languages.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { glob } from 'glob';
|
|
2
|
+
import { LANGUAGE_PATTERNS, DEFAULT_IGNORE, DEFAULT_LANGUAGES } from './index.js';
|
|
3
|
+
// Reverse map: file extension -> language key, derived from LANGUAGE_PATTERNS so
|
|
4
|
+
// the two stay in sync (e.g. .tsx -> typescript, .jsx -> javascript).
|
|
5
|
+
const EXT_TO_LANG = {};
|
|
6
|
+
for (const [lang, patterns] of Object.entries(LANGUAGE_PATTERNS)) {
|
|
7
|
+
for (const p of patterns) {
|
|
8
|
+
EXT_TO_LANG[p.slice(p.lastIndexOf('.'))] = lang;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Detects which supported code languages actually have files in the project.
|
|
13
|
+
* Used to auto-configure LANGUAGES when the env var is not set — so a Python or
|
|
14
|
+
* Go project is indexed correctly instead of silently defaulting to TS/JS.
|
|
15
|
+
* Reuses the indexer's ignore patterns so build/vendor dirs don't skew the
|
|
16
|
+
* result. Falls back to the TS/JS default when nothing is found or the scan
|
|
17
|
+
* fails.
|
|
18
|
+
*/
|
|
19
|
+
export async function detectProjectLanguages(projectRoot) {
|
|
20
|
+
const patterns = [...new Set(Object.values(LANGUAGE_PATTERNS).flat())];
|
|
21
|
+
let files;
|
|
22
|
+
try {
|
|
23
|
+
files = await glob(patterns, { cwd: projectRoot, ignore: DEFAULT_IGNORE, absolute: false });
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return [...DEFAULT_LANGUAGES];
|
|
27
|
+
}
|
|
28
|
+
const langs = new Set();
|
|
29
|
+
for (const f of files) {
|
|
30
|
+
const lang = EXT_TO_LANG[f.slice(f.lastIndexOf('.'))];
|
|
31
|
+
if (lang)
|
|
32
|
+
langs.add(lang);
|
|
33
|
+
}
|
|
34
|
+
return langs.size > 0 ? [...langs].sort() : [...DEFAULT_LANGUAGES];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=detect-languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-languages.js","sourceRoot":"","sources":["../../src/indexer/detect-languages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,iFAAiF;AACjF,sEAAsE;AACtE,MAAM,WAAW,GAA2B,EAAE,CAAC;AAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACjE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,WAAmB;IAC9D,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/indexer/index.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ import type Database from 'better-sqlite3';
|
|
|
2
2
|
import type { IndexResult, ParsedImport } from '../types.js';
|
|
3
3
|
import { type AstDiffResult } from '../memory/ast-diff.js';
|
|
4
4
|
import { type SummarizerOptions } from './summarizer.js';
|
|
5
|
+
export declare const DEFAULT_IGNORE: string[];
|
|
5
6
|
/** Glob patterns per language name (as used in EXTENSION_MAP). */
|
|
6
7
|
export declare const LANGUAGE_PATTERNS: Record<string, string[]>;
|
|
8
|
+
export declare const DEFAULT_LANGUAGES: string[];
|
|
7
9
|
export interface IndexerOptions {
|
|
8
10
|
db: Database.Database;
|
|
9
11
|
projectRoot: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAc,YAAY,EAAE,MAAM,aAAa,CAAC;AAczE,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAc,YAAY,EAAE,MAAM,aAAa,CAAC;AAczE,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMrE,eAAO,MAAM,cAAc,UAmB1B,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAatD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAA+B,CAAC;AAwB9D,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;sDACkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wFAAwF;IACxF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qFAAqF;IACrF,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;IAC5C,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,GAAG,CAAgC;gBAE/B,OAAO,EAAE,cAAc;IAenC,qFAAqF;IAC/E,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwEnE,6EAA6E;IACvE,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IA8C9E;oFACgF;YAClE,iBAAiB;IAmF/B,sFAAsF;IAChF,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;IAoElF;;+EAE2E;IACrE,mBAAmB,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CpF;mEAC+D;IACzD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAUhC,uEAAuE;IACvE,OAAO,CAAC,iBAAiB;CAqB1B"}
|
package/dist/indexer/index.js
CHANGED
|
@@ -7,8 +7,9 @@ import { upsertFile, upsertSymbol, upsertDependency, deleteSymbolsByFileId, dele
|
|
|
7
7
|
import { computeAstDiff } from '../memory/ast-diff.js';
|
|
8
8
|
import { Summarizer } from './summarizer.js';
|
|
9
9
|
import { LspPythonClient } from './lsp-python.js';
|
|
10
|
+
import { resolveWithinRoot } from '../util/paths.js';
|
|
10
11
|
// ─── Default Configuration ────────────────────────────────────────────────────
|
|
11
|
-
const DEFAULT_IGNORE = [
|
|
12
|
+
export const DEFAULT_IGNORE = [
|
|
12
13
|
'**/node_modules/**',
|
|
13
14
|
'**/.git/**',
|
|
14
15
|
'**/dist/**',
|
|
@@ -43,7 +44,7 @@ export const LANGUAGE_PATTERNS = {
|
|
|
43
44
|
go: ['**/*.go'],
|
|
44
45
|
rust: ['**/*.rs'],
|
|
45
46
|
};
|
|
46
|
-
const DEFAULT_LANGUAGES = ['typescript', 'javascript'];
|
|
47
|
+
export const DEFAULT_LANGUAGES = ['typescript', 'javascript'];
|
|
47
48
|
/** Maximum file size to index (1 MB). Larger files are skipped to prevent OOM. */
|
|
48
49
|
const MAX_FILE_SIZE = 1024 * 1024;
|
|
49
50
|
/** Builds the set of glob patterns for the given language list. */
|
|
@@ -97,10 +98,15 @@ export class Indexer {
|
|
|
97
98
|
glob(this.documentPatterns, { cwd: this.projectRoot, ignore: this.ignorePatterns, absolute: false }),
|
|
98
99
|
]);
|
|
99
100
|
const allCodePaths = [...codePaths, ...(options.additionalPaths ?? [])];
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
// Guard against path traversal: additionalPaths are caller-supplied and could
|
|
102
|
+
// contain '..' segments or absolute paths that escape the project root. glob
|
|
103
|
+
// results are already root-relative, but resolveWithinRoot is cheap insurance.
|
|
104
|
+
const jobs = allCodePaths
|
|
105
|
+
.map((rel) => ({
|
|
106
|
+
absolutePath: resolveWithinRoot(this.projectRoot, rel),
|
|
102
107
|
relativePath: rel,
|
|
103
|
-
}))
|
|
108
|
+
}))
|
|
109
|
+
.filter((j) => j.absolutePath !== null);
|
|
104
110
|
const importsCache = new Map();
|
|
105
111
|
const effectiveWorkers = ParsePool.pickEffectiveWorkerCount(jobs.length, this.configuredMaxWorkers);
|
|
106
112
|
// Close any pool from a prior indexAll call and size a new one for this batch.
|
|
@@ -143,7 +149,10 @@ export class Indexer {
|
|
|
143
149
|
}
|
|
144
150
|
/** Indexes (or re-indexes) a single file given its project-relative path. */
|
|
145
151
|
async indexFile(relativePath, force = false) {
|
|
146
|
-
const absolutePath =
|
|
152
|
+
const absolutePath = resolveWithinRoot(this.projectRoot, relativePath);
|
|
153
|
+
if (!absolutePath) {
|
|
154
|
+
return { status: 'error', errors: ['Path escapes project root'] };
|
|
155
|
+
}
|
|
147
156
|
if (!existsSync(absolutePath)) {
|
|
148
157
|
return { status: 'error', errors: [`File not found: ${relativePath}`] };
|
|
149
158
|
}
|
|
@@ -257,7 +266,10 @@ export class Indexer {
|
|
|
257
266
|
}
|
|
258
267
|
/** Indexes (or re-indexes) a single document file given its project-relative path. */
|
|
259
268
|
async indexDocument(relativePath, force = false) {
|
|
260
|
-
const absolutePath =
|
|
269
|
+
const absolutePath = resolveWithinRoot(this.projectRoot, relativePath);
|
|
270
|
+
if (!absolutePath) {
|
|
271
|
+
return { status: 'error', errors: ['Path escapes project root'] };
|
|
272
|
+
}
|
|
261
273
|
if (!existsSync(absolutePath)) {
|
|
262
274
|
return { status: 'error', errors: [`File not found: ${relativePath}`] };
|
|
263
275
|
}
|
|
@@ -328,8 +340,8 @@ export class Indexer {
|
|
|
328
340
|
imports = cache.get(file.path);
|
|
329
341
|
}
|
|
330
342
|
else {
|
|
331
|
-
const absolutePath =
|
|
332
|
-
if (!existsSync(absolutePath))
|
|
343
|
+
const absolutePath = resolveWithinRoot(this.projectRoot, file.path);
|
|
344
|
+
if (!absolutePath || !existsSync(absolutePath))
|
|
333
345
|
continue;
|
|
334
346
|
try {
|
|
335
347
|
const content = readFileSync(absolutePath, 'utf-8');
|