projscan 0.9.2 → 0.11.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 (115) hide show
  1. package/README.md +37 -7
  2. package/dist/analyzers/deadCodeCheck.d.ts +10 -12
  3. package/dist/analyzers/deadCodeCheck.js +41 -69
  4. package/dist/analyzers/deadCodeCheck.js.map +1 -1
  5. package/dist/analyzers/pythonDependencyRiskCheck.d.ts +2 -0
  6. package/dist/analyzers/pythonDependencyRiskCheck.js +114 -0
  7. package/dist/analyzers/pythonDependencyRiskCheck.js.map +1 -0
  8. package/dist/analyzers/pythonLinterCheck.d.ts +2 -0
  9. package/dist/analyzers/pythonLinterCheck.js +119 -0
  10. package/dist/analyzers/pythonLinterCheck.js.map +1 -0
  11. package/dist/analyzers/pythonTestCheck.d.ts +2 -0
  12. package/dist/analyzers/pythonTestCheck.js +97 -0
  13. package/dist/analyzers/pythonTestCheck.js.map +1 -0
  14. package/dist/analyzers/pythonUnusedDependencyCheck.d.ts +2 -0
  15. package/dist/analyzers/pythonUnusedDependencyCheck.js +76 -0
  16. package/dist/analyzers/pythonUnusedDependencyCheck.js.map +1 -0
  17. package/dist/cli/index.js +294 -10
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/core/ast.d.ts +2 -0
  20. package/dist/core/ast.js +35 -2
  21. package/dist/core/ast.js.map +1 -1
  22. package/dist/core/codeGraph.d.ts +8 -7
  23. package/dist/core/codeGraph.js +50 -72
  24. package/dist/core/codeGraph.js.map +1 -1
  25. package/dist/core/couplingAnalyzer.d.ts +18 -0
  26. package/dist/core/couplingAnalyzer.js +174 -0
  27. package/dist/core/couplingAnalyzer.js.map +1 -0
  28. package/dist/core/fileInspector.d.ts +3 -0
  29. package/dist/core/fileInspector.js +78 -3
  30. package/dist/core/fileInspector.js.map +1 -1
  31. package/dist/core/hotspotAnalyzer.d.ts +13 -0
  32. package/dist/core/hotspotAnalyzer.js +29 -6
  33. package/dist/core/hotspotAnalyzer.js.map +1 -1
  34. package/dist/core/indexCache.js +8 -1
  35. package/dist/core/indexCache.js.map +1 -1
  36. package/dist/core/issueEngine.js +10 -0
  37. package/dist/core/issueEngine.js.map +1 -1
  38. package/dist/core/languages/LanguageAdapter.d.ts +36 -0
  39. package/dist/core/languages/LanguageAdapter.js +2 -0
  40. package/dist/core/languages/LanguageAdapter.js.map +1 -0
  41. package/dist/core/languages/goAdapter.d.ts +2 -0
  42. package/dist/core/languages/goAdapter.js +136 -0
  43. package/dist/core/languages/goAdapter.js.map +1 -0
  44. package/dist/core/languages/goCyclomatic.d.ts +21 -0
  45. package/dist/core/languages/goCyclomatic.js +55 -0
  46. package/dist/core/languages/goCyclomatic.js.map +1 -0
  47. package/dist/core/languages/goExports.d.ts +26 -0
  48. package/dist/core/languages/goExports.js +89 -0
  49. package/dist/core/languages/goExports.js.map +1 -0
  50. package/dist/core/languages/goImports.d.ts +26 -0
  51. package/dist/core/languages/goImports.js +64 -0
  52. package/dist/core/languages/goImports.js.map +1 -0
  53. package/dist/core/languages/goManifests.d.ts +19 -0
  54. package/dist/core/languages/goManifests.js +56 -0
  55. package/dist/core/languages/goManifests.js.map +1 -0
  56. package/dist/core/languages/javascriptAdapter.d.ts +2 -0
  57. package/dist/core/languages/javascriptAdapter.js +68 -0
  58. package/dist/core/languages/javascriptAdapter.js.map +1 -0
  59. package/dist/core/languages/pythonAdapter.d.ts +6 -0
  60. package/dist/core/languages/pythonAdapter.js +147 -0
  61. package/dist/core/languages/pythonAdapter.js.map +1 -0
  62. package/dist/core/languages/pythonCyclomatic.d.ts +18 -0
  63. package/dist/core/languages/pythonCyclomatic.js +45 -0
  64. package/dist/core/languages/pythonCyclomatic.js.map +1 -0
  65. package/dist/core/languages/pythonExports.d.ts +28 -0
  66. package/dist/core/languages/pythonExports.js +169 -0
  67. package/dist/core/languages/pythonExports.js.map +1 -0
  68. package/dist/core/languages/pythonImports.d.ts +22 -0
  69. package/dist/core/languages/pythonImports.js +104 -0
  70. package/dist/core/languages/pythonImports.js.map +1 -0
  71. package/dist/core/languages/pythonManifests.d.ts +34 -0
  72. package/dist/core/languages/pythonManifests.js +344 -0
  73. package/dist/core/languages/pythonManifests.js.map +1 -0
  74. package/dist/core/languages/registry.d.ts +5 -0
  75. package/dist/core/languages/registry.js +31 -0
  76. package/dist/core/languages/registry.js.map +1 -0
  77. package/dist/core/languages/treeSitterLoader.d.ts +14 -0
  78. package/dist/core/languages/treeSitterLoader.js +76 -0
  79. package/dist/core/languages/treeSitterLoader.js.map +1 -0
  80. package/dist/core/monorepo.d.ts +20 -0
  81. package/dist/core/monorepo.js +270 -0
  82. package/dist/core/monorepo.js.map +1 -0
  83. package/dist/core/prDiff.d.ts +43 -0
  84. package/dist/core/prDiff.js +298 -0
  85. package/dist/core/prDiff.js.map +1 -0
  86. package/dist/core/searchIndex.js +8 -0
  87. package/dist/core/searchIndex.js.map +1 -1
  88. package/dist/core/telemetry.d.ts +90 -0
  89. package/dist/core/telemetry.js +199 -0
  90. package/dist/core/telemetry.js.map +1 -0
  91. package/dist/grammars/tree-sitter-go.wasm +0 -0
  92. package/dist/grammars/tree-sitter-python.wasm +0 -0
  93. package/dist/grammars/web-tree-sitter.wasm +0 -0
  94. package/dist/mcp/server.js +22 -0
  95. package/dist/mcp/server.js.map +1 -1
  96. package/dist/mcp/tools.js +317 -20
  97. package/dist/mcp/tools.js.map +1 -1
  98. package/dist/reporters/consoleReporter.d.ts +4 -1
  99. package/dist/reporters/consoleReporter.js +113 -0
  100. package/dist/reporters/consoleReporter.js.map +1 -1
  101. package/dist/reporters/jsonReporter.d.ts +4 -1
  102. package/dist/reporters/jsonReporter.js +9 -0
  103. package/dist/reporters/jsonReporter.js.map +1 -1
  104. package/dist/reporters/markdownReporter.d.ts +4 -1
  105. package/dist/reporters/markdownReporter.js +103 -3
  106. package/dist/reporters/markdownReporter.js.map +1 -1
  107. package/dist/types.d.ts +115 -0
  108. package/dist/utils/cache.d.ts +3 -0
  109. package/dist/utils/cache.js +51 -0
  110. package/dist/utils/cache.js.map +1 -0
  111. package/dist/utils/config.js +10 -0
  112. package/dist/utils/config.js.map +1 -1
  113. package/dist/utils/fileWalker.js +14 -0
  114. package/dist/utils/fileWalker.js.map +1 -1
  115. package/package.json +11 -5
