Architecture

project-graph-mcp/
├── src/
│   ├── core/                    # Foundation
│   │   ├── parser.js            # AST parser (Acorn) + language routing
│   │   ├── graph-builder.js     # Minified graph + legend
│   │   ├── filters.js           # Exclude patterns, .gitignore
│   │   ├── workspace.js         # Path resolution + traversal protection
│   │   └── event-bus.js         # Tool call/result events for web UI
│   ├── analysis/                # Code quality analysis
│   │   ├── dead-code.js         # Unused code detection
│   │   ├── complexity.js        # Cyclomatic complexity
│   │   ├── similar-functions.js # Duplicate detection
│   │   ├── large-files.js       # File size analysis
│   │   ├── outdated-patterns.js # Legacy pattern detection
│   │   ├── full-analysis.js     # Health Score (0–100) + streaming + summary
│   │   ├── jsdoc-checker.js     # JSDoc ↔ AST consistency validator
│   │   ├── jsdoc-generator.js   # JSDoc template generation
│   │   ├── type-checker.js      # Optional tsc wrapper (async)
│   │   ├── undocumented.js      # Missing JSDoc finder
│   │   ├── custom-rules.js      # Configurable lint rules
│   │   ├── test-annotations.js  # .ctx.md test checklist parsing
│   │   ├── db-analysis.js       # SQL schema + table usage
│   │   └── analysis-cache.js    # Incremental cache (.context/.cache/)
│   ├── compact/                 # AI context compression
│   │   ├── compress.js          # Terser minification + export legend
│   │   ├── compact.js           # Project-wide compact/beautify (mangle: false)
│   │   ├── expand.js            # Decompile: name restoration from .ctx
│   │   ├── doc-dialect.js       # Doc Dialect (.context/ format)
│   │   ├── ctx-to-jsdoc.js      # .ctx → JSDoc injection + stripping
│   │   ├── ai-context.js        # AI boot aggregator
│   │   ├── mode-config.js       # Compact mode config (1/2/3/4)
│   │   ├── validate-pipeline.js # .ctx ↔ source contract validation
│   │   ├── framework-references.js # Framework-specific docs
│   │   └── instructions.js      # Agent guidelines
│   ├── lang/                    # Multi-language parsers
│   │   ├── lang-typescript.js   # TypeScript/TSX regex parser
│   │   ├── lang-python.js       # Python regex parser
│   │   ├── lang-go.js           # Go regex parser
│   │   ├── lang-sql.js          # SQL extraction (tables, columns)
│   │   └── lang-utils.js        # Shared: stripStringsAndComments
│   ├── cli/                     # CLI interface
│   │   ├── cli.js               # CLI entry point + help
│   │   └── cli-handlers.js      # CLI command handlers
│   ├── mcp/                     # MCP protocol
│   │   ├── mcp-server.js        # MCP server + response hints
│   │   ├── tool-defs.js         # MCP tool schemas (19 grouped tools)
│   │   └── tools.js             # Graph tools (skeleton, expand, deps)
│   └── network/                 # Server & networking
│       ├── server.js            # Entry point (CLI/MCP/Serve mode switch)
│       └── backend-lifecycle.js # Port file management + stdio proxy
├── rules/                       # Pre-built rule sets (JSON)
├── vendor/
│   ├── acorn.mjs                # AST parser (MIT, vendored)
│   ├── walk.mjs                 # AST walker (MIT, vendored)
│   └── terser.mjs               # JS minifier (BSD, vendored)
├── tests/
│   ├── parser.test.js           # AST parser + graph builder
│   ├── compact.test.js          # Compact/beautify, ctx-to-jsdoc
│   ├── roundtrip.test.js        # E2E roundtrip compiler tests
│   ├── graph-metadata.test.js   # Sidecar metadata schema tests
│   └── orm.test.js              # ORM/SQL test cases
└── docs/                        # Public documentation
    └── examples/                # AGENT_ROLE templates