@monoes/monograph 1.6.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/src/cache/extraction-cache.d.ts +3 -1
  2. package/dist/src/cache/extraction-cache.d.ts.map +1 -1
  3. package/dist/src/cache/extraction-cache.js +10 -2
  4. package/dist/src/cache/extraction-cache.js.map +1 -1
  5. package/dist/src/graph/explain.d.ts.map +1 -1
  6. package/dist/src/graph/explain.js +9 -2
  7. package/dist/src/graph/explain.js.map +1 -1
  8. package/dist/src/graph/pagerank.d.ts +9 -3
  9. package/dist/src/graph/pagerank.d.ts.map +1 -1
  10. package/dist/src/graph/pagerank.js +69 -34
  11. package/dist/src/graph/pagerank.js.map +1 -1
  12. package/dist/src/mcp-tools/neighbors.d.ts +29 -3
  13. package/dist/src/mcp-tools/neighbors.d.ts.map +1 -1
  14. package/dist/src/mcp-tools/neighbors.js +85 -10
  15. package/dist/src/mcp-tools/neighbors.js.map +1 -1
  16. package/dist/src/mcp-tools/query.d.ts +8 -0
  17. package/dist/src/mcp-tools/query.d.ts.map +1 -1
  18. package/dist/src/mcp-tools/query.js +15 -9
  19. package/dist/src/mcp-tools/query.js.map +1 -1
  20. package/dist/src/mcp-tools/rename.d.ts.map +1 -1
  21. package/dist/src/mcp-tools/rename.js +27 -2
  22. package/dist/src/mcp-tools/rename.js.map +1 -1
  23. package/dist/src/parsers/extractor.d.ts.map +1 -1
  24. package/dist/src/parsers/extractor.js +16 -8
  25. package/dist/src/parsers/extractor.js.map +1 -1
  26. package/dist/src/parsers/loader.js +17 -3
  27. package/dist/src/parsers/loader.js.map +1 -1
  28. package/dist/src/pipeline/index-scope.d.ts +23 -0
  29. package/dist/src/pipeline/index-scope.d.ts.map +1 -0
  30. package/dist/src/pipeline/index-scope.js +33 -0
  31. package/dist/src/pipeline/index-scope.js.map +1 -0
  32. package/dist/src/pipeline/orchestrator.d.ts +17 -0
  33. package/dist/src/pipeline/orchestrator.d.ts.map +1 -1
  34. package/dist/src/pipeline/orchestrator.js +55 -122
  35. package/dist/src/pipeline/orchestrator.js.map +1 -1
  36. package/dist/src/pipeline/phases/communities.d.ts +78 -2
  37. package/dist/src/pipeline/phases/communities.d.ts.map +1 -1
  38. package/dist/src/pipeline/phases/communities.js +141 -9
  39. package/dist/src/pipeline/phases/communities.js.map +1 -1
  40. package/dist/src/pipeline/phases/markdown.js +6 -6
  41. package/dist/src/pipeline/phases/markdown.js.map +1 -1
  42. package/dist/src/pipeline/phases/parse.d.ts.map +1 -1
  43. package/dist/src/pipeline/phases/parse.js +22 -27
  44. package/dist/src/pipeline/phases/parse.js.map +1 -1
  45. package/dist/src/pipeline/phases/pdf-parse.js +5 -5
  46. package/dist/src/pipeline/phases/pdf-parse.js.map +1 -1
  47. package/dist/src/pipeline/phases/scan.d.ts.map +1 -1
  48. package/dist/src/pipeline/phases/scan.js +16 -1
  49. package/dist/src/pipeline/phases/scan.js.map +1 -1
  50. package/dist/src/pipeline/phases/structure.js +12 -12
  51. package/dist/src/pipeline/phases/structure.js.map +1 -1
  52. package/dist/src/pipeline/phases/variables.d.ts.map +1 -1
  53. package/dist/src/pipeline/phases/variables.js +2 -1
  54. package/dist/src/pipeline/phases/variables.js.map +1 -1
  55. package/dist/src/search/hybrid-query.d.ts +77 -14
  56. package/dist/src/search/hybrid-query.d.ts.map +1 -1
  57. package/dist/src/search/hybrid-query.js +81 -21
  58. package/dist/src/search/hybrid-query.js.map +1 -1
  59. package/dist/src/staleness/git-staleness.d.ts +46 -0
  60. package/dist/src/staleness/git-staleness.d.ts.map +1 -1
  61. package/dist/src/staleness/git-staleness.js +188 -24
  62. package/dist/src/staleness/git-staleness.js.map +1 -1
  63. package/dist/src/storage/fts-store.d.ts +14 -0
  64. package/dist/src/storage/fts-store.d.ts.map +1 -1
  65. package/dist/src/storage/fts-store.js +18 -3
  66. package/dist/src/storage/fts-store.js.map +1 -1
  67. package/dist/src/types.d.ts +58 -0
  68. package/dist/src/types.d.ts.map +1 -1
  69. package/dist/src/types.js +103 -1
  70. package/dist/src/types.js.map +1 -1
  71. package/dist/src/web/api.d.ts +3 -0
  72. package/dist/src/web/api.d.ts.map +1 -1
  73. package/dist/src/web/api.js +2 -0
  74. package/dist/src/web/api.js.map +1 -1
  75. package/dist/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +1 -1
