# vtjvlad/dependra architecture

> Architecture diagram of the GitHub repository vtjvlad/dependra, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vtjvlad/dependra
- Repository: https://github.com/vtjvlad/dependra

## Overview

Dependra is a JavaScript project inspection and repair CLI. A user supplies a target file and options; CLI resolution builds an analysis context, the pipeline dispatches selected inspectors, optionally explains findings or proposes/applies reversible modifications, then formats a report. The inspector suite spans file facts, dependency/export analysis, validation, environment/runtime/command checks, visualization, metadata, and code quality. Evidence is strongest for the sampled orchestration and selected inspectors; several inspector implementations are unsampled, so their internal calls are not mapped.

Main entry points: [`src/cli/index.js`](https://github.com/vtjvlad/dependra/blob/main/src/cli/index.js) (CLI entry), [`src/core/pipeline.js`](https://github.com/vtjvlad/dependra/blob/main/src/core/pipeline.js) (Analysis pipeline), [`src/inspectors`](https://github.com/vtjvlad/dependra/tree/main/src/inspectors) (Inspector suite), [`src/parsers/load-source-file.js`](https://github.com/vtjvlad/dependra/blob/main/src/parsers/load-source-file.js) (JavaScript parsers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI and setup"]
  node_cli["CLI entry<br/>[index.js]"]
  node_args["CLI resolution<br/>[resolve-cli.js]"]
  node_config["Configuration<br/>[index.js]"]
  node_context["Analysis context<br/>[context.js]"]
  node_pipeline["Analysis pipeline<br/>[pipeline.js]"]
end

subgraph group_analysis["Inspection"]
  node_registry["Inspector registry<br/>[registry.js]"]
  node_inspectors["Inspector suite"]
  node_imports["Import/export analysis"]
  node_entities["Exported entities"]
  node_validation["Project validation<br/>[validation.js]"]
  node_quality["Code quality"]
  node_scan["Project scanning<br/>[scan-js-files.js]"]
  node_parsers["JavaScript parsers"]
end

subgraph group_assist["AI explanation"]
  node_ai["AI explanation<br/>[explain.js]"]
  node_airegistry["AI providers<br/>[registry.js]"]
end

subgraph group_repair["Modifications"]
  node_modifications["Modification pass<br/>[index.js]"]
  node_operations["Repair operations"]
  node_backup["Backup and undo<br/>[backup.js]"]
end

subgraph group_output["Reporting"]
  node_reporter["Report formatter<br/>[index.js]"]
end

node_user(("Engineer"))
node_filesystem[("Project files")]
node_terminal["Terminal output"]

node_user -->|"invokes"| node_cli
node_cli -->|"resolves options"| node_args
node_args -->|"loads configuration"| node_config
node_cli -->|"creates context"| node_context
node_cli -->|"runs analysis"| node_pipeline
node_cli -->|"registers inspectors"| node_registry
node_pipeline -->|"looks up inspectors"| node_registry
node_pipeline -->|"loads target"| node_parsers
node_registry -.->|"dispatches registered suite"| node_inspectors
node_inspectors -->|"includes analysis"| node_imports
node_inspectors -->|"includes analysis"| node_entities
node_inspectors -->|"includes validation"| node_validation
node_inspectors -->|"includes analysis"| node_quality
node_validation -->|"extracts imports"| node_imports
node_validation -->|"scans project files"| node_scan
node_imports -->|"parses source"| node_parsers
node_entities -->|"parses source"| node_parsers
node_quality -->|"parses source"| node_parsers
node_pipeline -->|"requests explanation"| node_ai
node_ai -->|"selects provider"| node_airegistry
node_pipeline -->|"runs requested repairs"| node_modifications
node_modifications -.->|"builds changes"| node_operations
node_modifications -->|"creates backups"| node_backup
node_modifications -->|"applies changes"| node_filesystem
node_parsers -.->|"reads source"| node_filesystem
node_cli -->|"formats report"| node_reporter
node_reporter -.->|"renders output"| node_terminal

click node_cli "https://github.com/vtjvlad/dependra/blob/main/src/cli/index.js"
click node_args "https://github.com/vtjvlad/dependra/blob/main/src/cli/resolve-cli.js"
click node_config "https://github.com/vtjvlad/dependra/blob/main/src/config/index.js"
click node_context "https://github.com/vtjvlad/dependra/blob/main/src/core/context.js"
click node_pipeline "https://github.com/vtjvlad/dependra/blob/main/src/core/pipeline.js"
click node_registry "https://github.com/vtjvlad/dependra/blob/main/src/core/registry.js"
click node_inspectors "https://github.com/vtjvlad/dependra/tree/main/src/inspectors"
click node_imports "https://github.com/vtjvlad/dependra/blob/main/src/inspectors/import-export-analysis.js"
click node_entities "https://github.com/vtjvlad/dependra/blob/main/src/inspectors/exported-entities.js"
click node_validation "https://github.com/vtjvlad/dependra/blob/main/src/inspectors/validation.js"
click node_quality "https://github.com/vtjvlad/dependra/blob/main/src/inspectors/code-quality-analysis.js"
click node_scan "https://github.com/vtjvlad/dependra/blob/main/src/inspectors/scan-js-files.js"
click node_parsers "https://github.com/vtjvlad/dependra/blob/main/src/parsers/load-source-file.js"
click node_ai "https://github.com/vtjvlad/dependra/blob/main/src/ai/explain.js"
click node_airegistry "https://github.com/vtjvlad/dependra/blob/main/src/ai/registry.js"
click node_modifications "https://github.com/vtjvlad/dependra/blob/main/src/modifications/index.js"
click node_operations "https://github.com/vtjvlad/dependra/tree/main/src/modifications/ops"
click node_backup "https://github.com/vtjvlad/dependra/blob/main/src/modifications/backup.js"
click node_reporter "https://github.com/vtjvlad/dependra/blob/main/src/reporters/index.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_args,node_config,node_context,node_pipeline toneBlue
class node_registry,node_inspectors,node_imports,node_entities,node_validation,node_quality,node_scan,node_parsers,node_filesystem toneAmber
class node_ai,node_airegistry toneMint
class node_modifications,node_operations,node_backup toneRose
class node_reporter,node_user,node_terminal toneIndigo
```

## Components

### CLI and setup

- [CLI entry](https://github.com/vtjvlad/dependra/blob/main/src/cli/index.js): `src/cli/index.js`
- [CLI resolution](https://github.com/vtjvlad/dependra/blob/main/src/cli/resolve-cli.js): `src/cli/resolve-cli.js`
- [Configuration](https://github.com/vtjvlad/dependra/blob/main/src/config/index.js): `src/config/index.js`
- [Analysis context](https://github.com/vtjvlad/dependra/blob/main/src/core/context.js): `src/core/context.js`
- [Analysis pipeline](https://github.com/vtjvlad/dependra/blob/main/src/core/pipeline.js): `src/core/pipeline.js`

### Inspection

- [Inspector registry](https://github.com/vtjvlad/dependra/blob/main/src/core/registry.js): `src/core/registry.js`
- [Inspector suite](https://github.com/vtjvlad/dependra/tree/main/src/inspectors): `src/inspectors`
- [Import/export analysis](https://github.com/vtjvlad/dependra/blob/main/src/inspectors/import-export-analysis.js): `src/inspectors/import-export-analysis.js`
- [Exported entities](https://github.com/vtjvlad/dependra/blob/main/src/inspectors/exported-entities.js): `src/inspectors/exported-entities.js`
- [Project validation](https://github.com/vtjvlad/dependra/blob/main/src/inspectors/validation.js): `src/inspectors/validation.js`
- [Code quality](https://github.com/vtjvlad/dependra/blob/main/src/inspectors/code-quality-analysis.js): `src/inspectors/code-quality-analysis.js`
- [Project scanning](https://github.com/vtjvlad/dependra/blob/main/src/inspectors/scan-js-files.js): `src/inspectors/scan-js-files.js`
- [JavaScript parsers](https://github.com/vtjvlad/dependra/blob/main/src/parsers/load-source-file.js): `src/parsers/load-source-file.js`

### AI explanation

- [AI explanation](https://github.com/vtjvlad/dependra/blob/main/src/ai/explain.js): `src/ai/explain.js`
- [AI providers](https://github.com/vtjvlad/dependra/blob/main/src/ai/registry.js): `src/ai/registry.js`

### Modifications

- [Modification pass](https://github.com/vtjvlad/dependra/blob/main/src/modifications/index.js): `src/modifications/index.js`
- [Repair operations](https://github.com/vtjvlad/dependra/tree/main/src/modifications/ops): `src/modifications/ops`
- [Backup and undo](https://github.com/vtjvlad/dependra/blob/main/src/modifications/backup.js): `src/modifications/backup.js`

### Reporting

- [Report formatter](https://github.com/vtjvlad/dependra/blob/main/src/reporters/index.js): `src/reporters/index.js`

### Other components

- **Engineer**
- **Project files**
- **Terminal output**

## Connections

- Engineer → CLI entry: invokes (evidence: `src/cli/index.js`)
- CLI entry → CLI resolution: resolves options (evidence: `src/cli/index.js`)
- CLI resolution → Configuration: loads configuration (evidence: `src/cli/resolve-cli.js`)
- CLI entry → Analysis context: creates context (evidence: `src/cli/index.js`)
- CLI entry → Analysis pipeline: runs analysis (evidence: `src/cli/index.js`)
- CLI entry → Inspector registry: registers inspectors
- Analysis pipeline → Inspector registry: looks up inspectors (evidence: `src/core/pipeline.js`)
- Analysis pipeline → JavaScript parsers: loads target (evidence: `src/core/pipeline.js`)
- Inspector registry → Inspector suite: dispatches registered suite (evidence: `src/inspectors/index.js`)
- Inspector suite → Import/export analysis: includes analysis (evidence: `src/inspectors/index.js`)
- Inspector suite → Exported entities: includes analysis (evidence: `src/inspectors/index.js`)
- Inspector suite → Project validation: includes validation (evidence: `src/inspectors/index.js`)
- Inspector suite → Code quality: includes analysis (evidence: `src/inspectors/index.js`)
- Project validation → Import/export analysis: extracts imports (evidence: `src/inspectors/validation.js`)
- Project validation → Project scanning: scans project files (evidence: `src/inspectors/validation.js`)
- Import/export analysis → JavaScript parsers: parses source (evidence: `src/inspectors/import-export-analysis.js`)
- Exported entities → JavaScript parsers: parses source (evidence: `src/inspectors/exported-entities.js`)
- Code quality → JavaScript parsers: parses source (evidence: `src/inspectors/code-quality-analysis.js`)
- Analysis pipeline → AI explanation: requests explanation (evidence: `src/core/pipeline.js`)
- AI explanation → AI providers: selects provider (evidence: `src/ai/explain.js`)
- Analysis pipeline → Modification pass: runs requested repairs (evidence: `src/core/pipeline.js`)
- Modification pass → Repair operations: builds changes (evidence: `src/modifications/index.js`)
- Modification pass → Backup and undo: creates backups (evidence: `src/modifications/index.js`)
- Modification pass → Project files: applies changes (evidence: `src/modifications/index.js`)
- JavaScript parsers → Project files: reads source
- CLI entry → Report formatter: formats report (evidence: `src/cli/index.js`)
- Report formatter → Terminal output: renders output (evidence: `src/reporters/index.js`)
