pindex 1.2.3 → 1.3.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 (63) hide show
  1. package/README.md +11 -5
  2. package/dist/db/migrations.d.ts +4 -1
  3. package/dist/db/migrations.d.ts.map +1 -1
  4. package/dist/db/migrations.js +9 -3
  5. package/dist/db/migrations.js.map +1 -1
  6. package/dist/db/queries.d.ts.map +1 -1
  7. package/dist/db/queries.js +21 -17
  8. package/dist/db/queries.js.map +1 -1
  9. package/dist/gui/server.d.ts.map +1 -1
  10. package/dist/gui/server.js +14 -5
  11. package/dist/gui/server.js.map +1 -1
  12. package/dist/index.js +14 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/indexer/index.d.ts +20 -3
  15. package/dist/indexer/index.d.ts.map +1 -1
  16. package/dist/indexer/index.js +121 -62
  17. package/dist/indexer/index.js.map +1 -1
  18. package/dist/indexer/parse-pool.d.ts +26 -0
  19. package/dist/indexer/parse-pool.d.ts.map +1 -0
  20. package/dist/indexer/parse-pool.js +201 -0
  21. package/dist/indexer/parse-pool.js.map +1 -0
  22. package/dist/indexer/parse-types.d.ts +33 -0
  23. package/dist/indexer/parse-types.d.ts.map +1 -0
  24. package/dist/indexer/parse-types.js +2 -0
  25. package/dist/indexer/parse-types.js.map +1 -0
  26. package/dist/indexer/parse-worker.d.ts +2 -0
  27. package/dist/indexer/parse-worker.d.ts.map +1 -0
  28. package/dist/indexer/parse-worker.js +39 -0
  29. package/dist/indexer/parse-worker.js.map +1 -0
  30. package/dist/indexer/parser.d.ts.map +1 -1
  31. package/dist/indexer/parser.js +10 -4
  32. package/dist/indexer/parser.js.map +1 -1
  33. package/dist/indexer/summarizer.d.ts +18 -7
  34. package/dist/indexer/summarizer.d.ts.map +1 -1
  35. package/dist/indexer/summarizer.js +110 -13
  36. package/dist/indexer/summarizer.js.map +1 -1
  37. package/dist/indexer/watcher.d.ts.map +1 -1
  38. package/dist/indexer/watcher.js +2 -0
  39. package/dist/indexer/watcher.js.map +1 -1
  40. package/dist/memory/observer.d.ts.map +1 -1
  41. package/dist/memory/observer.js +20 -4
  42. package/dist/memory/observer.js.map +1 -1
  43. package/dist/monitoring/server.d.ts.map +1 -1
  44. package/dist/monitoring/server.js +5 -1
  45. package/dist/monitoring/server.js.map +1 -1
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +32 -16
  48. package/dist/server.js.map +1 -1
  49. package/dist/tools/get_context.d.ts.map +1 -1
  50. package/dist/tools/get_context.js +4 -2
  51. package/dist/tools/get_context.js.map +1 -1
  52. package/dist/tools/schemas.d.ts +75 -0
  53. package/dist/tools/schemas.d.ts.map +1 -0
  54. package/dist/tools/schemas.js +79 -0
  55. package/dist/tools/schemas.js.map +1 -0
  56. package/dist/tools/search_symbols.d.ts.map +1 -1
  57. package/dist/tools/search_symbols.js +8 -6
  58. package/dist/tools/search_symbols.js.map +1 -1
  59. package/dist/util/paths.d.ts +9 -0
  60. package/dist/util/paths.d.ts.map +1 -0
  61. package/dist/util/paths.js +18 -0
  62. package/dist/util/paths.js.map +1 -0
  63. package/package.json +10 -7
@@ -1,9 +1,11 @@
1
1
  import { readFileSync, existsSync, statSync } from 'node:fs';
2
2
  import { join, resolve, dirname } from 'node:path';
3
3
  import { glob } from 'glob';
4
+ import { ParsePool } from './parse-pool.js';
4
5
  import { parseFile, parseDocument, hashContent } from './parser.js';
5
6
  import { upsertFile, upsertSymbol, upsertDependency, deleteSymbolsByFileId, deleteDependenciesByFile, getFileByPath, insertDocumentChunk, deleteDocumentChunksByFileId, } from '../db/queries.js';