package/dist/types.d.ts CHANGED
@@ -245,6 +245,12 @@ export interface ProjscanConfig {
245
245
  ignore?: string[];
246
246
  disableRules?: string[];
247
247
  severityOverrides?: Record<string, IssueSeverity>;
248
+ /** Opt-in telemetry (0.14). Off unless explicitly enabled. */
249
+ telemetry?: {
250
+ enabled?: boolean;
251
+ /** Path or "stderr". Default: ~/.projscan/telemetry.jsonl. */
252
+ sink?: string;
253
+ };
248
254
  }
249
255
  export interface LoadedConfig {
250
256
  config: ProjscanConfig;
@@ -261,6 +267,8 @@ export interface FileHotspot {
261
267
  distinctAuthors: number;
262
268
  daysSinceLastChange: number | null;
263
269
  lineCount: number;
270
+ /** AST-derived McCabe complexity. null when no language adapter parsed this file. */
271
+ cyclomaticComplexity: number | null;
264
272
  sizeBytes: number;
265
273
  issueCount: number;
266
274
  issueIds: string[];
@@ -282,6 +290,105 @@ export interface HotspotReport {
282
290
  hotspots: FileHotspot[];
283
291
  totalFilesRanked: number;
284
292
  }
293
+ export interface FileCoupling {
294
+ relativePath: string;
295
+ /** Number of files that import this one. */
296
+ fanIn: number;
297
+ /** Number of locally-resolved imports this file makes. */
298
+ fanOut: number;
299
+ /** Bob Martin's instability: fanOut / (fanIn + fanOut). 0 when both are zero. */
300
+ instability: number;
301
+ }
302
+ export interface ImportCycle {
303
+ /** Member files of a strongly-connected component (size >= 2). */
304
+ files: string[];
305
+ size: number;
306
+ }
307
+ export interface CrossPackageEdge {
308
+ /** Importing file + the workspace package it belongs to. */
309
+ from: {
310
+ file: string;
311
+ package: string;
312
+ };
313
+ /** Imported file + the workspace package it belongs to. */
314
+ to: {
315
+ file: string;
316
+ package: string;
317
+ };
318
+ }
319
+ export interface CouplingReport {
320
+ files: FileCoupling[];
321
+ cycles: ImportCycle[];
322
+ /**
323
+ * Edges where importer and imported live in different workspace packages
324
+ * (0.11). Empty when no workspace info was supplied or when all edges are
325
+ * intra-package. Useful for spotting unauthorized deep imports across
326
+ * package boundaries.
327
+ */
328
+ crossPackageEdges: CrossPackageEdge[];
329
+ totalFiles: number;
330
+ totalCycles: number;
331
+ totalCrossPackageEdges: number;
332
+ }
333
+ export type WorkspaceKind = 'npm' | 'yarn' | 'pnpm' | 'nx' | 'turbo' | 'lerna' | 'none';
334
+ export interface WorkspacePackage {
335
+ /** package.json `name` field, or directory basename when missing. */
336
+ name: string;
337
+ /** Workspace-relative path of the package root (no leading `/`, no trailing `/`). */
338
+ relativePath: string;
339
+ /** package.json `version` if available. */
340
+ version?: string;
341
+ /** True when this is the workspace root itself. */
342
+ isRoot: boolean;
343
+ }
344
+ export interface WorkspaceInfo {
345
+ kind: WorkspaceKind;
346
+ /** All packages, including the root if it has its own package.json. */
347
+ packages: WorkspacePackage[];
348
+ /** Source manifest used to discover packages, e.g. "package.json#workspaces" or "pnpm-workspace.yaml". */
349
+ source?: string;
350
+ }
351
+ export interface ExportRename {
352
+ from: string;
353
+ to: string;
354
+ }
355
+ export interface FileAstDiff {
356
+ relativePath: string;
357
+ status: 'added' | 'removed' | 'modified';
358
+ exportsAdded: string[];
359
+ exportsRemoved: string[];
360
+ /**
361
+ * Heuristically-detected renames (0.11). When an export disappears from
362
+ * base AND a similar new name appears in head AND no other export matches,
363
+ * we report it here instead of as a +/- pair. Removed/added lists exclude
364
+ * any names that ended up in renames.
365
+ */
366
+ exportsRenamed: ExportRename[];
367
+ importsAdded: string[];
368
+ importsRemoved: string[];
369
+ callsAdded: string[];
370
+ callsRemoved: string[];
371
+ /** CC(head) - CC(base). null when either side wasn't AST-parsed. */
372
+ cyclomaticDelta: number | null;
373
+ /** fanIn(head) - fanIn(base). null when graph entry missing on either side. */
374
+ fanInDelta: number | null;
375
+ }
376
+ export interface PrDiffReport {
377
+ available: boolean;
378
+ reason?: string;
379
+ base: {
380
+ ref: string;
381
+ resolvedSha: string | null;
382
+ };
383
+ head: {
384
+ ref: string;
385
+ resolvedSha: string | null;
386
+ };
387
+ filesAdded: string[];
388
+ filesRemoved: string[];
389
+ filesModified: FileAstDiff[];
390
+ totalFilesChanged: number;
391
+ }
285
392
  export interface FileInspection {
286
393
  relativePath: string;
287
394
  exists: boolean;
@@ -294,6 +401,14 @@ export interface FileInspection {
294
401
  potentialIssues: string[];
295
402
  hotspot: FileHotspot | null;
296
403
  issues: Issue[];
404
+ /** AST-derived McCabe complexity. null when no language adapter parsed this file. */
405
+ cyclomaticComplexity?: number | null;
406
+ /** Number of files that import this one. null when graph unavailable. */
407
+ fanIn?: number | null;
408
+ /** Number of locally-resolved imports this file makes. null when graph unavailable. */
409
+ fanOut?: number | null;
410
+ /** Adapter id (e.g. 'javascript', 'python'). Set when the graph was available. */
411
+ language?: string;
297
412
  }
298
413
  export interface McpToolDefinition {
299
414
  name: string;
@@ -0,0 +1,3 @@
1
+ export declare function cacheGet<T>(key: string): Promise<T | null>;
2
+ export declare function cacheSet<T>(key: string, data: T, ttlMs?: number): Promise<void>;
3
+ export declare function cacheInvalidate(key: string): Promise<void>;
@@ -0,0 +1,51 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ import crypto from 'node:crypto';
5
+ const CACHE_DIR = path.join(os.tmpdir(), 'projscan-cache');
6
+ const DEFAULT_TTL_MS = 60_000; // 1 minute
7
+ async function ensureCacheDir() {
8
+ await fs.mkdir(CACHE_DIR, { recursive: true });
9
+ }
10
+ function getCacheFilePath(key) {
11
+ const hash = crypto.createHash('sha256').update(key).digest('hex').slice(0, 16);
12
+ return path.join(CACHE_DIR, `${hash}.json`);
13
+ }
14
+ export async function cacheGet(key) {
15
+ try {
16
+ const filePath = getCacheFilePath(key);
17
+ const raw = await fs.readFile(filePath, 'utf-8');
18
+ const entry = JSON.parse(raw);
19
+ if (Date.now() > entry.expiresAt) {
20
+ await fs.unlink(filePath).catch(() => { });
21
+ return null;
22
+ }
23
+ return entry.data;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ export async function cacheSet(key, data, ttlMs = DEFAULT_TTL_MS) {
30
+ try {
31
+ await ensureCacheDir();
32
+ const filePath = getCacheFilePath(key);
33
+ const entry = {
34
+ data,
35
+ expiresAt: Date.now() + ttlMs,
36
+ };
37
+ await fs.writeFile(filePath, JSON.stringify(entry), 'utf-8');
38
+ }
39
+ catch {
40
+ // Cache write failure is non-critical
41
+ }
42
+ }
43
+ export async function cacheInvalidate(key) {
44
+ try {
45
+ await fs.unlink(getCacheFilePath(key));
46
+ }
47
+ catch {
48
+ // Ignore
49
+ }
50
+ }
51
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC3D,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,WAAW;AAE1C,KAAK,UAAU,cAAc;IAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC9C,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,GAAW;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,GAAkB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,GAAW,EAAE,IAAO,EAAE,KAAK,GAAG,cAAc;IAC5E,IAAI,CAAC;QACH,MAAM,cAAc,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,KAAK,GAAkB;YAC3B,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC9B,CAAC;QACF,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC"}
@@ -89,6 +89,16 @@ function normalize(input) {
89
89
  if (Object.keys(overrides).length)
90
90
  out.severityOverrides = overrides;
91
91
  }
92
+ if (obj.telemetry && typeof obj.telemetry === 'object') {
93
+ const t = obj.telemetry;
94
+ const telemetry = {};
95
+ if (typeof t.enabled === 'boolean')
96
+ telemetry.enabled = t.enabled;
97
+ if (typeof t.sink === 'string' && t.sink.trim())
98
+ telemetry.sink = t.sink.trim();
99
+ if (Object.keys(telemetry).length)
100
+ out.telemetry = telemetry;
101
+ }
92
102
  return out;
93
103
  }
94
104
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,20 @@ const DEFAULT_IGNORE = [
11
11
  '**/.cache/**',
12
12
  '**/.turbo/**',
13
13
  '**/.output/**',
14
+ // Python noise. Without these, a repo with a committed virtualenv
15
+ // or interpreter bytecode cache would scan thousands of third-party
16
+ // files and tank the health score.
17
+ '**/venv/**',
18
+ '**/.venv/**',
19
+ '**/env/**',
20
+ '**/.env/**',
21
+ '**/__pycache__/**',
22
+ '**/.tox/**',
23
+ '**/.pytest_cache/**',
24
+ '**/.mypy_cache/**',
25
+ '**/.ruff_cache/**',
26
+ '**/.eggs/**',
27
+ '**/*.egg-info/**',
14
28
  ];
15
29
  export async function walkFiles(rootPath, options) {
16
30
  const ignore = options?.ignore ?? DEFAULT_IGNORE;
@@ -1 +1 @@
1
- {"version":3,"file":"fileWalker.js","sourceRoot":"","sources":["../../src/utils/fileWalker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,cAAc,GAAG;IACrB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAqB;IACrE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,cAAc,CAAC;IAEjD,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;QAChC,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,IAAI;QACT,MAAM;QACN,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpE,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAElE,OAAO;YACL,YAAY;YACZ,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;YACnD,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;YAC3B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"fileWalker.js","sourceRoot":"","sources":["../../src/utils/fileWalker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,MAAM,cAAc,GAAG;IACrB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,kEAAkE;IAClE,oEAAoE;IACpE,mCAAmC;IACnC,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,YAAY;IACZ,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,aAAa;IACb,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAqB;IACrE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,cAAc,CAAC;IAEjD,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC/E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;QAChC,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,IAAI;QACT,MAAM;QACN,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpE,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAElE,OAAO;YACL,YAAY;YACZ,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;YACnD,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;YAC3B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projscan",
3
- "version": "0.9.2",
4
- "description": "Agent-first code intelligence. MCP server (2025-03-26) with AST parsing, code graph, BM25 + optional semantic search, cursor pagination, progress notifications, and context-budgeted output. CLI on the side.",
3
+ "version": "0.11.0",
4
+ "description": "Agent-first code intelligence. MCP server (2025-03-26) with AST parsing for JavaScript, TypeScript, Python, and Go; code graph, AST cyclomatic complexity, coupling + cycle detection, structural PR diff, monorepo workspace awareness, opt-in telemetry, BM25 + optional semantic search, cursor pagination, progress notifications, and context-budgeted output. CLI on the side.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -13,7 +13,7 @@
13
13
  "README.md"
14
14
  ],
15
15
  "scripts": {
16
- "build": "tsc",
16
+ "build": "tsc && node scripts/copy-wasm.mjs",
17
17
  "dev": "tsc --watch",
18
18
  "test": "vitest run",
19
19
  "test:watch": "vitest",
@@ -33,7 +33,10 @@
33
33
  "analyzer",
34
34
  "project-scanner",
35
35
  "dev-tools",
36
- "dx"
36
+ "dx",
37
+ "python",
38
+ "tree-sitter",
39
+ "multi-language"
37
40
  ],
38
41
  "author": "Abhi Yoheswaran",
39
42
  "license": "MIT",
@@ -54,7 +57,10 @@
54
57
  "chalk": "^5.3.0",
55
58
  "commander": "^12.1.0",
56
59
  "fast-glob": "^3.3.2",
57
- "ora": "^8.1.0"
60
+ "ora": "^8.1.0",
61
+ "tree-sitter-go": "^0.25.0",
62
+ "tree-sitter-python": "^0.25.0",
63
+ "web-tree-sitter": "^0.26.8"
58
64
  },
59
65
  "peerDependencies": {
60
66
  "@xenova/transformers": "^2.17.0"