@@ -1,14 +1,11 @@
1
1
  import { execSync } from 'node:child_process';
2
- import { existsSync, readFileSync, statSync } from 'node:fs';
3
- import { extname, join, resolve } from 'node:path';
2
+ import { join, resolve } from 'node:path';
4
3
  import Graph from 'graphology';
5
4
  import { analyzeChurn } from '../analysis/churn.js';
6
5
  import { ExtractionCache } from '../cache/extraction-cache.js';
7
- import { isSupportedExtension, parseFile } from '../parsers/loader.js';
8
6
  import { generateGraphReport } from '../reporting/graph-report.js';
9
7
  import { closeDb, openDb } from '../storage/db.js';
10
- import { deleteEdgesForFile, insertEdges } from '../storage/edge-store.js';
11
- import { deleteNodesForFile, insertNodes } from '../storage/node-store.js';
8
+ import { isWithinScope, readIndexScope, scopeForOptions, writeIndexScope } from './index-scope.js';
12
9
  import { bridgeResolverPhase } from './phases/bridge-resolver.js';
13
10
  import { communitiesPhase } from './phases/communities.js';
14
11
  import { crossFilePhase } from './phases/cross-file.js';
@@ -18,7 +15,7 @@ import { importResolverPhase } from './phases/import-resolver.js';
18
15
  import { markdownPhase } from './phases/markdown.js';
19
16
  import { mroPhase } from './phases/mro.js';
20
17
  import { ormPhase } from './phases/orm.js';
21
- import { extractArrowFunctions, extractCsharpNamespaces, parsePhase } from './phases/parse.js';
18
+ import { parsePhase } from './phases/parse.js';
22
19
  import { processesPhase } from './phases/processes.js';
23
20
  import { routesPhase } from './phases/routes.js';
24
21
  import { scanPhase } from './phases/scan.js';
@@ -27,7 +24,6 @@ import { structurePhase } from './phases/structure.js';
27
24
  import { suggestPhase } from './phases/suggest.js';
28
25
  import { surprisesPhase } from './phases/surprises.js';
29
26
  import { toolsPhase } from './phases/tools.js';
30
- import { extractVariables, variableToNode } from './phases/variables.js';
31
27
  import { variablesPhase } from './phases/variables-phase.js';
32
28
  import { wildcardSynthesisPhase } from './phases/wildcard-phase.js';
33
29
  import { PipelineRunner } from './runner.js';