6
7
  import { computeAstDiff } from '../memory/ast-diff.js';
8
+ import { Summarizer } from './summarizer.js';
7
9
  // ─── Default Configuration ────────────────────────────────────────────────────
8
10
  const DEFAULT_IGNORE = [
9
11
  '**/node_modules/**',
@@ -65,43 +67,60 @@ export class Indexer {
65
67
  languages;
66
68
  ignorePatterns;
67
69
  generateSummaries;
70
+ summarizer;
68
71
  documentPatterns;
72
+ pool = null;
73
+ configuredMaxWorkers;
74
+ lastImportsCache = null;
69
75
  constructor(options) {
70
76
  this.db = options.db;
71
77
  this.projectRoot = resolve(options.projectRoot);
72
78
  this.languages = options.languages ?? DEFAULT_LANGUAGES;
73
79
  this.ignorePatterns = options.ignorePatterns ?? DEFAULT_IGNORE;
74
80
  this.generateSummaries = options.generateSummaries ?? false;
81
+ this.summarizer = new Summarizer(options.summarizerOptions ?? { enabled: false });
75
82
  this.documentPatterns = options.documentPatterns ?? DEFAULT_DOCUMENT_PATTERNS;
83
+ this.configuredMaxWorkers = ParsePool.pickDefaultWorkerCount(options.maxParseWorkers);
76
84
  }
77
85
  /** Discovers and indexes all source files and document files in the project root. */
78
86
  async indexAll(options = {}) {
79
87
  const result = { indexed: 0, updated: 0, skipped: 0, errors: [] };
80
88
  const codePatterns = buildCodePatterns(this.languages);
81
89
  const [codePaths, docPaths] = await Promise.all([
82
- glob(codePatterns, {
83
- cwd: this.projectRoot,
84
- ignore: this.ignorePatterns,
85
- absolute: false,
86
- }),
87
- glob(this.documentPatterns, {
88
- cwd: this.projectRoot,
89
- ignore: this.ignorePatterns,
90
- absolute: false,
91
- }),
90
+ glob(codePatterns, { cwd: this.projectRoot, ignore: this.ignorePatterns, absolute: false }),
91
+ glob(this.documentPatterns, { cwd: this.projectRoot, ignore: this.ignorePatterns, absolute: false }),
92
92
  ]);
93
- // Include any additional paths requested
94
93
  const allCodePaths = [...codePaths, ...(options.additionalPaths ?? [])];
95
- for (const relativePath of allCodePaths) {
96
- const fileResult = await this.indexFile(relativePath, options.force);
97
- if (fileResult.status === 'indexed')
94
+ const jobs = allCodePaths.map((rel) => ({
95
+ absolutePath: join(this.projectRoot, rel),
96
+ relativePath: rel,
97
+ }));
98
+ const importsCache = new Map();
99
+ const effectiveWorkers = ParsePool.pickEffectiveWorkerCount(jobs.length, this.configuredMaxWorkers);
100
+ // Close any pool from a prior indexAll call and size a new one for this batch.
101
+ if (this.pool)
102
+ await this.pool.close();
103
+ this.pool = new ParsePool({ maxWorkers: effectiveWorkers });
104
+ for await (const parseResult of this.pool.parseMany(jobs)) {
105
+ if (parseResult.status === 'skipped') {
106
+ result.skipped++;
107
+ continue;
108
+ }
109
+ if (parseResult.status === 'error') {
110
+ result.errors.push(parseResult.error);
111
+ continue;
112
+ }
113
+ const fileRes = await this.processParsedFile(parseResult.relativePath, parseResult.parsed, parseResult.content, parseResult.hash, options.force ?? false);
114
+ if (fileRes.status === 'indexed')
98
115
  result.indexed++;
99
- else if (fileResult.status === 'updated')
116
+ else if (fileRes.status === 'updated')
100
117
  result.updated++;
101
- else if (fileResult.status === 'skipped')
118
+ else if (fileRes.status === 'skipped')
102
119
  result.skipped++;
103
- result.errors.push(...fileResult.errors);
120
+ result.errors.push(...fileRes.errors);
121
+ importsCache.set(parseResult.relativePath, parseResult.parsed.imports);
104
122
  }
123
+ // Documents stay sequential; they are few and cheap.
105
124
  for (const relativePath of docPaths) {
106
125
  const fileResult = await this.indexDocument(relativePath, options.force);
107
126
  if (fileResult.status === 'indexed')
@@ -112,18 +131,16 @@ export class Indexer {
112
131
  result.skipped++;
113
132
  result.errors.push(...fileResult.errors);
114
133
  }
134
+ // Stash the cache for resolveDependencies (Task 7 will consume it).
135
+ this.lastImportsCache = importsCache;
115
136
  return result;
116
137
  }
117
138
  /** Indexes (or re-indexes) a single file given its project-relative path. */
118
139
  async indexFile(relativePath, force = false) {
119
140
  const absolutePath = join(this.projectRoot, relativePath);
120
141
  if (!existsSync(absolutePath)) {
121
- return {
122
- status: 'error',
123
- errors: [`File not found: ${relativePath}`],
124
- };
142
+ return { status: 'error', errors: [`File not found: ${relativePath}`] };
125
143
  }
126
- // Skip files larger than MAX_FILE_SIZE to prevent OOM
127
144
  try {
128
145
  const stat = statSync(absolutePath);
129
146
  if (stat.size > MAX_FILE_SIZE) {
@@ -136,34 +153,59 @@ export class Indexer {
136
153
  content = readFileSync(absolutePath, 'utf-8');
137
154
  }
138
155
  catch (err) {
139
- return {
140
- status: 'error',
141
- errors: [`Failed to read ${relativePath}: ${String(err)}`],
142
- };
156
+ return { status: 'error', errors: [`Failed to read ${relativePath}: ${String(err)}`] };
143
157
  }
144
158
  const hash = hashContent(content);
145
- // Check if file has changed (skip if unchanged) single DB lookup
159
+ // Fast path: skip re-parsing unchanged files. The watcher hot path
160
+ // relies on this short-circuit; ParsePool-backed indexAll bypasses
161
+ // indexFile so it does not pay this extra lookup.
162
+ if (!force) {
163
+ const existing = getFileByPath(this.db, relativePath);
164
+ if (existing && existing.hash === hash) {
165
+ return { status: 'skipped', errors: [] };
166
+ }
167
+ }
168
+ let parsed;
169
+ try {
170
+ parsed = parseFile(absolutePath, content);
171
+ }
172
+ catch (err) {
173
+ return { status: 'error', errors: [`Failed to parse ${relativePath}: ${String(err)}`] };
174
+ }
175
+ return this.processParsedFile(relativePath, parsed, content, hash, force);
176
+ }
177
+ /** Everything that happens after a file has been read, parsed, and hashed.
178
+ * Runs entirely on the main thread: summarizer → AST diff → DB transaction. */
179
+ async processParsedFile(relativePath, parsed, content, hash, force) {
146
180
  const existing = getFileByPath(this.db, relativePath);
147
181
  if (!force && existing && existing.hash === hash) {
148
182
  return { status: 'skipped', errors: [] };
149
183
  }
150
184
  const isUpdate = existing !== null;
185
+ let fileSummary = null;
186
+ const symbolSummaries = new Map();
187
+ if (this.generateSummaries) {
188
+ fileSummary = await this.summarizer.summarizeFile(relativePath, content);
189
+ const symbolEntries = parsed.symbols.map(async (sym) => {
190
+ const snippet = content.split('\n').slice(sym.startLine - 1, sym.endLine).join('\n');
191
+ const summary = await this.summarizer.summarizeSymbol(sym.signature, snippet);
192
+ return [sym.name, summary];
193
+ });
194
+ for (const [name, summary] of await Promise.all(symbolEntries)) {
195
+ symbolSummaries.set(name, summary);
196
+ }
197
+ }
151
198
  try {
152
- const parsed = parseFile(absolutePath, content);
153
- // Wrap all DB mutations in a single transaction for atomicity + performance
154
199
  const runInTransaction = this.db.transaction(() => {
155
200
  upsertFile(this.db, {
156
201
  path: relativePath,
157
202
  language: parsed.language,
158
203
  hash,
159
204
  rawTokenEstimate: parsed.rawTokenEstimate,
160
- summary: null,
205
+ summary: fileSummary,
161
206
  });
162
- // Re-fetch after upsert to get the ID (needed for FK references)
163
207
  const fileRecord = getFileByPath(this.db, relativePath);
164
- // Compute AST diff before replacing symbols (snapshots updated inside)
165
208
  const diff = computeAstDiff(this.db, relativePath, parsed.symbols);
166
- // Replace symbols for this file
167
209
  deleteSymbolsByFileId(this.db, fileRecord.id);
168
210
  for (const sym of parsed.symbols) {
169
211
  upsertSymbol(this.db, {
@@ -171,7 +213,7 @@ export class Indexer {
171
213
  name: sym.name,
172
214
  kind: sym.kind,
173
215
  signature: sym.signature,
174
- summary: null,
216
+ summary: symbolSummaries.get(sym.name) ?? null,
175
217
  startLine: sym.startLine,
176
218
  endLine: sym.endLine,
177
219
  isExported: sym.isExported,
@@ -179,7 +221,6 @@ export class Indexer {
179
221
  hasTryCatch: sym.hasTryCatch,
180
222
  });
181
223
  }
182
- // Update dependencies
183
224
  deleteDependenciesByFile(this.db, fileRecord.id);
184
225
  return diff;
185
226
  });
@@ -251,43 +292,61 @@ export class Indexer {
251
292
  return { status: 'error', errors: [`Failed to index document ${relativePath}: ${String(err)}`] };
252
293
  }
253
294
  }
254
- /** Second-pass: resolves import strings to file IDs and stores dependencies. */
255
- async resolveDependencies() {
256
- // Re-parse all files to extract imports, then match to known file paths
295
+ /** Resolves import strings to file IDs and stores dependencies.
296
+ * Fast path: pass an importsCache built during indexAll() to skip re-reading
297
+ * and re-parsing every file. Slow path (no cache) re-parses as before. */
298
+ async resolveDependencies(importsCache) {
299
+ const cache = importsCache ?? this.lastImportsCache ?? undefined;
257
300
  const { getAllFiles } = await import('../db/queries.js');
258
301
  const allFiles = getAllFiles(this.db);
259
302
  const pathIndex = new Map(allFiles.map((f) => [f.path, f.id]));
260
303
  const knownPaths = new Set(pathIndex.keys());
261
304
  for (const file of allFiles) {
262
- const absolutePath = join(this.projectRoot, file.path);
263
- if (!existsSync(absolutePath))
264
- continue;
265
- try {
266
- const content = readFileSync(absolutePath, 'utf-8');
267
- const parsed = parseFile(absolutePath, content);
268
- deleteDependenciesByFile(this.db, file.id);
269
- for (const imp of parsed.imports) {
270
- // Resolve relative imports to known project files
271
- const resolvedPath = this.resolveImportPath(file.path, imp.source, knownPaths);
272
- if (!resolvedPath)
273
- continue;
274
- const toFileId = pathIndex.get(resolvedPath);
275
- if (!toFileId)
276
- continue;
277
- for (const sym of imp.symbols.length > 0 ? imp.symbols : [null]) {
278
- upsertDependency(this.db, {
279
- fromFile: file.id,
280
- toFile: toFileId,
281
- symbolName: sym,
282
- });
283
- }
305
+ let imports;
306
+ if (cache && cache.has(file.path)) {
307
+ imports = cache.get(file.path);
308
+ }
309
+ else {
310
+ const absolutePath = join(this.projectRoot, file.path);
311
+ if (!existsSync(absolutePath))
312
+ continue;
313
+ try {
314
+ const content = readFileSync(absolutePath, 'utf-8');
315
+ imports = parseFile(absolutePath, content).imports;
316
+ }
317
+ catch (err) {
318
+ process.stderr.write(`[pindex] resolveDependencies: re-parse failed for ${file.path}: ${String(err)}\n`);
319
+ continue;
284
320
  }
285
321
  }
286
- catch {
287
- // Silently skip files that fail dependency resolution
322
+ if (!imports)
323
+ continue;
324
+ deleteDependenciesByFile(this.db, file.id);
325
+ for (const imp of imports) {
326
+ const resolvedPath = this.resolveImportPath(file.path, imp.source, knownPaths);
327
+ if (!resolvedPath)
328
+ continue;
329
+ const toFileId = pathIndex.get(resolvedPath);
330
+ if (!toFileId)
331
+ continue;
332
+ for (const sym of imp.symbols.length > 0 ? imp.symbols : [null]) {
333
+ upsertDependency(this.db, {
334
+ fromFile: file.id,
335
+ toFile: toFileId,
336
+ symbolName: sym,
337
+ });
338
+ }
288
339
  }
289
340
  }
290
341
  }
342
+ /** Terminates any worker threads owned by the parse pool. Safe to call
343
+ * multiple times; no-op when no pool was ever constructed. */
344
+ async closePool() {
345
+ if (!this.pool)
346
+ return;
347
+ await this.pool.close();
348
+ this.pool = null;
349
+ }
291
350
  /** Resolves a relative import path to a project-relative file path. */
292
351
  resolveImportPath(fromFile, importSource, knownPaths) {
293
352
  if (!importSource.startsWith('.'))
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAY,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EAExB,aAAa,EACb,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAE3E,iFAAiF;AAEjF,MAAM,cAAc,GAAG;IACrB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,WAAW;IACX,gCAAgC;IAChC,cAAc;IACd,eAAe;IACf,WAAW;IACX,SAAS;IACT,mBAAmB;IACnB,UAAU;IACV,aAAa;IACb,YAAY;IACZ,WAAW;IACX,cAAc;CACf,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,UAAU,EAAG,CAAC,SAAS,EAAE,UAAU,CAAC;IACpC,UAAU,EAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5D,IAAI,EAAS,CAAC,WAAW,CAAC;IAC1B,MAAM,EAAO,CAAC,SAAS,EAAE,UAAU,CAAC;IACpC,MAAM,EAAO,CAAC,SAAS,CAAC;IACxB,GAAG,EAAU,CAAC,UAAU,CAAC;IACzB,MAAM,EAAO,CAAC,aAAa,CAAC;IAC5B,GAAG,EAAU,CAAC,UAAU,CAAC;IACzB,IAAI,EAAS,CAAC,SAAS,CAAC;IACxB,MAAM,EAAO,CAAC,SAAS,CAAC;IACxB,EAAE,EAAW,CAAC,SAAS,CAAC;IACxB,IAAI,EAAS,CAAC,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAEvD,kFAAkF;AAClF,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAElC,mEAAmE;AACnE,SAAS,iBAAiB,CAAC,SAAmB;IAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,yBAAyB,GAAG;IAChC,SAAS;IACT,eAAe;IACf,WAAW;IACX,UAAU;IACV,UAAU;CACX,CAAC;AAyBF,MAAM,OAAO,OAAO;IACD,EAAE,CAAoB;IAC9B,WAAW,CAAS;IACZ,SAAS,CAAW;IACpB,cAAc,CAAW;IACzB,iBAAiB,CAAU;IAC3B,gBAAgB,CAAW;IAE5C,YAAY,OAAuB;QACjC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,cAAc,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAC5D,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,yBAAyB,CAAC;IAChF,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,QAAQ,CAAC,UAA2B,EAAE;QAC1C,MAAM,MAAM,GAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC/E,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvD,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,IAAI,CAAC,YAAY,EAAE;gBACjB,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,MAAM,EAAE,IAAI,CAAC,cAAc;gBAC3B,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,MAAM,EAAE,IAAI,CAAC,cAAc;gBAC3B,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH,CAAC,CAAC;QAEH,yCAAyC;QACzC,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBACjD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBACtD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,QAAQ,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBACjD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBACtD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,SAAS,CAAC,YAAoB,EAAE,KAAK,GAAG,KAAK;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,CAAC,mBAAmB,YAAY,EAAE,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAE9C,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,CAAC,kBAAkB,YAAY,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;aAC3D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAElC,mEAAmE;QACnE,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAEhD,4EAA4E;YAC5E,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAChD,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;oBAClB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,IAAI;oBACJ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,iEAAiE;gBACjE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAE,CAAC;gBAEzD,uEAAuE;gBACvE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEnE,gCAAgC;gBAChC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE;wBACpB,MAAM,EAAE,UAAU,CAAC,EAAE;wBACrB,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,UAAU,EAAE,GAAG,CAAC,UAAU;wBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAED,sBAAsB;gBACtB,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gBAEjD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;YAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,CAAC,mBAAmB,YAAY,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,KAAK,GAAG,KAAK;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,mBAAmB,YAAY,EAAE,CAAC,EAAE,CAAC;QAC1E,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAE9B,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,kBAAkB,YAAY,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAElC,qCAAqC;QACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAEpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAChD,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;oBAClB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,IAAI;oBACJ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAE,CAAC;gBAEzD,4BAA4B,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gBACrD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE;wBAC3B,MAAM,EAAE,UAAU,CAAC,EAAE;wBACrB,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,4BAA4B,YAAY,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,mBAAmB;QACvB,wEAAwE;QACxE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,SAAS;YAExC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAEhD,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAE3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjC,kDAAkD;oBAClD,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBAC/E,IAAI,CAAC,YAAY;wBAAE,SAAS;oBAE5B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC7C,IAAI,CAAC,QAAQ;wBAAE,SAAS;oBAExB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChE,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE;4BACxB,QAAQ,EAAE,IAAI,CAAC,EAAE;4BACjB,MAAM,EAAE,QAAQ;4BAChB,UAAU,EAAE,GAAG;yBAChB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sDAAsD;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IAC/D,iBAAiB,CAAC,QAAgB,EAAE,YAAoB,EAAE,UAAwB;QACxF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,yBAAyB;QAEzE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACxE,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC3F,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvE,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACrG,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/indexer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ParseJobInput, ParseJobResult, ParsePoolOptions } from './parse-types.js';
2
+ export declare class ParsePool {
3
+ private readonly maxWorkers;
4
+ private readonly maxFileSize;
5
+ private workers;
6
+ private idleWorkers;
7
+ private workerJobs;
8
+ private pending;
9
+ private closed;
10
+ constructor(options: ParsePoolOptions);
11
+ parseMany(jobs: ParseJobInput[]): AsyncGenerator<ParseJobResult>;
12
+ close(): Promise<void>;
13
+ private spawnWorker;
14
+ private enqueue;
15
+ private drainQueue;
16
+ /** Picks a default worker count based on the host CPU count and an env
17
+ * override. Capped to leave at least one CPU for the main thread. Forces
18
+ * 0 (sync fallback) when VITEST is running, so the global tree-sitter
19
+ * mock in tests/setup.ts continues to apply. */
20
+ static pickDefaultWorkerCount(explicit: number | undefined): number;
21
+ /** Picks the effective worker count for a given job batch. Small batches
22
+ * downshift to avoid the worker startup overhead exceeding the gain. */
23
+ static pickEffectiveWorkerCount(jobCount: number, configured: number): number;
24
+ private runJobSync;
25
+ }
26
+ //# sourceMappingURL=parse-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-pool.d.ts","sourceRoot":"","sources":["../../src/indexer/parse-pool.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAgB1B,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,gBAAgB;IAQ9B,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC;IAyCjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B,OAAO,CAAC,WAAW;IAsCnB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,UAAU;IAYlB;;;qDAGiD;IACjD,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAYnE;6EACyE;IACzE,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;YAO/D,UAAU;CAwBzB"}
@@ -0,0 +1,201 @@
1
+ import { readFile, stat } from 'node:fs/promises';
2
+ import { cpus } from 'node:os';
3
+ import { Worker } from 'node:worker_threads';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { dirname, resolve } from 'node:path';
6
+ import { parseFile, hashContent } from './parser.js';
7
+ const DEFAULT_MAX_FILE_SIZE = 1024 * 1024;
8
+ const MAX_RETRIES = 1;
9
+ // Resolve the compiled worker script relative to this module.
10
+ // After `npm run build`, both files live in dist/indexer/.
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+ const WORKER_URL = resolve(__dirname, 'parse-worker.js');
13
+ export class ParsePool {
14
+ maxWorkers;
15
+ maxFileSize;
16
+ workers = [];
17
+ idleWorkers = [];
18
+ workerJobs = new Map();
19
+ pending = [];
20
+ closed = false;
21
+ constructor(options) {
22
+ this.maxWorkers = Math.max(0, options.maxWorkers);
23
+ this.maxFileSize = options.maxFileSize ?? DEFAULT_MAX_FILE_SIZE;
24
+ for (let i = 0; i < this.maxWorkers; i++) {
25
+ this.spawnWorker();
26
+ }
27
+ }
28
+ async *parseMany(jobs) {
29
+ if (this.closed)
30
+ throw new Error('ParsePool is closed');
31
+ if (this.maxWorkers === 0) {
32
+ for (const job of jobs) {
33
+ yield await this.runJobSync(job);
34
+ }
35
+ return;
36
+ }
37
+ // Submit all jobs; drain results in completion order via a shared buffer.
38
+ const buffer = [];
39
+ let notify = null;
40
+ let remaining = jobs.length;
41
+ for (const job of jobs) {
42
+ this.enqueue({
43
+ job,
44
+ attempts: 0,
45
+ resolve: (result) => {
46
+ buffer.push(result);
47
+ remaining--;
48
+ notify?.();
49
+ },
50
+ });
51
+ }
52
+ while (remaining > 0 || buffer.length > 0) {
53
+ if (buffer.length === 0) {
54
+ await new Promise((r) => {
55
+ notify = () => {
56
+ notify = null;
57
+ r();
58
+ };
59
+ });
60
+ continue;
61
+ }
62
+ yield buffer.shift();
63
+ }
64
+ }
65
+ async close() {
66
+ this.closed = true;
67
+ // Drain the pending queue: every waiting job gets a terminal result so the
68
+ // AsyncGenerator in parseMany can exit instead of hanging.
69
+ const cancelResult = (job) => ({
70
+ status: 'error',
71
+ relativePath: job.relativePath,
72
+ error: 'ParsePool closed',
73
+ });
74
+ for (const p of this.pending) {
75
+ p.resolve(cancelResult(p.job));
76
+ }
77
+ this.pending = [];
78
+ // Resolve any in-flight jobs BEFORE terminate, so the generator notifies
79
+ // and wakes before we tear down the workers.
80
+ for (const [, p] of this.workerJobs) {
81
+ p.resolve(cancelResult(p.job));
82
+ }
83
+ this.workerJobs.clear();
84
+ await Promise.all(this.workers.map((w) => w.terminate().then(() => undefined)));
85
+ this.workers = [];
86
+ this.idleWorkers = [];
87
+ }
88
+ // ─── Internal ────────────────────────────────────────────────────────────────
89
+ spawnWorker() {
90
+ const worker = new Worker(WORKER_URL);
91
+ worker.on('message', (msg) => {
92
+ const pending = this.workerJobs.get(worker);
93
+ this.workerJobs.delete(worker);
94
+ this.idleWorkers.push(worker);
95
+ pending?.resolve(msg.result);
96
+ this.drainQueue();
97
+ });
98
+ worker.on('error', (err) => {
99
+ process.stderr.write(`[pindex] ParsePool worker error: ${String(err)}\n`);
100
+ });
101
+ worker.on('exit', (code) => {
102
+ if (code === 0 || this.closed)
103
+ return;
104
+ // Unexpected crash. If a job was in flight, requeue once; then replace.
105
+ const pending = this.workerJobs.get(worker);
106
+ this.workerJobs.delete(worker);
107
+ this.workers = this.workers.filter((w) => w !== worker);
108
+ this.idleWorkers = this.idleWorkers.filter((w) => w !== worker);
109
+ if (pending) {
110
+ if (pending.attempts < MAX_RETRIES) {
111
+ pending.attempts++;
112
+ this.pending.unshift(pending);
113
+ }
114
+ else {
115
+ pending.resolve({
116
+ status: 'error',
117
+ relativePath: pending.job.relativePath,
118
+ error: `Worker exited (code ${code}) after ${pending.attempts + 1} attempts`,
119
+ });
120
+ }
121
+ }
122
+ if (!this.closed)
123
+ this.spawnWorker();
124
+ this.drainQueue();
125
+ });
126
+ this.workers.push(worker);
127
+ this.idleWorkers.push(worker);
128
+ }
129
+ enqueue(pending) {
130
+ this.pending.push(pending);
131
+ this.drainQueue();
132
+ }
133
+ drainQueue() {
134
+ while (this.pending.length > 0 && this.idleWorkers.length > 0) {
135
+ const pending = this.pending.shift();
136
+ const worker = this.idleWorkers.shift();
137
+ this.workerJobs.set(worker, pending);
138
+ worker.postMessage({
139
+ job: pending.job,
140
+ maxFileSize: this.maxFileSize,
141
+ });
142
+ }
143
+ }
144
+ /** Picks a default worker count based on the host CPU count and an env
145
+ * override. Capped to leave at least one CPU for the main thread. Forces
146
+ * 0 (sync fallback) when VITEST is running, so the global tree-sitter
147
+ * mock in tests/setup.ts continues to apply. */
148
+ static pickDefaultWorkerCount(explicit) {
149
+ if (explicit !== undefined)
150
+ return Math.max(0, explicit);
151
+ const fromEnv = process.env.PINDEX_PARSE_WORKERS;
152
+ if (fromEnv !== undefined && fromEnv !== '') {
153
+ const n = parseInt(fromEnv, 10);
154
+ if (!Number.isNaN(n) && n >= 0)
155
+ return n;
156
+ }
157
+ if (process.env.VITEST === 'true')
158
+ return 0;
159
+ const cpuCount = cpus().length;
160
+ return Math.max(1, cpuCount - 1);
161
+ }
162
+ /** Picks the effective worker count for a given job batch. Small batches
163
+ * downshift to avoid the worker startup overhead exceeding the gain. */
164
+ static pickEffectiveWorkerCount(jobCount, configured) {
165
+ if (configured === 0)
166
+ return 0;
167
+ if (jobCount < 10)
168
+ return 0;
169
+ if (jobCount < configured * 2)
170
+ return 1;
171
+ return configured;
172
+ }
173
+ async runJobSync(job) {
174
+ try {
175
+ const st = await stat(job.absolutePath);
176
+ if (st.size > this.maxFileSize) {
177
+ return { status: 'skipped', relativePath: job.relativePath, reason: 'too_large' };
178
+ }
179
+ }
180
+ catch (err) {
181
+ process.stderr.write(`[pindex] ParsePool: stat failed for ${job.relativePath}: ${String(err)}\n`);
182
+ return { status: 'skipped', relativePath: job.relativePath, reason: 'not_found' };
183
+ }
184
+ let content;
185
+ try {
186
+ content = await readFile(job.absolutePath, 'utf-8');
187
+ }
188
+ catch (err) {
189
+ return { status: 'error', relativePath: job.relativePath, error: String(err) };
190
+ }
191
+ try {
192
+ const parsed = parseFile(job.absolutePath, content);
193
+ const hash = hashContent(content);
194
+ return { status: 'ok', relativePath: job.relativePath, parsed, hash, content };
195
+ }
196
+ catch (err) {
197
+ return { status: 'error', relativePath: job.relativePath, error: String(err) };
198
+ }
199
+ }
200
+ }
201
+ //# sourceMappingURL=parse-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-pool.js","sourceRoot":"","sources":["../../src/indexer/parse-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ParsedFile, ParsedImport } from '../types.js';
2
+ export type { ParsedFile, ParsedImport };
3
+ /** Job submitted to the pool. Paths are absolute for the worker's readFile,
4
+ * and project-relative for the main thread's DB lookups. */
5
+ export interface ParseJobInput {
6
+ absolutePath: string;
7
+ relativePath: string;
8
+ }
9
+ export type ParseJobResult = {
10
+ status: 'ok';
11
+ relativePath: string;
12
+ parsed: ParsedFile;
13
+ hash: string;
14
+ /** File content, sent back so the main thread can slice snippets /
15
+ * summarise without a second disk read. */
16
+ content: string;
17
+ } | {
18
+ status: 'skipped';
19
+ relativePath: string;
20
+ reason: 'too_large' | 'not_found';
21
+ } | {
22
+ status: 'error';
23
+ relativePath: string;
24
+ error: string;
25
+ };
26
+ export interface ParsePoolOptions {
27
+ /** 0 = run synchronously in the calling thread (test mode).
28
+ * N > 0 = spawn N worker_threads. */
29
+ maxWorkers: number;
30
+ /** Max file size in bytes; larger files are returned as 'skipped'. Defaults to 1 MB. */
31
+ maxFileSize?: number;
32
+ }
33
+ //# sourceMappingURL=parse-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-types.d.ts","sourceRoot":"","sources":["../../src/indexer/parse-types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAEzC;6DAC6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GACtB;IACE,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;gDAC4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;CACnC,GACD;IACE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B;0CACsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parse-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-types.js","sourceRoot":"","sources":["../../src/indexer/parse-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parse-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-worker.d.ts","sourceRoot":"","sources":["../../src/indexer/parse-worker.ts"],"names":[],"mappings":""}