depwire-cli 0.9.28 → 0.9.30
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.
- package/README.md +225 -668
- package/dist/{chunk-VJLBOFCD.js → chunk-FUIZQCYB.js} +1 -1
- package/dist/{chunk-ITEGMPF7.js → chunk-WUSXCZXA.js} +2 -4
- package/dist/index.js +2 -2
- package/dist/mcpb-entry.js +2 -2
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,183 +1,93 @@
|
|
|
1
1
|
# Depwire
|
|
2
2
|
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/depwire-cli)
|
|
4
6
|
[](https://www.npmjs.com/package/depwire-cli)
|
|
5
|
-
[](https://registry.modelcontextprotocol.io/servers/io.github.atef-ataya/depwire)
|
|
8
|
+
[](https://glama.ai/mcp/servers/depwire/depwire)
|
|
9
|
+
[](LICENSE)
|
|
7
10
|
[](https://github.com/depwire/depwire/stargazers)
|
|
8
|
-
[](https://github.com/depwire/depwire/network/members)
|
|
9
|
-
|
|
10
|
-

|
|
11
|
-
|
|
12
|
-
**The missing context layer for AI coding assistants.**
|
|
13
|
-
|
|
14
|
-
Deterministic dependency graph. 17 MCP tools. Architecture health. What If simulation. Security scanner.
|
|
15
|
-
|
|
16
|
-
The context layer that turns vibe coding into software engineering.
|
|
17
|
-
|
|
18
|
-
⭐ **If Depwire helps you, please [star the repo](https://github.com/depwire/depwire)** — it helps this open-source project grow into an enterprise tool.
|
|
19
11
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- 🎨 **Beautiful arc diagram visualization** — Interactive Harrison Bible-style graphic
|
|
23
|
-
- 🤖 **MCP server for AI tools** — Cursor, Claude Desktop get full dependency context
|
|
24
|
-
- 📊 **Dependency health score** — 0-100 score across 6 dimensions (coupling, cohesion, circular deps, god files, orphans & dead code, depth)
|
|
25
|
-
- 📄 **Auto-generated documentation** — 13 comprehensive documents: architecture, conventions, dependencies, onboarding, file catalog, API surface, error patterns, test coverage, git history, full snapshot, TODO/FIXME inventory, health report, and dead code analysis
|
|
26
|
-
- 🔍 **Impact analysis** — "What breaks if I rename this function?" answered precisely
|
|
27
|
-
- 🧹 **Dead code detection** — Find symbols that are defined but never referenced, categorized by confidence level
|
|
28
|
-
- 👀 **Live updates** — Graph stays current as you edit code
|
|
29
|
-
- 🌍 **Multi-language** — TypeScript, JavaScript, Python, Go, Rust, and C
|
|
30
|
-
|
|
31
|
-
## Installation
|
|
32
|
-
|
|
33
|
-

|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npm install -g depwire-cli
|
|
37
|
-
```
|
|
12
|
+
</div>
|
|
38
13
|
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npx depwire-cli --help
|
|
42
|
-
```
|
|
14
|
+
**Your AI doesn't know your architecture. Depwire does.**
|
|
43
15
|
|
|
44
|
-
|
|
16
|
+
Depwire is the infrastructure layer between your AI coding assistant and your codebase. Before your AI touches a single file, Depwire has already mapped every connection, scored every risk, and simulated every change.
|
|
45
17
|
|
|
46
|
-
Depwire
|
|
18
|
+

|
|
47
19
|
|
|
48
|
-
|
|
20
|
+
⭐ If Depwire saves you from a broken build, [star the repo](https://github.com/depwire/depwire) — it helps this project grow.
|
|
49
21
|
|
|
50
|
-
|
|
22
|
+
---
|
|
51
23
|
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
export DEPWIRE_NO_TELEMETRY=1
|
|
55
|
-
```
|
|
24
|
+
## The problem
|
|
56
25
|
|
|
57
|
-
|
|
26
|
+
AI coding tools are getting smarter. But they still have a fundamental blind spot: they don't know your architecture before they touch it.
|
|
58
27
|
|
|
59
|
-
|
|
28
|
+
You ask Claude to delete a utility file. It deletes it cleanly. Confident. No warnings.
|
|
60
29
|
|
|
61
|
-
|
|
30
|
+
Then you run the build. 30 files broken.
|
|
62
31
|
|
|
63
|
-
|
|
64
|
-
# Auto-detects project root from current directory
|
|
65
|
-
depwire viz
|
|
66
|
-
depwire parse
|
|
67
|
-
depwire docs
|
|
68
|
-
depwire health
|
|
69
|
-
depwire dead-code
|
|
70
|
-
depwire temporal
|
|
71
|
-
depwire whatif
|
|
72
|
-
depwire security
|
|
32
|
+
Claude had no idea. It saw one file. It didn't see the 30 downstream consumers.
|
|
73
33
|
|
|
74
|
-
|
|
75
|
-
npx depwire-cli viz ./my-project
|
|
76
|
-
npx depwire-cli parse ./my-project
|
|
77
|
-
npx depwire-cli dead-code ./my-project
|
|
78
|
-
npx depwire-cli temporal ./my-project
|
|
34
|
+
This isn't a model problem. It's a context problem. The AI is flying blind.
|
|
79
35
|
|
|
80
|
-
|
|
81
|
-
npx depwire-cli temporal --commits 20 --strategy monthly --verbose --stats
|
|
36
|
+
---
|
|
82
37
|
|
|
83
|
-
|
|
84
|
-
npx depwire-cli parse --exclude "**/*.test.*" "**/node_modules/**"
|
|
38
|
+
## The infrastructure layer
|
|
85
39
|
|
|
86
|
-
|
|
87
|
-
npx depwire-cli parse --verbose
|
|
40
|
+

|
|
88
41
|
|
|
89
|
-
|
|
90
|
-
npx depwire-cli parse --pretty --stats
|
|
42
|
+
Depwire sits between your AI and your codebase. It builds a complete dependency graph using tree-sitter — deterministic, not probabilistic — and serves it to your AI through 17 MCP tools.
|
|
91
43
|
|
|
92
|
-
|
|
93
|
-
npx depwire-cli docs --verbose --stats
|
|
44
|
+
Four guarantees:
|
|
94
45
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
46
|
+
- **Local** — everything runs on your machine. No cloud parsing. No data sent anywhere.
|
|
47
|
+
- **Secure** — your code never leaves your machine. The security scanner requires no API key.
|
|
48
|
+
- **Token-efficient** — Depwire serves pre-computed graph data. Your AI gets surgical answers, not file dumps. 40% fewer tool calls. 56% fewer file reads.
|
|
49
|
+
- **Deterministic** — tree-sitter parses your code the same way every time. 100% accurate. Not a guess.
|
|
98
50
|
|
|
99
|
-
|
|
51
|
+
---
|
|
100
52
|
|
|
101
|
-
|
|
53
|
+
## Start here
|
|
102
54
|
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
"mcpServers": {
|
|
106
|
-
"depwire": {
|
|
107
|
-
"command": "npx",
|
|
108
|
-
"args": ["-y", "depwire-cli", "mcp"]
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
55
|
+
```bash
|
|
56
|
+
npm install -g depwire-cli
|
|
112
57
|
```
|
|
113
58
|
|
|
114
|
-
|
|
59
|
+
Three commands to understand any codebase:
|
|
115
60
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
61
|
+
```bash
|
|
62
|
+
depwire viz # open interactive arc diagram in browser
|
|
63
|
+
depwire whatif # simulate changes before touching code
|
|
64
|
+
depwire security # scan for vulnerabilities
|
|
119
65
|
```
|
|
120
66
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Settings → Features → Experimental → Enable MCP → Add Server:
|
|
124
|
-
- Command: `npx`
|
|
125
|
-
- Args: `-y depwire-cli mcp`
|
|
126
|
-
|
|
127
|
-
**Depwire auto-detects your project root from the current working directory.**
|
|
67
|
+
---
|
|
128
68
|
|
|
129
|
-
##
|
|
69
|
+
## What If simulation
|
|
130
70
|
|
|
131
|
-
|
|
132
|
-
|------|-------------|
|
|
133
|
-
| `connect_repo` | Connect to any local project or GitHub repo |
|
|
134
|
-
| `impact_analysis` | What breaks if you change a symbol? |
|
|
135
|
-
| `get_file_context` | Full context — imports, exports, dependents |
|
|
136
|
-
| `get_dependencies` | What does a symbol depend on? |
|
|
137
|
-
| `get_dependents` | What depends on this symbol? |
|
|
138
|
-
| `search_symbols` | Find symbols by name |
|
|
139
|
-
| `get_architecture_summary` | High-level project overview |
|
|
140
|
-
| `list_files` | List all files with stats |
|
|
141
|
-
| `get_symbol_info` | Look up any symbol's details |
|
|
142
|
-
| `visualize_graph` | Generate interactive arc diagram visualization |
|
|
143
|
-
| `get_project_docs` | Retrieve auto-generated codebase documentation |
|
|
144
|
-
| `update_project_docs` | Regenerate documentation on demand |
|
|
145
|
-
| `get_health_score` | Get 0-100 dependency health score with recommendations |
|
|
146
|
-
| `find_dead_code` | Find dead code — symbols defined but never referenced |
|
|
147
|
-
| `get_temporal_graph` | Show how the graph evolved over git history |
|
|
148
|
-
| `simulate_change` | Simulate a move/delete/rename/split/merge before touching code. Returns health score delta, broken imports, and affected nodes. Zero file I/O. |
|
|
149
|
-
| `security_scan` | Scan for security vulnerabilities with graph-aware severity elevation. No API key required. |
|
|
150
|
-
|
|
151
|
-
## SDK
|
|
152
|
-
|
|
153
|
-
depwire-cli exposes a public SDK for programmatic use:
|
|
71
|
+
Know the blast radius before you touch anything.
|
|
154
72
|
|
|
155
73
|
```bash
|
|
156
|
-
|
|
74
|
+
depwire whatif . --simulate delete --target src/utils/encode.ts
|
|
157
75
|
```
|
|
158
76
|
|
|
159
|
-
|
|
160
|
-
import {
|
|
161
|
-
parseProject,
|
|
162
|
-
buildGraph,
|
|
163
|
-
calculateHealthScore,
|
|
164
|
-
analyzeDeadCode,
|
|
165
|
-
generateDocs,
|
|
166
|
-
scanSecurity,
|
|
167
|
-
SimulationEngine,
|
|
168
|
-
searchSymbols,
|
|
169
|
-
getImpact,
|
|
170
|
-
getArchitectureSummary,
|
|
171
|
-
DepwireSDKVersion
|
|
172
|
-
} from 'depwire-cli/sdk';
|
|
173
|
-
```
|
|
77
|
+
Real output on [honojs/hono](https://github.com/honojs/hono) — 352 files, 6,245 symbols:
|
|
174
78
|
|
|
175
|
-
|
|
176
|
-
|
|
79
|
+
Health Score: 41 → 41 (+0 → unchanged)
|
|
80
|
+
Affected Nodes: 29
|
|
81
|
+
Broken Imports: 30
|
|
82
|
+
• src/utils/jwt/jwt.ts imports decodeBase64Url
|
|
83
|
+
• src/adapter/aws-lambda/handler.ts imports encodeBase64
|
|
84
|
+
• src/utils/basic-auth.ts imports decodeBase64
|
|
85
|
+
[27 more...]
|
|
86
|
+
Removed Edges: 32
|
|
177
87
|
|
|
178
|
-
|
|
88
|
+
Before touching a single file. Zero file I/O. Pure in-memory simulation.
|
|
179
89
|
|
|
180
|
-
|
|
90
|
+
Five operations:
|
|
181
91
|
|
|
182
92
|
```bash
|
|
183
93
|
depwire whatif . --simulate delete --target src/utils/encode.ts
|
|
@@ -187,633 +97,280 @@ depwire whatif . --simulate split --target src/services/auth.ts --symbols "valid
|
|
|
187
97
|
depwire whatif . --simulate merge --target src/utils/helpers.ts --merge-target src/utils/formatters.ts
|
|
188
98
|
```
|
|
189
99
|
|
|
190
|
-
|
|
191
|
-
|
|
100
|
+
Run without `--simulate` to open the browser UI — side-by-side arc diagrams showing current vs simulated state.
|
|
101
|
+
|
|
102
|
+
---
|
|
192
103
|
|
|
193
|
-
## Security
|
|
104
|
+
## Security scanner
|
|
194
105
|
|
|
195
|
-
|
|
106
|
+
AI-generated code ships vulnerabilities. Depwire catches them before they reach production.
|
|
196
107
|
|
|
197
108
|
```bash
|
|
198
|
-
depwire security .
|
|
199
|
-
depwire security . --target src/auth.ts
|
|
200
|
-
depwire security . --format sarif
|
|
201
|
-
depwire security . --fail-on high
|
|
202
|
-
depwire security . --class injection
|
|
109
|
+
depwire security . # full repo scan
|
|
110
|
+
depwire security . --target src/auth.ts # single file
|
|
111
|
+
depwire security . --format sarif # GitHub Security tab integration
|
|
112
|
+
depwire security . --fail-on high # CI gate — exit 1 if HIGH or above
|
|
113
|
+
depwire security . --class injection # specific check only
|
|
203
114
|
```
|
|
204
115
|
|
|
205
|
-
|
|
206
|
-
- Dependency CVEs (npm/pip/cargo/go audit)
|
|
207
|
-
- Shell injection + code injection
|
|
208
|
-
- Hardcoded secrets (API keys, passwords, private keys)
|
|
209
|
-
- Path traversal
|
|
210
|
-
- Auth bypass patterns
|
|
211
|
-
- Input validation gaps
|
|
212
|
-
- Information disclosure
|
|
213
|
-
- Cryptography weaknesses
|
|
214
|
-
- Frontend XSS (dangerouslySetInnerHTML, localStorage tokens)
|
|
215
|
-
- Architecture-level risks (graph-powered severity elevation)
|
|
216
|
-
|
|
217
|
-
Graph-aware severity: vulnerabilities reachable from MCP tools or HTTP routes are automatically elevated. Available as MCP tool `security_scan` and via `depwire-cli/sdk`.
|
|
116
|
+
Real output on honojs/hono:
|
|
218
117
|
|
|
219
|
-
|
|
118
|
+
6 Critical 19 High 14 Medium 1 Low
|
|
220
119
|
|
|
221
|
-
|
|
222
|
-
|---------|---------|----------------------------|---------------------|
|
|
223
|
-
| Logic | Deterministic Graph | Probabilistic Match | Brute Force Reading |
|
|
224
|
-
| Precision | 100% (Tree-sitter AST) | ~70% (Embedding match) | Varies — hallucination prone |
|
|
225
|
-
| Refactor Safety | High — traces full call chains | Low — misses indirect refs | Zero — blind edits |
|
|
226
|
-
| Token Cost | Ultra-low — surgical reads | High — context stuffing | Extreme — scans everything |
|
|
227
|
-
| Circular Detection | Built-in | Not possible | Occasional |
|
|
228
|
-
| What If Simulation | Before touching code | Not possible | Not possible |
|
|
229
|
-
| Architecture Health Score | 0-100 with dimensions | Not possible | Not possible |
|
|
230
|
-
|
|
231
|
-
## GitHub Action — PR Impact Analysis
|
|
232
|
-
|
|
233
|
-
Depwire integrates directly into your CI/CD pipeline via the [depwire-action](https://github.com/depwire/depwire-action) GitHub Action.
|
|
234
|
-
|
|
235
|
-
On every pull request, it automatically:
|
|
236
|
-
- Analyzes which symbols and files are affected by the changes
|
|
237
|
-
- Posts a dependency impact report as a PR comment
|
|
238
|
-
- Shows added, removed, and changed dependencies
|
|
239
|
-
- Helps reviewers understand the architectural blast radius before merging
|
|
240
|
-
|
|
241
|
-
### Usage
|
|
242
|
-
|
|
243
|
-
Add this to `.github/workflows/depwire.yml`:
|
|
244
|
-
```yaml
|
|
245
|
-
name: Depwire PR Impact
|
|
246
|
-
on:
|
|
247
|
-
pull_request:
|
|
248
|
-
branches: [main]
|
|
249
|
-
|
|
250
|
-
jobs:
|
|
251
|
-
impact:
|
|
252
|
-
runs-on: ubuntu-latest
|
|
253
|
-
steps:
|
|
254
|
-
- uses: actions/checkout@v4
|
|
255
|
-
with:
|
|
256
|
-
fetch-depth: 0
|
|
257
|
-
- uses: depwire/depwire-action@v1
|
|
258
|
-
with:
|
|
259
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
260
|
-
```
|
|
120
|
+
10 check categories — dependency CVEs, shell injection, hardcoded secrets, path traversal, auth bypass, input validation, information disclosure, cryptography weaknesses, frontend XSS, and architecture-level risks.
|
|
261
121
|
|
|
262
|
-
|
|
263
|
-
- [GitHub Marketplace](https://github.com/marketplace/actions/depwire-pr-impact)
|
|
264
|
-
- [depwire-action repository](https://github.com/depwire/depwire-action)
|
|
122
|
+
Graph-aware severity: a medium shell injection reachable from an MCP tool or HTTP route is automatically elevated to critical. This is what no generic SAST tool can replicate — Depwire knows your architecture, so it knows what's actually reachable.
|
|
265
123
|
|
|
266
|
-
|
|
124
|
+
Available as MCP tool `security_scan` and via `depwire-cli/sdk`.
|
|
267
125
|
|
|
268
|
-
|
|
269
|
-
|----------|-----------|----------|
|
|
270
|
-
| TypeScript | `.ts`, `.tsx` | Full support — imports, classes, interfaces, types |
|
|
271
|
-
| JavaScript | `.js`, `.jsx`, `.mjs`, `.cjs` | ES modules, CommonJS require(), JSX components |
|
|
272
|
-
| Python | `.py` | Imports, classes, decorators, inheritance |
|
|
273
|
-
| Go | `.go` | go.mod resolution, structs, interfaces, methods |
|
|
274
|
-
| Rust | `.rs` | Functions, structs, enums, traits, impl blocks, use declarations |
|
|
275
|
-
| C | `.c`, `.h` | Functions, structs, enums, typedefs, macros, #include directives |
|
|
126
|
+
---
|
|
276
127
|
|
|
277
128
|
## Visualization
|
|
278
129
|
|
|
279
|
-

|
|
130
|
+

|
|
282
131
|
|
|
283
132
|
```bash
|
|
284
|
-
# Auto-detects project root (run from anywhere in your project)
|
|
285
133
|
depwire viz
|
|
286
|
-
|
|
287
|
-
# Or specify a directory explicitly
|
|
288
|
-
depwire viz ./my-project
|
|
289
|
-
|
|
290
|
-
# Custom port
|
|
291
|
-
depwire viz --port 8080
|
|
292
|
-
|
|
293
|
-
# Exclude test files from visualization
|
|
294
|
-
depwire viz --exclude "**/*.test.*"
|
|
295
|
-
|
|
296
|
-
# Verbose mode with detailed parsing logs
|
|
297
|
-
depwire viz --verbose
|
|
298
|
-
|
|
299
|
-
# Don't auto-open browser
|
|
300
|
-
depwire viz --no-open
|
|
301
134
|
```
|
|
302
135
|
|
|
303
|
-
|
|
304
|
-
- Rainbow-colored arcs showing cross-file dependencies
|
|
305
|
-
- Hover to explore connections
|
|
306
|
-
- Click to filter by file
|
|
307
|
-
- Search by filename
|
|
308
|
-
- **Live refresh when files change** — Edit code and see the graph update in real-time
|
|
309
|
-
- Export as SVG or PNG
|
|
310
|
-
- **Port collision handling** — Automatically finds an available port if default is in use
|
|
136
|
+
Interactive arc diagram of your entire codebase. Every file, every connection, every dependency visible at once. Hover to inspect. Click to filter. Export as PNG or SVG.
|
|
311
137
|
|
|
312
|
-
|
|
138
|
+
---
|
|
313
139
|
|
|
314
|
-
|
|
140
|
+
## Temporal graph
|
|
315
141
|
|
|
316
|
-

|
|
317
143
|
|
|
318
144
|
```bash
|
|
319
|
-
# Auto-detects project root
|
|
320
145
|
depwire temporal
|
|
321
|
-
|
|
322
|
-
# Sample 20 commits with monthly snapshots
|
|
323
|
-
depwire temporal --commits 20 --strategy monthly
|
|
324
|
-
|
|
325
|
-
# Verbose mode with detailed progress
|
|
326
|
-
depwire temporal --verbose --stats
|
|
327
|
-
|
|
328
|
-
# Custom port
|
|
329
|
-
depwire temporal --port 3335
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
**Options:**
|
|
333
|
-
- `--commits <number>` — Number of commits to sample (default: 20)
|
|
334
|
-
- `--strategy <type>` — Sampling strategy: `even`, `weekly`, `monthly` (default: `even`)
|
|
335
|
-
- `-p, --port <number>` — Server port (default: 3334)
|
|
336
|
-
- `--output <path>` — Save snapshots to custom path (default: `.depwire/temporal/`)
|
|
337
|
-
- `--verbose` — Show progress for each commit being parsed
|
|
338
|
-
- `--stats` — Show summary statistics at end
|
|
339
|
-
|
|
340
|
-
Opens an interactive temporal visualization in your browser:
|
|
341
|
-
- Timeline slider showing all sampled commits
|
|
342
|
-
- Arc diagram morphing between snapshots
|
|
343
|
-
- Play/pause animation with speed controls (0.5×, 1×, 2×)
|
|
344
|
-
- Statistics panel with growth deltas
|
|
345
|
-
- Evolution chart tracking files/symbols/edges over time
|
|
346
|
-
- Auto-zoom to fit all arcs on snapshot change
|
|
347
|
-
- Search to highlight specific files across time
|
|
348
|
-
|
|
349
|
-
## 🪦 Dead Code Detection
|
|
350
|
-
|
|
351
|
-
Find unused symbols across your codebase before they become technical debt.
|
|
352
|
-
|
|
353
|
-
- Detects symbols with zero incoming references (never called, never imported)
|
|
354
|
-
- Confidence scoring: **high** (definitely dead), **medium** (probably dead), **low** (might be dead)
|
|
355
|
-
- Smart exclusion rules — ignores entry points, test files, barrel files, and config files to reduce false positives
|
|
356
|
-
- Filter by confidence level, export as JSON for CI pipelines
|
|
357
|
-
- Integrated into the health score (orphans dimension)
|
|
358
|
-
- New MCP tool: `find_dead_code` — AI assistants can query dead code directly
|
|
359
|
-
- New document generator: `DEAD_CODE.md` — auto-generated dead code report
|
|
360
|
-
|
|
361
|
-
```bash
|
|
362
|
-
depwire dead-code
|
|
363
|
-
depwire dead-code --confidence high
|
|
364
|
-
depwire dead-code --stats
|
|
365
|
-
depwire dead-code --json
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
**Confidence Levels:**
|
|
369
|
-
- 🔴 **High confidence (definitely dead)**: Not exported with zero references, or exported but never used
|
|
370
|
-
- 🟡 **Medium confidence (probably dead)**: Exported from barrel files with zero dependents, or only used in test files
|
|
371
|
-
- ⚪ **Low confidence (might be dead)**: Exported from package entry points, types with zero dependents, or in dynamic-use directories (routes, middleware, etc.)
|
|
372
|
-
|
|
373
|
-
The dead code detector automatically excludes:
|
|
374
|
-
- Entry point files (index.ts, main.ts, server.ts, etc.)
|
|
375
|
-
- Test files (*.test.*, *.spec.*, __tests__/)
|
|
376
|
-
- Config files (*.config.*)
|
|
377
|
-
- Type declarations (*.d.ts)
|
|
378
|
-
- Framework auto-loaded directories (pages/, routes/, middleware/, commands/)
|
|
379
|
-
|
|
380
|
-
## How It Works
|
|
381
|
-
|
|
382
|
-
1. **Parser** — tree-sitter extracts every symbol and reference
|
|
383
|
-
2. **Graph** — graphology builds an in-memory dependency graph
|
|
384
|
-
3. **MCP** — AI tools query the graph for context-aware answers
|
|
385
|
-
4. **Viz** — D3.js renders the graph as an interactive arc diagram
|
|
386
|
-
|
|
387
|
-
## CLI Reference
|
|
388
|
-
|
|
389
|
-
### `depwire parse [directory]`
|
|
390
|
-
|
|
391
|
-
Parse a project and export the dependency graph as JSON.
|
|
392
|
-
|
|
393
|
-
**Directory argument is optional** — Depwire auto-detects your project root by looking for `package.json`, `tsconfig.json`, `go.mod`, `pyproject.toml`, `setup.py`, or `.git`.
|
|
394
|
-
|
|
395
|
-
**Options:**
|
|
396
|
-
- `-o, --output <path>` — Output file path (default: `depwire-output.json`)
|
|
397
|
-
- `--exclude <patterns...>` — Glob patterns to exclude (e.g., `"**/*.test.*" "dist/**"`)
|
|
398
|
-
- `--verbose` — Show detailed parsing progress (logs each file as it's parsed)
|
|
399
|
-
- `--pretty` — Pretty-print JSON output with indentation
|
|
400
|
-
- `--stats` — Print summary statistics (file count, symbol count, edges, timing)
|
|
401
|
-
|
|
402
|
-
**Examples:**
|
|
403
|
-
```bash
|
|
404
|
-
# Auto-detect project root
|
|
405
|
-
depwire parse
|
|
406
|
-
|
|
407
|
-
# Explicit directory
|
|
408
|
-
depwire parse ./src
|
|
409
|
-
|
|
410
|
-
# Exclude test files and build outputs
|
|
411
|
-
depwire parse --exclude "**/*.test.*" "**/*.spec.*" "dist/**" "build/**"
|
|
412
|
-
|
|
413
|
-
# Full verbosity with stats
|
|
414
|
-
depwire parse --verbose --stats --pretty -o graph.json
|
|
415
146
|
```
|
|
416
147
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
Start visualization server and open arc diagram in browser.
|
|
420
|
-
|
|
421
|
-
**Directory argument is optional** — Auto-detects project root.
|
|
148
|
+
Watch your architecture evolve over git history. Timeline slider scrubs through commits — the arc diagram morphs as your codebase grew, coupled, and refactored. Nobody else does this.
|
|
422
149
|
|
|
423
|
-
|
|
424
|
-
- `--port <number>` — Port number (default: 3456, auto-increments if in use)
|
|
425
|
-
- `--exclude <patterns...>` — Glob patterns to exclude
|
|
426
|
-
- `--verbose` — Show detailed parsing progress
|
|
427
|
-
- `--no-open` — Don't automatically open browser
|
|
428
|
-
|
|
429
|
-
**Examples:**
|
|
430
|
-
```bash
|
|
431
|
-
# Auto-detect and visualize
|
|
432
|
-
depwire viz
|
|
150
|
+
---
|
|
433
151
|
|
|
434
|
-
|
|
435
|
-
depwire viz ./src
|
|
152
|
+
## All commands
|
|
436
153
|
|
|
437
|
-
|
|
438
|
-
|
|
154
|
+
| Command | Description |
|
|
155
|
+
|---------|-------------|
|
|
156
|
+
| `depwire viz` | Interactive arc diagram in browser |
|
|
157
|
+
| `depwire whatif` | Simulate changes before touching code |
|
|
158
|
+
| `depwire security` | Scan for vulnerabilities — graph-aware severity |
|
|
159
|
+
| `depwire health` | 0-100 architecture health score across 6 dimensions |
|
|
160
|
+
| `depwire dead-code` | Find unused symbols with confidence scoring |
|
|
161
|
+
| `depwire docs` | Generate 13 architecture documents |
|
|
162
|
+
| `depwire temporal` | Visualize architecture evolution over git history |
|
|
163
|
+
| `depwire parse` | Parse and export dependency graph as JSON |
|
|
164
|
+
| `depwire mcp` | Start MCP server for AI coding assistants |
|
|
439
165
|
|
|
440
|
-
|
|
441
|
-
depwire viz --exclude "**/*.test.*" --verbose
|
|
442
|
-
```
|
|
166
|
+
All commands auto-detect your project root. No path configuration needed.
|
|
443
167
|
|
|
444
|
-
|
|
168
|
+
---
|
|
445
169
|
|
|
446
|
-
|
|
170
|
+
## MCP server — AI integration
|
|
447
171
|
|
|
448
|
-
|
|
172
|
+
Connect Depwire to any MCP-compatible AI tool. Your AI gets 17 tools it can call autonomously.
|
|
449
173
|
|
|
450
|
-
**
|
|
451
|
-
```bash
|
|
452
|
-
# Auto-detect and connect (recommended)
|
|
453
|
-
depwire mcp
|
|
174
|
+
**Claude Desktop** — add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
454
175
|
|
|
455
|
-
|
|
456
|
-
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"mcpServers": {
|
|
179
|
+
"depwire": {
|
|
180
|
+
"command": "npx",
|
|
181
|
+
"args": ["-y", "depwire-cli", "mcp"]
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
457
185
|
```
|
|
458
186
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
**Directory argument is optional** — Auto-detects project root.
|
|
464
|
-
|
|
465
|
-
**Options:**
|
|
466
|
-
- `--output <path>` — Output directory (default: `.depwire/` inside project)
|
|
467
|
-
- `--format <type>` — Output format: `markdown` or `json` (default: `markdown`)
|
|
468
|
-
- `--include <docs...>` — Comma-separated list of docs to generate (default: `all`)
|
|
469
|
-
- Values: `architecture`, `conventions`, `dependencies`, `onboarding`, `files`, `api_surface`, `errors`, `tests`, `history`, `current`, `status`, `health`, `all`
|
|
470
|
-
- `--update` — Regenerate existing documentation
|
|
471
|
-
- `--only <docs...>` — Used with `--update`, regenerate only specific docs
|
|
472
|
-
- `--verbose` — Show generation progress
|
|
473
|
-
- `--stats` — Show generation statistics
|
|
474
|
-
- `--gitignore` — Add `.depwire/` to `.gitignore` automatically
|
|
475
|
-
- `--no-gitignore` — Don't modify `.gitignore`
|
|
476
|
-
|
|
477
|
-
**Examples:**
|
|
478
|
-
```bash
|
|
479
|
-
# Auto-detect and generate all docs
|
|
480
|
-
depwire docs
|
|
481
|
-
|
|
482
|
-
# Explicit directory
|
|
483
|
-
depwire docs ./my-project
|
|
484
|
-
|
|
485
|
-
# Show generation progress and stats
|
|
486
|
-
depwire docs --verbose --stats
|
|
487
|
-
|
|
488
|
-
# Regenerate existing docs
|
|
489
|
-
depwire docs --update
|
|
490
|
-
|
|
491
|
-
# Generate specific docs only
|
|
492
|
-
depwire docs --include architecture,dependencies
|
|
493
|
-
|
|
494
|
-
# Custom output directory
|
|
495
|
-
depwire docs --output ./docs
|
|
496
|
-
|
|
497
|
-
# Regenerate only conventions doc
|
|
498
|
-
depwire docs --update --only conventions
|
|
499
|
-
```
|
|
187
|
+
**Cursor** — Settings → Features → Experimental → Enable MCP → Add Server:
|
|
188
|
+
- Command: `npx`
|
|
189
|
+
- Args: `-y depwire-cli mcp`
|
|
500
190
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
| Document | What It Contains |
|
|
504
|
-
|----------|------------------|
|
|
505
|
-
| `ARCHITECTURE.md` | Module structure, entry points, hub files, layer analysis, circular dependencies |
|
|
506
|
-
| `CONVENTIONS.md` | Naming patterns, import/export style, detected design patterns |
|
|
507
|
-
| `DEPENDENCIES.md` | Module dependency matrix, high-impact symbols, longest dependency chains |
|
|
508
|
-
| `ONBOARDING.md` | Reading order (Foundation/Core/Entry Points), module map, key concepts, high-impact file warnings |
|
|
509
|
-
| `FILES.md` | Complete file catalog with stats, orphan files, hub files |
|
|
510
|
-
| `API_SURFACE.md` | All exported symbols (public API), most-used exports, unused exports |
|
|
511
|
-
| `ERRORS.md` | Error handling patterns, error-prone files, custom error classes |
|
|
512
|
-
| `TESTS.md` | Test file inventory, test-to-source mapping, untested files |
|
|
513
|
-
| `HISTORY.md` | Git history + graph analysis, file churn, feature timeline |
|
|
514
|
-
| `CURRENT.md` | Complete codebase snapshot (every file, symbol, connection) |
|
|
515
|
-
| `STATUS.md` | TODO/FIXME/HACK inventory with priority matrix |
|
|
516
|
-
| `HEALTH.md` | Dependency health score (0-100) across 6 dimensions with recommendations |
|
|
517
|
-
| `DEAD_CODE.md` | Unused symbols by confidence level (high/medium/low) with smart exclusions |
|
|
518
|
-
|
|
519
|
-
Documents are stored in `.depwire/` with `metadata.json` tracking generation timestamps for staleness detection.
|
|
520
|
-
|
|
521
|
-
### `depwire health [directory]`
|
|
522
|
-
|
|
523
|
-
Analyze dependency architecture health and get a 0-100 score across 6 quality dimensions.
|
|
524
|
-
|
|
525
|
-
**Directory argument is optional** — Auto-detects project root.
|
|
526
|
-
|
|
527
|
-
**Options:**
|
|
528
|
-
- `--json` — Output as JSON (for CI/automation)
|
|
529
|
-
- `--verbose` — Show detailed per-dimension breakdown
|
|
530
|
-
|
|
531
|
-
**Dimensions Measured:**
|
|
532
|
-
1. **Coupling (25%)** — How tightly connected are modules? Lower coupling = easier changes
|
|
533
|
-
2. **Cohesion (20%)** — Do files in the same directory relate? Higher cohesion = better organization
|
|
534
|
-
3. **Circular Dependencies (20%)** — Files depending on each other in cycles
|
|
535
|
-
4. **God Files (15%)** — Files with abnormally high connection counts
|
|
536
|
-
5. **Orphan Files (10%)** — Files with zero connections (dead code?)
|
|
537
|
-
6. **Dependency Depth (10%)** — How deep are the dependency chains?
|
|
538
|
-
|
|
539
|
-
**Examples:**
|
|
540
|
-
```bash
|
|
541
|
-
# Auto-detect and analyze
|
|
542
|
-
depwire health
|
|
191
|
+

|
|
543
192
|
|
|
544
|
-
|
|
545
|
-
depwire health ./my-project
|
|
193
|
+
### 17 MCP tools
|
|
546
194
|
|
|
547
|
-
|
|
548
|
-
|
|
195
|
+
| Tool | Description |
|
|
196
|
+
|------|-------------|
|
|
197
|
+
| `connect_repo` | Connect to any local project or GitHub repo |
|
|
198
|
+
| `get_architecture_summary` | High-level project overview |
|
|
199
|
+
| `get_file_context` | Full context — imports, exports, dependents. Includes cross-language connections. |
|
|
200
|
+
| `get_dependencies` | What does a symbol depend on? |
|
|
201
|
+
| `get_dependents` | What depends on this symbol? |
|
|
202
|
+
| `get_symbol_info` | Look up any symbol's details |
|
|
203
|
+
| `search_symbols` | Find symbols by name across the codebase |
|
|
204
|
+
| `list_files` | List all files with stats |
|
|
205
|
+
| `impact_analysis` | What breaks if you change a symbol? Cross-language edges included. |
|
|
206
|
+
| `visualize_graph` | Generate interactive arc diagram |
|
|
207
|
+
| `get_health_score` | 0-100 health score with recommendations |
|
|
208
|
+
| `find_dead_code` | Symbols defined but never referenced |
|
|
209
|
+
| `get_project_docs` | Retrieve auto-generated codebase documentation |
|
|
210
|
+
| `update_project_docs` | Regenerate documentation on demand |
|
|
211
|
+
| `get_temporal_graph` | Architecture evolution over git history |
|
|
212
|
+
| `simulate_change` | Simulate move/delete/rename/split/merge before touching code. Returns health delta, broken imports, affected nodes. Cross-language edges included. |
|
|
213
|
+
| `security_scan` | Scan for vulnerabilities with graph-aware severity elevation. No API key required. |
|
|
549
214
|
|
|
550
|
-
|
|
551
|
-
depwire health --json
|
|
552
|
-
```
|
|
215
|
+
---
|
|
553
216
|
|
|
554
|
-
|
|
555
|
-
- Overall score (0-100) with letter grade (A-F)
|
|
556
|
-
- Per-dimension scores and grades
|
|
557
|
-
- Actionable recommendations
|
|
558
|
-
- Trend indicator (↑/↓ from last check)
|
|
217
|
+
## Cross-language edge detection
|
|
559
218
|
|
|
560
|
-
|
|
219
|
+
Depwire detects connections between files written in different languages.
|
|
561
220
|
|
|
562
|
-
|
|
221
|
+
A TypeScript `fetch('/api/users')` call matched to a Python `@app.get('/api/users')` route definition — that's a cross-language edge. Delete the Python route and Depwire shows the TypeScript callers as broken.
|
|
563
222
|
|
|
564
|
-
|
|
223
|
+
Supported patterns:
|
|
224
|
+
- REST API edges — fetch/axios calls matched to Express, FastAPI, Flask, Gin route definitions
|
|
225
|
+
- Subprocess edges — execSync/subprocess.run calls matched to target files in the graph
|
|
565
226
|
|
|
566
|
-
|
|
227
|
+
These edges flow through every existing feature: What If simulation, impact analysis, security scanner, and arc diagram visualization.
|
|
567
228
|
|
|
568
|
-
|
|
569
|
-
- `--confidence <level>` — Minimum confidence level to show: `high`, `medium`, `low` (default: `medium`)
|
|
570
|
-
- `--include-low` — Shortcut for `--confidence low`
|
|
571
|
-
- `--verbose` — Show detailed info for each dead symbol (file, line, kind, reason)
|
|
572
|
-
- `--stats` — Show summary statistics
|
|
573
|
-
- `--include-tests` — Include test files in analysis (excluded by default)
|
|
574
|
-
- `--json` — Output as JSON for CI/automation
|
|
229
|
+
---
|
|
575
230
|
|
|
576
|
-
|
|
577
|
-
- 🔴 **High confidence (definitely dead)**: Not exported with zero references, or exported but never used
|
|
578
|
-
- 🟡 **Medium confidence (probably dead)**: Exported from barrel files with zero dependents, or only used in test files
|
|
579
|
-
- ⚪ **Low confidence (might be dead)**: Exported from package entry points, types with zero dependents, or in dynamic-use directories (routes, middleware, etc.)
|
|
231
|
+
## Architecture health score
|
|
580
232
|
|
|
581
|
-
**Examples:**
|
|
582
233
|
```bash
|
|
583
|
-
|
|
584
|
-
depwire dead-code
|
|
585
|
-
|
|
586
|
-
# Show only high-confidence dead code
|
|
587
|
-
depwire dead-code --confidence high
|
|
588
|
-
|
|
589
|
-
# Show all potential dead code (including low confidence)
|
|
590
|
-
depwire dead-code --confidence low
|
|
591
|
-
# Or use shortcut
|
|
592
|
-
depwire dead-code --include-low
|
|
593
|
-
|
|
594
|
-
# Detailed analysis with reasons and statistics
|
|
595
|
-
depwire dead-code --verbose --stats
|
|
596
|
-
|
|
597
|
-
# Include test files in analysis (excluded by default)
|
|
598
|
-
depwire dead-code --include-tests
|
|
599
|
-
|
|
600
|
-
# JSON output for CI/automation
|
|
601
|
-
depwire dead-code --json
|
|
234
|
+
depwire health .
|
|
602
235
|
```
|
|
603
236
|
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
237
|
+
Overall: 68/100 (Grade: D)
|
|
238
|
+
Coupling 70 C
|
|
239
|
+
Cohesion 80 B
|
|
240
|
+
Circular Dependencies 100 A
|
|
241
|
+
God Files 40 F
|
|
242
|
+
Orphans & Dead Code 20 F
|
|
243
|
+
Dependency Depth 60 D
|
|
611
244
|
|
|
612
|
-
|
|
245
|
+
6 dimensions. Letter grades. Actionable recommendations. Trend tracking across runs.
|
|
613
246
|
|
|
614
|
-
|
|
247
|
+
---
|
|
615
248
|
|
|
616
|
-
|
|
249
|
+
## SDK
|
|
617
250
|
|
|
618
|
-
|
|
619
|
-
- `--commits <number>` — Number of commits to sample (default: 20)
|
|
620
|
-
- `--strategy <type>` — Sampling strategy: `even` (every Nth), `weekly`, `monthly` (default: `even`)
|
|
621
|
-
- `-p, --port <number>` — Server port (default: 3334)
|
|
622
|
-
- `--output <path>` — Save snapshots to custom path (default: `.depwire/temporal/`)
|
|
623
|
-
- `--verbose` — Show progress for each commit being parsed
|
|
624
|
-
- `--stats` — Show summary statistics at end
|
|
251
|
+
Depwire exposes a stable public API for programmatic use and CI pipelines:
|
|
625
252
|
|
|
626
|
-
**Examples:**
|
|
627
253
|
```bash
|
|
628
|
-
|
|
629
|
-
depwire temporal
|
|
630
|
-
|
|
631
|
-
# Sample 50 commits with monthly snapshots
|
|
632
|
-
depwire temporal --commits 50 --strategy monthly
|
|
633
|
-
|
|
634
|
-
# Verbose mode with stats
|
|
635
|
-
depwire temporal --verbose --stats
|
|
636
|
-
|
|
637
|
-
# Custom output directory
|
|
638
|
-
depwire temporal --output ./temp-snapshots
|
|
254
|
+
npm install depwire-cli
|
|
639
255
|
```
|
|
640
256
|
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
**Options:**
|
|
657
|
-
- `--simulate <action>` — Action to simulate: `move`, `delete`, `rename`, `split`, `merge`
|
|
658
|
-
- `--target <file>` — File to apply the action to
|
|
659
|
-
- `--destination <file>` — Destination path (for move action)
|
|
660
|
-
- `--new-name <name>` — New name (for rename action)
|
|
661
|
-
- `--source <file>` — Source file (for merge action)
|
|
662
|
-
- `--new-file <file>` — New file path (for split action)
|
|
663
|
-
- `--symbols <symbols>` — Comma-separated symbol names (for split action)
|
|
664
|
-
|
|
665
|
-
**Examples:**
|
|
666
|
-
```bash
|
|
667
|
-
# What breaks if I delete this file?
|
|
668
|
-
depwire whatif --simulate delete --target src/auth/service.ts
|
|
669
|
-
|
|
670
|
-
# What happens if I move this module?
|
|
671
|
-
depwire whatif --simulate move --target src/utils.ts --destination src/core/utils.ts
|
|
672
|
-
|
|
673
|
-
# Rename a file
|
|
674
|
-
depwire whatif --simulate rename --target src/router.ts --new-name routes.ts
|
|
675
|
-
|
|
676
|
-
# Split symbols into a new file
|
|
677
|
-
depwire whatif --simulate split --target src/utils.ts --new-file src/helpers.ts --symbols "formatDate,parseUrl"
|
|
678
|
-
|
|
679
|
-
# Merge two files
|
|
680
|
-
depwire whatif --simulate merge --target src/auth.ts --source src/login.ts
|
|
257
|
+
```typescript
|
|
258
|
+
import {
|
|
259
|
+
parseProject,
|
|
260
|
+
buildGraph,
|
|
261
|
+
calculateHealthScore,
|
|
262
|
+
analyzeDeadCode,
|
|
263
|
+
generateDocs,
|
|
264
|
+
scanSecurity,
|
|
265
|
+
SimulationEngine,
|
|
266
|
+
detectCrossLanguageEdges,
|
|
267
|
+
searchSymbols,
|
|
268
|
+
getImpact,
|
|
269
|
+
getArchitectureSummary,
|
|
270
|
+
DepwireSDKVersion
|
|
271
|
+
} from 'depwire-cli/sdk';
|
|
681
272
|
```
|
|
682
273
|
|
|
683
|
-
|
|
684
|
-
- Health score delta (before/after with improvement indicator)
|
|
685
|
-
- Broken imports with file and symbol details
|
|
686
|
-
- Affected nodes count
|
|
687
|
-
- Circular dependencies introduced or resolved
|
|
688
|
-
- Added and removed edge counts
|
|
689
|
-
|
|
690
|
-
### Error Handling
|
|
274
|
+
The SDK is the stable public API surface. All integrations should import from `depwire-cli/sdk` — never from internal paths.
|
|
691
275
|
|
|
692
|
-
|
|
693
|
-
- **Malformed files** — Skipped with warning, parsing continues
|
|
694
|
-
- **Large files** — Files over 1MB are automatically skipped
|
|
695
|
-
- **Port collisions** — Auto-increments to next available port (3456 → 3457 → 3458...)
|
|
696
|
-
- **Protected paths** — Blocks access to sensitive directories (.ssh, .aws, /etc)
|
|
276
|
+
---
|
|
697
277
|
|
|
278
|
+
## Why Depwire
|
|
698
279
|
|
|
699
|
-
|
|
280
|
+
| | Depwire | RAG-based tools | LLM scanning |
|
|
281
|
+
|--|---------|-----------------|--------------|
|
|
282
|
+
| Approach | Deterministic graph | Probabilistic match | Brute force |
|
|
283
|
+
| Accuracy | 100% — tree-sitter AST | ~70% — embedding match | Varies |
|
|
284
|
+
| Refactor safety | Full call chain tracing | Misses indirect refs | Blind edits |
|
|
285
|
+
| Token cost | Ultra-low — surgical reads | High — context stuffing | Extreme |
|
|
286
|
+
| Cross-language | REST + subprocess edges | None | None |
|
|
287
|
+
| Security scanner | Graph-aware severity | None | None |
|
|
288
|
+
| What If simulation | Before touching code | None | None |
|
|
289
|
+
| Runs locally | Always | Varies | Never |
|
|
700
290
|
|
|
701
|
-
|
|
291
|
+
---
|
|
702
292
|
|
|
703
|
-
|
|
293
|
+
## Language support
|
|
704
294
|
|
|
705
|
-
|
|
706
|
-
# In Claude Desktop or Cursor with Depwire MCP:
|
|
295
|
+
TypeScript, JavaScript, Python, Go, Rust, C — with cross-language edge detection between all supported languages.
|
|
707
296
|
|
|
708
|
-
|
|
297
|
+
C# / .NET support coming in v1.1.
|
|
709
298
|
|
|
710
|
-
|
|
711
|
-
# - All files that import UserService
|
|
712
|
-
# - All call sites
|
|
713
|
-
# - All type references
|
|
714
|
-
# - Suggested find-and-replace strategy
|
|
715
|
-
```
|
|
299
|
+
---
|
|
716
300
|
|
|
717
|
-
|
|
301
|
+
## Cloud dashboard
|
|
718
302
|
|
|
719
|
-
|
|
720
|
-
"Show me the architecture summary"
|
|
303
|
+
[app.depwire.dev](https://app.depwire.dev) — full dependency graph, health score, dead code report, and AI codebase chat in the browser. No local setup required.
|
|
721
304
|
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
# - Module/package structure
|
|
725
|
-
# - Most-connected files (architectural hubs)
|
|
726
|
-
# - Entry points
|
|
727
|
-
```
|
|
305
|
+
- Free for public repos
|
|
306
|
+
- Pro ($19/month) — unlimited repos, private repo support, AI codebase chat
|
|
728
307
|
|
|
729
|
-
|
|
308
|
+
---
|
|
730
309
|
|
|
731
|
-
|
|
732
|
-
# Check what your changes affect before committing
|
|
733
|
-
depwire viz
|
|
734
|
-
# Review the arc diagram — red arcs show files you touched
|
|
735
|
-
```
|
|
736
|
-
|
|
737
|
-
## Security
|
|
738
|
-
|
|
739
|
-
Depwire is **read-only** — it never writes to, modifies, or executes your code.
|
|
310
|
+
## Roadmap
|
|
740
311
|
|
|
741
|
-
|
|
312
|
+
**Shipped**
|
|
313
|
+
- Arc diagram visualization
|
|
314
|
+
- 17 MCP tools
|
|
315
|
+
- Multi-language support (TypeScript, JavaScript, Python, Go, Rust, C)
|
|
316
|
+
- Architecture health score
|
|
317
|
+
- Dead code detection
|
|
318
|
+
- Temporal graph
|
|
319
|
+
- What If simulation — CLI + browser UI
|
|
320
|
+
- Security scanner — graph-aware severity elevation
|
|
321
|
+
- Cross-language edge detection — REST API + subprocess
|
|
322
|
+
- Public SDK — `depwire-cli/sdk`
|
|
323
|
+
- Cloud dashboard — app.depwire.dev
|
|
324
|
+
- PR Impact GitHub Action
|
|
325
|
+
|
|
326
|
+
**Coming next**
|
|
327
|
+
- C# / .NET language support
|
|
328
|
+
- AI-suggested refactors
|
|
329
|
+
- VSCode extension
|
|
330
|
+
- Natural language architecture queries
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Security posture
|
|
335
|
+
|
|
336
|
+
Depwire is read-only. It never writes to, modifies, or executes your code.
|
|
337
|
+
|
|
338
|
+
- Parses with tree-sitter — the same parser used by VS Code and Zed
|
|
742
339
|
- Visualization server binds to localhost only
|
|
743
|
-
- No data leaves your machine
|
|
744
|
-
- Blocks access to sensitive system directories
|
|
340
|
+
- No data leaves your machine
|
|
341
|
+
- Blocks access to sensitive system directories
|
|
745
342
|
- npm packages published with provenance verification
|
|
746
343
|
|
|
747
344
|
See [SECURITY.md](SECURITY.md) for full details.
|
|
748
345
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
### ✅ Shipped
|
|
752
|
-
- [x] Arc diagram visualization
|
|
753
|
-
- [x] MCP server (17 tools)
|
|
754
|
-
- [x] Multi-language support (TypeScript, JavaScript, Python, Go, Rust, C)
|
|
755
|
-
- [x] File watching + live refresh
|
|
756
|
-
- [x] Auto-generated documentation (13 documents)
|
|
757
|
-
- [x] Dependency health score (0-100)
|
|
758
|
-
- [x] Dead code detection with confidence scoring
|
|
759
|
-
- [x] Temporal graph — watch your architecture evolve over git history
|
|
760
|
-
- [x] PR Impact GitHub Action (depwire-action v1.0.0)
|
|
761
|
-
- [x] Auto-detect project root (no path needed)
|
|
762
|
-
- [x] WASM migration (Windows support)
|
|
763
|
-
- [x] Cloud dashboard — [app.depwire.dev](https://app.depwire.dev)
|
|
764
|
-
- [x] What If simulation — simulate refactors before touching code
|
|
765
|
-
- [x] Security scanner — deterministic vulnerability detection with graph-aware severity
|
|
766
|
-
|
|
767
|
-
### Coming Next
|
|
768
|
-
- [ ] New language support (Java, C++, Ruby — community requested)
|
|
769
|
-
- [ ] Cross-language edge detection (API routes ↔ frontend calls)
|
|
770
|
-
- [ ] AI-suggested refactors
|
|
771
|
-
- [ ] Natural language architecture queries
|
|
772
|
-
- [ ] VSCode extension
|
|
773
|
-
|
|
774
|
-
## Cloud Dashboard
|
|
775
|
-
|
|
776
|
-
Prefer a browser interface? [app.depwire.dev](https://app.depwire.dev) gives you the full dependency graph, health score, dead code report, and AI codebase chat — without any local setup. Free tier available.
|
|
777
|
-
|
|
778
|
-
- **Free** for public repos
|
|
779
|
-
- **Pro** ($19/month) — unlimited repos + private repo support
|
|
346
|
+
---
|
|
780
347
|
|
|
781
348
|
## Contributing
|
|
782
349
|
|
|
783
|
-
Contributions welcome! Please note:
|
|
784
|
-
|
|
785
350
|
1. Fork the repository
|
|
786
351
|
2. Create a feature branch
|
|
787
352
|
3. Add tests for new functionality
|
|
788
353
|
4. Submit a pull request
|
|
789
354
|
5. Sign the CLA (handled automatically on your first PR)
|
|
790
355
|
|
|
791
|
-
|
|
356
|
+
---
|
|
792
357
|
|
|
793
358
|
## Author
|
|
794
359
|
|
|
795
360
|
**Atef Ataya** — AI architect, author, and creator of Depwire.
|
|
796
361
|
|
|
797
|
-
-
|
|
798
|
-
-
|
|
799
|
-
-
|
|
362
|
+
- [YouTube](https://www.youtube.com/@atefataya) — 600K+ subscribers covering AI agents, MCP, and LLMs
|
|
363
|
+
- [The Architect's Playbook: 5 Pillars](https://www.amazon.com/dp/B0GCHNW2W8)
|
|
364
|
+
- [LinkedIn](https://www.linkedin.com/in/atefataya/)
|
|
800
365
|
|
|
801
|
-
|
|
366
|
+
---
|
|
802
367
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
- **Use it freely** for personal projects, internal company use, and development
|
|
806
|
-
- **Cannot** be offered as a hosted/managed service to third parties
|
|
807
|
-
- **Converts** to Apache 2.0 on February 25, 2029
|
|
368
|
+
## License
|
|
808
369
|
|
|
809
|
-
|
|
370
|
+
[Business Source License 1.1](LICENSE) — free for personal and internal company use. Converts to Apache 2.0 on February 25, 2029.
|
|
810
371
|
|
|
811
|
-
|
|
372
|
+
Commercial licensing: atef@depwire.dev
|
|
812
373
|
|
|
813
|
-
|
|
374
|
+
---
|
|
814
375
|
|
|
815
|
-
|
|
816
|
-
- [tree-sitter](https://tree-sitter.github.io/tree-sitter/) — Fast, reliable parsing
|
|
817
|
-
- [graphology](https://graphology.github.io/) — Powerful graph data structure
|
|
818
|
-
- [D3.js](https://d3js.org/) — Data visualization
|
|
819
|
-
- [Model Context Protocol](https://modelcontextprotocol.io/) — AI tool integration
|
|
376
|
+
Built with [tree-sitter](https://tree-sitter.github.io/tree-sitter/), [graphology](https://graphology.github.io/), [D3.js](https://d3js.org/), and the [Model Context Protocol](https://modelcontextprotocol.io/).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/utils/files.ts
|
|
2
|
-
import { readdirSync, statSync, existsSync, lstatSync } from "fs";
|
|
2
|
+
import { readdirSync, statSync, existsSync, lstatSync, realpathSync } from "fs";
|
|
3
3
|
import { join, relative } from "path";
|
|
4
4
|
import os from "os";
|
|
5
5
|
function scanDirectory(rootDir, baseDir = rootDir) {
|
|
@@ -50,6 +50,7 @@ function fileExists(filePath) {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
function findProjectRoot(startDir = process.cwd()) {
|
|
53
|
+
startDir = realpathSync(startDir);
|
|
53
54
|
const projectMarkers = [
|
|
54
55
|
"package.json",
|
|
55
56
|
// Node.js
|
|
@@ -79,9 +80,6 @@ function findProjectRoot(startDir = process.cwd()) {
|
|
|
79
80
|
let depth = 0;
|
|
80
81
|
const home = os.homedir();
|
|
81
82
|
while (currentDir !== rootDir && depth < maxDepth) {
|
|
82
|
-
if (currentDir === home || !currentDir.startsWith(home)) {
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
83
|
const dirName = currentDir.split("/").pop();
|
|
86
84
|
if (dirName && blocklist.includes(dirName)) {
|
|
87
85
|
console.warn(`\u26A0\uFE0F Skipping blocked directory: ${dirName}`);
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
stashChanges,
|
|
18
18
|
updateFileInGraph,
|
|
19
19
|
watchProject
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-FUIZQCYB.js";
|
|
21
21
|
import {
|
|
22
22
|
SimulationEngine,
|
|
23
23
|
analyzeDeadCode,
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
parseProject,
|
|
32
32
|
scanSecurity,
|
|
33
33
|
searchSymbols
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-WUSXCZXA.js";
|
|
35
35
|
|
|
36
36
|
// src/index.ts
|
|
37
37
|
import { Command } from "commander";
|
package/dist/mcpb-entry.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
startMcpServer,
|
|
5
5
|
updateFileInGraph,
|
|
6
6
|
watchProject
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FUIZQCYB.js";
|
|
8
8
|
import {
|
|
9
9
|
buildGraph,
|
|
10
10
|
parseProject
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WUSXCZXA.js";
|
|
12
12
|
|
|
13
13
|
// src/mcpb-entry.ts
|
|
14
14
|
import { resolve } from "path";
|
package/dist/sdk.js
CHANGED