@@ -121,7 +117,15 @@ async function buildAsyncLocked(repoPath, dbPath, fullOptions, options) {
121
117
  const tmpDb = openDb(dbPath);
122
118
  try {
123
119
  const report = checkStaleness(tmpDb, resolve(repoPath));
124
- if (!report.isStale && report.currentCommit !== null) {
120
+ // Gate on the explicit state, not the legacy `isStale` boolean.
121
+ // `isStale` only reflects commit divergence, so it stays false for an
122
+ // index whose commit matches HEAD but whose worktree has uncommitted
123
+ // edits — this guard would then skip the very rebuild those edits
124
+ // require. It is also false when git is unavailable, where nothing is
125
+ // actually known. `state === 'fresh'` is true only when the commit
126
+ // matches AND the worktree is clean AND that was determinable, so it
127
+ // subsumes the old currentCommit !== null check.
128
+ if (report.state === 'fresh') {
125
129
  options.onProgress?.({ phase: 'skip', message: 'Index is fresh — skipping rebuild' });
126
130
  return; // Already up-to-date
127
131
  }
@@ -151,6 +155,16 @@ async function buildAsyncLocked(repoPath, dbPath, fullOptions, options) {
151
155
  }
152
156
  }
153
157
  const db = openDb(dbPath);
158
+ // Source-scope continuity (issue: a code-only auto-refresh wiped every
159
+ // previously-indexed Document node). A caller that doesn't state a scope
160
+ // inherits whatever the index was last built with, so a refresh can never
161
+ // silently narrow coverage; an explicit `codeOnly` from the caller still wins.
162
+ const storedScope = readIndexScope(db);
163
+ if (options.codeOnly === undefined && storedScope !== null) {
164
+ fullOptions.codeOnly = storedScope === 'code';
165
+ }
166
+ const activeScope = scopeForOptions(fullOptions.codeOnly);
167
+ options.onProgress?.({ phase: 'scope', message: `Index scope: ${activeScope}` });
154
168
  // The whole build is one SQL transaction: a phase throwing (e.g. issue
155
169
  // #40's FK violation) used to leave whatever earlier phases had already
156
170
  // autocommitted sitting in the DB, silently corrupting the index into a
@@ -216,12 +230,18 @@ async function buildAsyncLocked(repoPath, dbPath, fullOptions, options) {
216
230
  // (ctx.allFilesCached === true), a file may have been deleted from disk between
217
231
  // builds, which produces zero cache misses but still leaves ghost rows in the DB
218
232
  // unless we compare the DB's known file set against the current on-disk set.
233
+ //
234
+ // The sweep is confined to the current build's source domain (`activeScope`).
235
+ // A narrowed build never looked at files outside its domain, so their absence
236
+ // from `filePaths` says nothing about whether they still exist on disk —
237
+ // deleting those rows is how a code-only refresh used to erase every Document
238
+ // node in the graph.
219
239
  const scanOut = outputs.get('scan');
220
240
  if (scanOut) {
221
241
  const liveFiles = new Set(scanOut.filePaths.map((f) => resolve(f)));
222
242
  const staleFiles = db.prepare('SELECT DISTINCT file_path FROM nodes WHERE file_path IS NOT NULL').all()
223
243
  .map((r) => r.file_path)
224
- .filter((f) => !liveFiles.has(resolve(ctx.repoPath, f)));
244
+ .filter((f) => isWithinScope(f, activeScope) && !liveFiles.has(resolve(ctx.repoPath, f)));
225
245
  if (staleFiles.length > 0) {
226
246
  const deleteStale = db.transaction((files) => {
227
247
  const deleteEdges = db.prepare(`
@@ -278,6 +298,7 @@ async function buildAsyncLocked(repoPath, dbPath, fullOptions, options) {
278
298
  }
279
299
  }
280
300
  db.prepare("INSERT OR REPLACE INTO index_meta VALUES ('indexed_at', ?)").run(new Date().toISOString());
301
+ writeIndexScope(db, activeScope);
281
302
  db.exec('COMMIT');
282
303
  // Skip expensive report regeneration when all files were cached (nothing changed) —
283
304
  // this is purely a performance optimization, not correctness-critical, so it stays
@@ -312,121 +333,33 @@ async function buildAsyncLocked(repoPath, dbPath, fullOptions, options) {
312
333
  closeDb(db);
313
334
  }
314
335
  }
315
- const INCREMENTAL_THRESHOLD = 20;
336
+ /**
337
+ * Re-index after files changed on disk.
338
+ *
339
+ * This runs the FULL pipeline, with extraction-cache reuse so unchanged files
340
+ * are not re-parsed. The previous partial implementation deleted the changed
341
+ * files' edges, re-parsed only those files, and stopped — it never reran
342
+ * relationship resolution (imports, cross-file calls, scope/bridge resolution)
343
+ * or the derived analyses (communities, processes, god-nodes). A one-line edit
344
+ * therefore dropped every CALLS/IMPORTS/REFERENCES edge incident to that file
345
+ * and left derived analysis stale. The watcher's deferred full rebuild repaired
346
+ * that eventually; direct callers silently kept the incomplete graph.
347
+ *
348
+ * A genuine incremental path is still worth having, but it has to track the
349
+ * changed files' dependents, recompute their relationships, and invalidate the
350
+ * affected derived analyses. Until such an implementation exists and is proven
351
+ * equivalent to a clean build, correctness wins over speed.
352
+ */
316
353
  export async function buildIncrementalAsync(repoPath, changedAbsPaths, options = {}) {
317
354
  if (changedAbsPaths.length === 0)
318
355
  return;
319
- if (changedAbsPaths.length > INCREMENTAL_THRESHOLD) {
320
- return buildAsync(repoPath, options);
321
- }
322
- const dbPath = resolve(join(repoPath, '.monomind', 'monograph.db'));
323
- if (!existsSync(dbPath)) {
324
- return buildAsync(repoPath, options);
325
- }
326
- const releaseLock = await acquireBuildLock(dbPath);
327
- if (!releaseLock) {
328
- options.onProgress?.({
329
- phase: 'skip',
330
- message: 'Another build is in progress — skipping incremental',
331
- });
332
- return;
333
- }
334
- try {
335
- await buildIncrementalLocked(resolve(repoPath), dbPath, changedAbsPaths, options);
336
- }
337
- finally {
338
- releaseLock();
339
- }
340
- }
341
- async function buildIncrementalLocked(resolvedRepo, dbPath, changedAbsPaths, options) {
342
- const db = openDb(dbPath);
343
- const maxSize = options.maxFileSizeBytes ?? DEFAULT_OPTIONS.maxFileSizeBytes;
344
- db.exec('BEGIN');
345
- try {
346
- let parsed = 0;
347
- let deleted = 0;
348
- for (const absPath of changedAbsPaths) {
349
- const ext = extname(absPath).toLowerCase();
350
- if (!isSupportedExtension(ext))
351
- continue;
352
- if (ext === '.md' || ext === '.markdown')
353
- continue;
354
- const relPath = absPath.startsWith(resolvedRepo)
355
- ? absPath.slice(resolvedRepo.length + 1)
356
- : absPath;
357
- deleteEdgesForFile(db, relPath);
358
- deleteNodesForFile(db, relPath);
359
- if (!existsSync(absPath)) {
360
- deleted++;
361
- continue;
362
- }
363
- let source;
364
- try {
365
- const stat = statSync(absPath);
366
- if (stat.size > maxSize)
367
- continue;
368
- source = readFileSync(absPath, 'utf-8');
369
- }
370
- catch {
371
- continue;
372
- }
373
- const result = await parseFile(absPath, source, relPath);
374
- const nodes = [...result.nodes];
375
- const edges = [...result.edges];
376
- if (ext === '.cs') {
377
- for (const ns of extractCsharpNamespaces(source, relPath)) {
378
- nodes.push({
379
- id: `${ns.filePath}::namespace::${ns.name}`,
380
- name: ns.name,
381
- label: 'Namespace',
382
- normLabel: 'namespace',
383
- filePath: ns.filePath,
384
- line: ns.line,
385
- isExported: true,
386
- });
387
- }
388
- }
389
- if (['.ts', '.tsx', '.js', '.jsx'].includes(ext)) {
390
- const varInfos = extractVariables(source, relPath);
391
- nodes.push(...varInfos.map((v) => variableToNode(v)));
392
- for (const fn of extractArrowFunctions(source, relPath)) {
393
- nodes.push({
394
- id: `${fn.filePath}::fn::${fn.name}`,
395
- name: fn.name,
396
- label: 'Function',
397
- normLabel: 'function',
398
- filePath: fn.filePath,
399
- line: fn.line,
400
- isExported: fn.isExported,
401
- });
402
- }
403
- }
404
- insertNodes(db, nodes);
405
- insertEdges(db, edges);
406
- parsed++;
407
- }
408
- const hash = getCurrentCommitHash(resolvedRepo);
409
- if (hash) {
410
- db.prepare("INSERT OR REPLACE INTO index_meta VALUES ('last_commit_hash', ?)").run(hash);
411
- }
412
- db.prepare("INSERT OR REPLACE INTO index_meta VALUES ('indexed_at', ?)").run(new Date().toISOString());
413
- db.exec('COMMIT');
414
- options.onProgress?.({
415
- phase: 'incremental',
416
- message: `Incremental: ${parsed} re-parsed, ${deleted} removed`,
417
- });
418
- }
419
- catch (err) {
420
- try {
421
- db.exec('ROLLBACK');
422
- }
423
- catch {
424
- /* ignore */
425
- }
426
- throw err;
427
- }
428
- finally {
429
- closeDb(db);
430
- }
356
+ // `incremental` means "skip when the index is already fresh", which is keyed on
357
+ // git HEAD. A working-tree edit doesn't move HEAD, so honouring the flag here
358
+ // would skip the very rebuild the caller just asked for.
359
+ await buildAsync(repoPath, { ...options, incremental: false });
360
+ options.onProgress?.({
361
+ phase: 'incremental',
362
+ message: `Rebuilt after ${changedAbsPaths.length} changed file(s)`,
363
+ });
431
364
  }
432
365
  //# sourceMappingURL=orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,60 @@
1
+ import type { MonographDb } from '../../storage/db.js';
2
+ import type { EdgeRelation } from '../../types.js';
1
3
  import type { PipelinePhase } from '../types.js';
2
4
  export interface CommunitiesOutput {
3
5
  memberships: Map<string, number>;
4
6
  communityLabels: Map<number, string>;
5
7
  cohesionScores: Map<number, number>;
6
8
  }
9
+ /**
10
+ * The relation families that participate in clustering, and the weight each
11
+ * family contributes to the clustering graph.
12
+ *
13
+ * This selection is deliberate, not incidental: different relations mean very
14
+ * different things structurally, so they must not all count as the same
15
+ * evidence of coupling.
16
+ *
17
+ * - **Coupling (weight 1)** — one symbol genuinely depends on another at
18
+ * runtime or type-check time. These are what a module boundary is supposed
19
+ * to contain, so they drive cluster boundaries.
20
+ * - **Weak coupling (weight 0.5)** — real but indirect or partial links
21
+ * (pass-through re-exports, member access, framework wiring). They pull
22
+ * nodes together, but should not outvote a direct call or import.
23
+ * - **Containment (weight 0.25)** — a file *owns* a symbol; it is not evidence
24
+ * that the two are coupled. Counted at full weight, containment dominates
25
+ * every real repo (there is one CONTAINS edge per symbol) and clustering
26
+ * degenerates into a restatement of the file tree. It is kept at a low weight
27
+ * only so that symbols with no coupling edges still attach to their parent
28
+ * rather than dropping out of the clustering entirely.
29
+ *
30
+ * Everything not listed is excluded: process/step relations (produced after
31
+ * this phase runs), and the document-knowledge-graph families (REFERENCES,
32
+ * PARENT_SECTION, TAGGED_AS, CO_OCCURS and the LLM-inferred prose relations),
33
+ * which describe prose adjacency rather than code coupling.
34
+ */
35
+ export declare const CLUSTERING_RELATION_WEIGHTS: Readonly<Partial<Record<EdgeRelation, number>>>;
36
+ export interface ClusteringEdge {
37
+ sourceId: string;
38
+ targetId: string;
39
+ weight: number;
40
+ }
41
+ /**
42
+ * Read the clustering input from the committed canonical graph — the `edges`
43
+ * table this build has already written — rather than from any single phase's
44
+ * in-memory output.
45
+ *
46
+ * This is the whole point of the query: edges produced by the resolution
47
+ * phases (scope-resolution's resolved CALLS, bridge-resolver, wildcard
48
+ * synthesis, mro, routes/tools/orm) are inserted straight into the DB and
49
+ * never surface in `parse` or `cross-file` phase output. Clustering from those
50
+ * outputs therefore ran over a thinner graph than the one every other consumer
51
+ * queries. Reading the table means clustering sees exactly the edges the rest
52
+ * of the system sees — filtered to the families selected above.
53
+ *
54
+ * The phase runs inside the build's open transaction on the same connection,
55
+ * so it observes this build's writes.
56
+ */
57
+ export declare function loadClusteringEdges(db: MonographDb): ClusteringEdge[];
7
58
  export declare function computeCohesion(communityId: number, memberships: Map<string, number>, edges: Array<{
8
59
  sourceId: string;
9
60
  targetId: string;
@@ -14,14 +65,39 @@ export declare function computeCohesion(communityId: number, memberships: Map<st
14
65
  * This replaces calling `computeCohesion` inside a loop, which was O(K*(N+E))
15
66
  * because each call re-scanned all memberships (O(N)) and all edges (O(E)).
16
67
  *
68
+ * The score is a structural measurement — the fraction of possible internal
69
+ * pairs that are actually connected by a selected edge — and nothing more. It
70
+ * is not a quality, health, or design-correctness judgment: a low score says
71
+ * the clustering grouped nodes that have few links *among the relation
72
+ * families listed in CLUSTERING_RELATION_WEIGHTS*, which can equally mean the
73
+ * coupling is real but expressed through a family this phase excludes.
74
+ *
17
75
  * @param memberships - nodeId → communityId map from the clustering step
18
- * @param edges - all edges used for the graph (IMPORTS + resolved)
19
- * @returns Map of communityId → cohesion score ∈ [0, 1]
76
+ * @param edges - the same selected edge set that was clustered (see
77
+ * `loadClusteringEdges`), so the score describes the graph that produced the
78
+ * communities rather than some other edge set
79
+ * @returns Map of communityId → internal-edge density ∈ [0, 1]
20
80
  */
21
81
  export declare function computeAllCohesionScores(memberships: Map<string, number>, edges: Array<{
22
82
  sourceId: string;
23
83
  targetId: string;
24
84
  }>): Map<number, number>;
85
+ /**
86
+ * Community detection over the committed canonical graph.
87
+ *
88
+ * What the output does and does not claim: communities here are the clusters
89
+ * a modularity-maximising algorithm (Leiden-style refinement over Louvain)
90
+ * finds in the weighted edge set defined by `CLUSTERING_RELATION_WEIGHTS`.
91
+ * They are a summary of *that* connectivity, and they have not been measured
92
+ * against package manifests, directory layout, or runtime deployment units —
93
+ * so a community is a candidate grouping to look at, not a verified
94
+ * architectural module or package boundary. Any consumer that presents these
95
+ * as architecture should say which basis it is using.
96
+ *
97
+ * `deps` lists every phase that writes a selected relation family into
98
+ * `edges`, so that the table is complete when this phase reads it. Adding a
99
+ * phase that emits a clustering relation means adding it here too.
100
+ */
25
101
  export declare const communitiesPhase: PipelinePhase<CommunitiesOutput>;
26
102
  /**
27
103
  * Split a community that is too large into smaller sub-groups.
@@ -1 +1 @@
1
- {"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/communities.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAsBR;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgDrB;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,iBAAiB,CAsE7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAO7F"}
1
+ {"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../../../src/pipeline/phases/communities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAuBvF,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,cAAc,EAAE,CAYrE;AAuBD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,CAsBR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgDrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,iBAAiB,CA+E7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAO7F"}
@@ -1,6 +1,104 @@
1
+ import Graph from 'graphology';
1
2
  import louvain from 'graphology-communities-louvain';
2
- import { loadGraphFromEdges } from '../../graph/loader.js';
3
3
  import { leiden } from './leiden.js';
4
+ /**
5
+ * The relation families that participate in clustering, and the weight each
6
+ * family contributes to the clustering graph.
7
+ *
8
+ * This selection is deliberate, not incidental: different relations mean very
9
+ * different things structurally, so they must not all count as the same
10
+ * evidence of coupling.
11
+ *
12
+ * - **Coupling (weight 1)** — one symbol genuinely depends on another at
13
+ * runtime or type-check time. These are what a module boundary is supposed
14
+ * to contain, so they drive cluster boundaries.
15
+ * - **Weak coupling (weight 0.5)** — real but indirect or partial links
16
+ * (pass-through re-exports, member access, framework wiring). They pull
17
+ * nodes together, but should not outvote a direct call or import.
18
+ * - **Containment (weight 0.25)** — a file *owns* a symbol; it is not evidence
19
+ * that the two are coupled. Counted at full weight, containment dominates
20
+ * every real repo (there is one CONTAINS edge per symbol) and clustering
21
+ * degenerates into a restatement of the file tree. It is kept at a low weight
22
+ * only so that symbols with no coupling edges still attach to their parent
23
+ * rather than dropping out of the clustering entirely.
24
+ *
25
+ * Everything not listed is excluded: process/step relations (produced after
26
+ * this phase runs), and the document-knowledge-graph families (REFERENCES,
27
+ * PARENT_SECTION, TAGGED_AS, CO_OCCURS and the LLM-inferred prose relations),
28
+ * which describe prose adjacency rather than code coupling.
29
+ */
30
+ export const CLUSTERING_RELATION_WEIGHTS = {
31
+ // Coupling
32
+ CALLS: 1,
33
+ IMPORTS: 1,
34
+ EXTENDS: 1,
35
+ IMPLEMENTS: 1,
36
+ // Weak coupling
37
+ RE_EXPORTS: 0.5,
38
+ METHOD_OVERRIDES: 0.5,
39
+ METHOD_IMPLEMENTS: 0.5,
40
+ ACCESSES: 0.5,
41
+ QUERIES: 0.5,
42
+ FETCHES: 0.5,
43
+ HANDLES_ROUTE: 0.5,
44
+ HANDLES_TOOL: 0.5,
45
+ WRAPS: 0.5,
46
+ // Containment
47
+ CONTAINS: 0.25,
48
+ DEFINES: 0.25,
49
+ HAS_METHOD: 0.25,
50
+ HAS_PROPERTY: 0.25,
51
+ HAS_FIELD: 0.25,
52
+ MEMBER_OF: 0.25,
53
+ };
54
+ /**
55
+ * Read the clustering input from the committed canonical graph — the `edges`
56
+ * table this build has already written — rather than from any single phase's
57
+ * in-memory output.
58
+ *
59
+ * This is the whole point of the query: edges produced by the resolution
60
+ * phases (scope-resolution's resolved CALLS, bridge-resolver, wildcard
61
+ * synthesis, mro, routes/tools/orm) are inserted straight into the DB and
62
+ * never surface in `parse` or `cross-file` phase output. Clustering from those
63
+ * outputs therefore ran over a thinner graph than the one every other consumer
64
+ * queries. Reading the table means clustering sees exactly the edges the rest
65
+ * of the system sees — filtered to the families selected above.
66
+ *
67
+ * The phase runs inside the build's open transaction on the same connection,
68
+ * so it observes this build's writes.
69
+ */
70
+ export function loadClusteringEdges(db) {
71
+ const relations = Object.keys(CLUSTERING_RELATION_WEIGHTS);
72
+ const placeholders = relations.map(() => '?').join(',');
73
+ const rows = db
74
+ .prepare(`SELECT source_id, target_id, relation FROM edges WHERE relation IN (${placeholders})`)
75
+ .all(...relations);
76
+ return rows.map((r) => ({
77
+ sourceId: r.source_id,
78
+ targetId: r.target_id,
79
+ weight: CLUSTERING_RELATION_WEIGHTS[r.relation] ?? 0,
80
+ }));
81
+ }
82
+ /**
83
+ * Build the weighted clustering graph. Louvain reads the `weight` attribute.
84
+ *
85
+ * The projection is **undirected**: "do these two symbols belong in the same
86
+ * group" is a symmetric question, and modularity is defined over undirected
87
+ * connectivity. Clustering the directed graph made the family weights above
88
+ * inert — directed modularity would split a caller from its callee even when
89
+ * the call edge was the heaviest link between them. A multigraph is used so
90
+ * that parallel links between the same pair (e.g. a call in both directions,
91
+ * or a call plus an import) add up rather than being discarded.
92
+ */
93
+ function buildClusteringGraph(edges) {
94
+ const graph = new Graph({ multi: true, type: 'undirected' });
95
+ for (const edge of edges) {
96
+ graph.mergeNode(edge.sourceId);
97
+ graph.mergeNode(edge.targetId);
98
+ graph.addEdge(edge.sourceId, edge.targetId, { weight: edge.weight });
99
+ }
100
+ return graph;
101
+ }
4
102
  export function computeCohesion(communityId, memberships, edges) {
5
103
  const members = [...memberships.entries()].filter(([, c]) => c === communityId).map(([id]) => id);
6
104
  const n = members.length;
@@ -30,9 +128,18 @@ export function computeCohesion(communityId, memberships, edges) {
30
128
  * This replaces calling `computeCohesion` inside a loop, which was O(K*(N+E))
31
129
  * because each call re-scanned all memberships (O(N)) and all edges (O(E)).
32
130
  *
131
+ * The score is a structural measurement — the fraction of possible internal
132
+ * pairs that are actually connected by a selected edge — and nothing more. It
133
+ * is not a quality, health, or design-correctness judgment: a low score says
134
+ * the clustering grouped nodes that have few links *among the relation
135
+ * families listed in CLUSTERING_RELATION_WEIGHTS*, which can equally mean the
136
+ * coupling is real but expressed through a family this phase excludes.
137
+ *
33
138
  * @param memberships - nodeId → communityId map from the clustering step
34
- * @param edges - all edges used for the graph (IMPORTS + resolved)
35
- * @returns Map of communityId → cohesion score ∈ [0, 1]
139
+ * @param edges - the same selected edge set that was clustered (see
140
+ * `loadClusteringEdges`), so the score describes the graph that produced the
141
+ * communities rather than some other edge set
142
+ * @returns Map of communityId → internal-edge density ∈ [0, 1]
36
143
  */
37
144
  export function computeAllCohesionScores(memberships, edges) {
38
145
  // Single pass over memberships: build communityId → Set<nodeId>
@@ -78,17 +185,42 @@ export function computeAllCohesionScores(memberships, edges) {
78
185
  }
79
186
  return scores;
80
187
  }
188
+ /**
189
+ * Community detection over the committed canonical graph.
190
+ *
191
+ * What the output does and does not claim: communities here are the clusters
192
+ * a modularity-maximising algorithm (Leiden-style refinement over Louvain)
193
+ * finds in the weighted edge set defined by `CLUSTERING_RELATION_WEIGHTS`.
194
+ * They are a summary of *that* connectivity, and they have not been measured
195
+ * against package manifests, directory layout, or runtime deployment units —
196
+ * so a community is a candidate grouping to look at, not a verified
197
+ * architectural module or package boundary. Any consumer that presents these
198
+ * as architecture should say which basis it is using.
199
+ *
200
+ * `deps` lists every phase that writes a selected relation family into
201
+ * `edges`, so that the table is complete when this phase reads it. Adding a
202
+ * phase that emits a clustering relation means adding it here too.
203
+ */
81
204
  export const communitiesPhase = {
82
205
  name: 'communities',
83
- deps: ['parse', 'cross-file', 'mro'],
84
- async execute(ctx, deps) {
206
+ deps: [
207
+ 'parse',
208
+ 'cross-file',
209
+ 'mro',
210
+ 'routes',
211
+ 'tools',
212
+ 'orm',
213
+ 'import-resolver',
214
+ 'scope-resolution',
215
+ 'bridge-resolver',
216
+ 'wildcard-synthesis',
217
+ ],
218
+ async execute(ctx) {
85
219
  if (ctx.allFilesCached) {
86
220
  return { memberships: new Map(), communityLabels: new Map(), cohesionScores: new Map() };
87
221
  }
88
- const { resolvedEdges } = deps.get('cross-file');
89
- const { allEdges } = deps.get('parse');
90
- const allUsedEdges = [...allEdges, ...resolvedEdges];
91
- const graph = loadGraphFromEdges(allUsedEdges);
222
+ const allUsedEdges = loadClusteringEdges(ctx.db);
223
+ const graph = buildClusteringGraph(allUsedEdges);
92
224
  let communities = {};
93
225
  try {
94
226
  communities = leiden(graph, { seed: 42 });
@@ -1 +1 @@
1
- {"version":3,"file":"communities.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/communities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"communities.js","sourceRoot":"","sources":["../../../../src/pipeline/phases/communities.ts"],"names":[],"mappings":"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"}