depwire-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,326 @@
1
+ body {
2
+ margin: 0;
3
+ padding: 0;
4
+ background: #1a1a2e;
5
+ color: #e0e0e0;
6
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', sans-serif;
7
+ overflow: hidden;
8
+ height: 100vh;
9
+ display: flex;
10
+ flex-direction: column;
11
+ }
12
+
13
+ .header {
14
+ background: #16213e;
15
+ border-bottom: 1px solid #2a2a4a;
16
+ padding: 16px 24px;
17
+ display: flex;
18
+ justify-content: space-between;
19
+ align-items: center;
20
+ flex-shrink: 0;
21
+ }
22
+
23
+ .header-left {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 24px;
27
+ }
28
+
29
+ .header-right {
30
+ display: flex;
31
+ align-items: center;
32
+ gap: 12px;
33
+ }
34
+
35
+ .title {
36
+ margin: 0;
37
+ font-size: 24px;
38
+ font-weight: 600;
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 8px;
42
+ }
43
+
44
+ .title-icon {
45
+ font-size: 28px;
46
+ }
47
+
48
+ .title-text {
49
+ background: linear-gradient(135deg, #4a9eff 0%, #7c3aed 100%);
50
+ -webkit-background-clip: text;
51
+ -webkit-text-fill-color: transparent;
52
+ background-clip: text;
53
+ }
54
+
55
+ .project-name {
56
+ font-size: 18px;
57
+ font-weight: 400;
58
+ color: #a0a0a0;
59
+ }
60
+
61
+ .stats {
62
+ font-size: 14px;
63
+ color: #a0a0a0;
64
+ display: flex;
65
+ gap: 16px;
66
+ }
67
+
68
+ .stat-item {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: 4px;
72
+ }
73
+
74
+ .stat-value {
75
+ color: #4a9eff;
76
+ font-weight: 600;
77
+ }
78
+
79
+ .search-input {
80
+ background: #0f1729;
81
+ border: 1px solid #2a2a4a;
82
+ border-radius: 6px;
83
+ padding: 8px 12px;
84
+ color: #e0e0e0;
85
+ font-size: 14px;
86
+ width: 200px;
87
+ outline: none;
88
+ transition: border-color 0.2s;
89
+ }
90
+
91
+ .search-input:focus {
92
+ border-color: #4a9eff;
93
+ }
94
+
95
+ .search-input::placeholder {
96
+ color: #6a6a8a;
97
+ }
98
+
99
+ .export-dropdown {
100
+ position: relative;
101
+ }
102
+
103
+ .export-button {
104
+ background: #4a9eff;
105
+ border: none;
106
+ border-radius: 6px;
107
+ padding: 8px 16px;
108
+ color: #ffffff;
109
+ font-size: 14px;
110
+ font-weight: 500;
111
+ cursor: pointer;
112
+ transition: background 0.2s;
113
+ }
114
+
115
+ .export-button:hover {
116
+ background: #3a8eef;
117
+ }
118
+
119
+ .export-menu {
120
+ display: none;
121
+ position: absolute;
122
+ top: 100%;
123
+ right: 0;
124
+ margin-top: 4px;
125
+ background: #16213e;
126
+ border: 1px solid #2a2a4a;
127
+ border-radius: 6px;
128
+ overflow: hidden;
129
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
130
+ z-index: 1000;
131
+ }
132
+
133
+ .export-menu.show {
134
+ display: block;
135
+ }
136
+
137
+ .export-option {
138
+ background: transparent;
139
+ border: none;
140
+ padding: 10px 16px;
141
+ color: #e0e0e0;
142
+ font-size: 14px;
143
+ cursor: pointer;
144
+ width: 100%;
145
+ text-align: left;
146
+ transition: background 0.2s;
147
+ }
148
+
149
+ .export-option:hover {
150
+ background: #0f1729;
151
+ }
152
+
153
+ .main-container {
154
+ flex: 1;
155
+ display: flex;
156
+ flex-direction: column;
157
+ overflow: hidden;
158
+ }
159
+
160
+ .diagram-container {
161
+ flex: 1;
162
+ overflow: hidden;
163
+ position: relative;
164
+ }
165
+
166
+ #diagram {
167
+ width: 100%;
168
+ height: 100%;
169
+ }
170
+
171
+ .detail-panel {
172
+ background: #16213e;
173
+ border-top: 1px solid #2a2a4a;
174
+ padding: 16px 24px;
175
+ min-height: 80px;
176
+ max-height: 200px;
177
+ overflow-y: auto;
178
+ flex-shrink: 0;
179
+ }
180
+
181
+ .detail-content {
182
+ font-size: 14px;
183
+ line-height: 1.6;
184
+ }
185
+
186
+ .detail-hint {
187
+ color: #6a6a8a;
188
+ margin: 0;
189
+ }
190
+
191
+ .detail-title {
192
+ color: #4a9eff;
193
+ font-weight: 600;
194
+ margin: 0 0 8px 0;
195
+ }
196
+
197
+ .detail-info {
198
+ color: #e0e0e0;
199
+ margin: 4px 0;
200
+ }
201
+
202
+ .detail-label {
203
+ color: #a0a0a0;
204
+ }
205
+
206
+ .tooltip {
207
+ position: absolute;
208
+ background: #16213e;
209
+ border: 1px solid #4a9eff;
210
+ border-radius: 6px;
211
+ padding: 8px 12px;
212
+ font-size: 13px;
213
+ pointer-events: none;
214
+ z-index: 100;
215
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
216
+ opacity: 0;
217
+ transition: opacity 0.2s;
218
+ max-width: 300px;
219
+ }
220
+
221
+ .tooltip.show {
222
+ opacity: 1;
223
+ }
224
+
225
+ .tooltip-line {
226
+ margin: 2px 0;
227
+ color: #e0e0e0;
228
+ }
229
+
230
+ .tooltip-label {
231
+ color: #a0a0a0;
232
+ }
233
+
234
+ .file-bar {
235
+ cursor: pointer;
236
+ transition: opacity 0.2s;
237
+ }
238
+
239
+ .file-bar.dimmed {
240
+ opacity: 0.2;
241
+ }
242
+
243
+ .file-bar.highlighted {
244
+ filter: brightness(1.5);
245
+ }
246
+
247
+ .file-label {
248
+ font-size: 11px;
249
+ fill: #a0a0a0;
250
+ pointer-events: none;
251
+ user-select: none;
252
+ }
253
+
254
+ .arc {
255
+ fill: none;
256
+ stroke-opacity: 0.6;
257
+ cursor: pointer;
258
+ transition: stroke-opacity 0.2s, stroke-width 0.2s;
259
+ }
260
+
261
+ .arc.dimmed {
262
+ stroke-opacity: 0.1;
263
+ }
264
+
265
+ .arc.highlighted {
266
+ stroke-opacity: 1;
267
+ }
268
+
269
+ ::-webkit-scrollbar {
270
+ width: 8px;
271
+ }
272
+
273
+ ::-webkit-scrollbar-track {
274
+ background: #0f1729;
275
+ }
276
+
277
+ ::-webkit-scrollbar-thumb {
278
+ background: #2a2a4a;
279
+ border-radius: 4px;
280
+ }
281
+
282
+ ::-webkit-scrollbar-thumb:hover {
283
+ background: #3a3a5a;
284
+ }
285
+
286
+ /* Notification Toast */
287
+ .notification {
288
+ position: fixed;
289
+ top: 80px;
290
+ right: 24px;
291
+ background: #16213e;
292
+ border: 1px solid #4a9eff;
293
+ border-radius: 8px;
294
+ padding: 12px 20px;
295
+ font-size: 14px;
296
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
297
+ z-index: 10000;
298
+ opacity: 0;
299
+ transform: translateX(400px);
300
+ transition: all 0.3s ease;
301
+ }
302
+
303
+ .notification.show {
304
+ opacity: 1;
305
+ transform: translateX(0);
306
+ }
307
+
308
+ .notification-success {
309
+ border-color: #4ade80;
310
+ background: #16213e;
311
+ }
312
+
313
+ .notification-info {
314
+ border-color: #4a9eff;
315
+ background: #16213e;
316
+ }
317
+
318
+ .notification-warning {
319
+ border-color: #fbbf24;
320
+ background: #16213e;
321
+ }
322
+
323
+ .notification-error {
324
+ border-color: #ff4a4a;
325
+ background: #16213e;
326
+ }
package/icon.png ADDED
Binary file
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "depwire-cli",
3
+ "version": "0.1.0",
4
+ "description": "Code cross-reference visualization and AI context engine for TypeScript. Analyzes codebases to show dependencies, enables AI tools with MCP, and renders beautiful arc diagrams.",
5
+ "type": "module",
6
+ "bin": {
7
+ "depwire": "./dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsup src/index.ts src/mcpb-entry.ts --format esm --dts --clean && npm run copy-static",
11
+ "copy-static": "mkdir -p dist/viz/public && cp -r src/viz/public/* dist/viz/public/",
12
+ "dev": "tsup src/index.ts --format esm --watch",
13
+ "start": "node dist/index.js",
14
+ "build:mcpb": "npm run build && ./scripts/build-mcpb.sh"
15
+ },
16
+ "keywords": [
17
+ "typescript",
18
+ "code-analysis",
19
+ "visualization",
20
+ "tree-sitter",
21
+ "dependency-graph",
22
+ "developer-tools",
23
+ "mcp",
24
+ "model-context-protocol",
25
+ "ai-tools",
26
+ "cursor",
27
+ "claude",
28
+ "impact-analysis",
29
+ "refactoring",
30
+ "arc-diagram",
31
+ "cross-reference"
32
+ ],
33
+ "author": "Depwire",
34
+ "license": "MIT",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git+https://github.com/depwire-dev/depwire.git"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/depwire-dev/depwire/issues"
41
+ },
42
+ "homepage": "https://github.com/depwire-dev/depwire#readme",
43
+ "files": [
44
+ "dist",
45
+ "README.md",
46
+ "LICENSE",
47
+ "icon.png"
48
+ ],
49
+ "engines": {
50
+ "node": ">=18"
51
+ },
52
+ "dependencies": {
53
+ "@modelcontextprotocol/sdk": "1.26.0",
54
+ "chokidar": "5.0.0",
55
+ "commander": "14.0.3",
56
+ "express": "5.2.1",
57
+ "graphology": "0.26.0",
58
+ "graphology-types": "0.24.8",
59
+ "open": "11.0.0",
60
+ "simple-git": "3.31.1",
61
+ "tree-sitter": "0.21.1",
62
+ "tree-sitter-go": "0.21.2",
63
+ "tree-sitter-javascript": "0.21.4",
64
+ "tree-sitter-python": "0.21.0",
65
+ "tree-sitter-typescript": "0.23.2",
66
+ "ws": "8.19.0",
67
+ "zod": "4.3.6"
68
+ },
69
+ "devDependencies": {
70
+ "@types/express": "5.0.6",
71
+ "@types/node": "25.3.0",
72
+ "@types/ws": "8.18.1",
73
+ "sharp": "0.34.5",
74
+ "tsup": "8.5.1",
75
+ "typescript": "5.9.3"
76
+ }
77
+ }