depwire-cli 1.0.4 → 1.0.7
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 +5 -2
- package/dist/{chunk-JPDK7SOI.js → chunk-IOJJTKI4.js} +8 -8
- package/dist/{chunk-7HLVFIVW.js → chunk-SLGC72RW.js} +1125 -176
- package/dist/index.js +98 -2
- package/dist/mcpb-entry.js +2 -2
- package/dist/parser/grammars/tree-sitter-kotlin.wasm +0 -0
- package/dist/sdk.d.ts +2 -0
- package/dist/sdk.js +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|

|
|
23
23
|

|
|
24
24
|

|
|
25
|
+

|
|
25
26
|
|
|
26
27
|
</div>
|
|
27
28
|
|
|
@@ -308,7 +309,7 @@ The SDK is the stable public API surface. All integrations should import from `d
|
|
|
308
309
|
|
|
309
310
|
## Language support
|
|
310
311
|
|
|
311
|
-
TypeScript, JavaScript, Python, Go, Rust, C, C#, Java, C
|
|
312
|
+
TypeScript, JavaScript, Python, Go, Rust, C, C#, Java, C++, Kotlin — with cross-language edge detection between all supported languages.
|
|
312
313
|
|
|
313
314
|
**Java / JVM** — classes, interfaces, enums, records, annotations, inner classes, anonymous classes, lambda expressions, Maven pom.xml and Gradle build file dependency edges, Spring Boot cross-language edges (@GetMapping, @PostMapping, @RequestMapping), JAX-RS / Jakarta EE route detection, Spring WebFlux RouterFunction support.
|
|
314
315
|
|
|
@@ -316,6 +317,8 @@ TypeScript, JavaScript, Python, Go, Rust, C, C#, Java, C++ — with cross-langua
|
|
|
316
317
|
|
|
317
318
|
**C++ / Systems** — classes, structs, unions, enums, namespaces, concepts, coroutines, C++20 modules, template support with parameter stripping. CMakeLists.txt, Conan, and vcpkg dependency edge parsing. Crow, Drogon, Pistache, and cpp-httplib cross-language route detection. Dead code detection with vtable and template exclusions. Health score checks: circular includes, missing header guards, god classes, raw pointer fields, missing virtual destructors. Security scanner: buffer overflow, format string vulnerability, use-after-free, command injection.
|
|
318
319
|
|
|
320
|
+
**Kotlin / JVM** — classes, data classes, sealed classes, objects, companion objects, value classes, type aliases, extension functions, enum classes, annotation classes. Coroutine awareness: suspend functions, GlobalScope detection, structured concurrency checks. build.gradle.kts, build.gradle, and settings.gradle.kts dependency parsing. Spring Boot, Ktor, Http4k, and Ktor Resources cross-language route detection. Android Retrofit outgoing edge detection. Dead code detection with Android lifecycle and Spring annotation exclusions. Security scanner: SQL injection via string templates, hardcoded credentials, insecure random, not-null assertion abuse, Ktor missing auth blocks.
|
|
321
|
+
|
|
319
322
|
---
|
|
320
323
|
|
|
321
324
|
## GitHub Action — PR Impact Analysis
|
|
@@ -378,7 +381,7 @@ Block PRs that hurt your architecture:
|
|
|
378
381
|
**Shipped**
|
|
379
382
|
- Arc diagram visualization
|
|
380
383
|
- 17 MCP tools
|
|
381
|
-
- Multi-language support (TypeScript, JavaScript, Python, Go, Rust, C, C#, Java, C
|
|
384
|
+
- Multi-language support (TypeScript, JavaScript, Python, Go, Rust, C, C#, Java, C++, Kotlin)
|
|
382
385
|
- Architecture health score
|
|
383
386
|
- Dead code detection
|
|
384
387
|
- Temporal graph
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
parseTypeScriptFile,
|
|
17
17
|
scanSecurity,
|
|
18
18
|
searchSymbols
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-SLGC72RW.js";
|
|
20
20
|
|
|
21
21
|
// src/viz/data.ts
|
|
22
22
|
import { basename } from "path";
|
|
@@ -122,26 +122,26 @@ function watchProject(projectRoot, callbacks) {
|
|
|
122
122
|
const watcher = chokidar.watch(projectRoot, watcherOptions);
|
|
123
123
|
console.error("[Watcher] Attaching event listeners...");
|
|
124
124
|
watcher.on("change", (absolutePath) => {
|
|
125
|
-
const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java", ".cpp", ".cc", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".h++", ".inl", ".ipp"];
|
|
125
|
+
const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java", ".kt", ".kts", ".cpp", ".cc", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".h++", ".inl", ".ipp"];
|
|
126
126
|
if (!validExtensions.some((ext) => absolutePath.endsWith(ext))) return;
|
|
127
127
|
const fileName = absolutePath.split("/").pop() || "";
|
|
128
|
-
if (!validExtensions.some((ext) => absolutePath.endsWith(ext)) && !["pom.xml", "build.gradle", "build.gradle.kts", "CMakeLists.txt", "conanfile.txt", "vcpkg.json"].includes(fileName)) return;
|
|
128
|
+
if (!validExtensions.some((ext) => absolutePath.endsWith(ext)) && !["pom.xml", "build.gradle", "build.gradle.kts", "settings.gradle.kts", "settings.gradle", "CMakeLists.txt", "conanfile.txt", "vcpkg.json"].includes(fileName)) return;
|
|
129
129
|
if (absolutePath.endsWith("_test.go")) return;
|
|
130
130
|
const relativePath = absolutePath.replace(projectRoot + "/", "");
|
|
131
131
|
console.error(`[Watcher] Change event: ${relativePath}`);
|
|
132
132
|
callbacks.onFileChanged(relativePath);
|
|
133
133
|
});
|
|
134
134
|
watcher.on("add", (absolutePath) => {
|
|
135
|
-
const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java", ".cpp", ".cc", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".h++", ".inl", ".ipp"];
|
|
135
|
+
const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java", ".kt", ".kts", ".cpp", ".cc", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".h++", ".inl", ".ipp"];
|
|
136
136
|
const addFileName = absolutePath.split("/").pop() || "";
|
|
137
|
-
if (!validExtensions.some((ext) => absolutePath.endsWith(ext)) && !["pom.xml", "build.gradle", "build.gradle.kts", "CMakeLists.txt", "conanfile.txt", "vcpkg.json"].includes(addFileName)) return;
|
|
137
|
+
if (!validExtensions.some((ext) => absolutePath.endsWith(ext)) && !["pom.xml", "build.gradle", "build.gradle.kts", "settings.gradle.kts", "settings.gradle", "CMakeLists.txt", "conanfile.txt", "vcpkg.json"].includes(addFileName)) return;
|
|
138
138
|
if (absolutePath.endsWith("_test.go")) return;
|
|
139
139
|
const relativePath = absolutePath.replace(projectRoot + "/", "");
|
|
140
140
|
console.error(`[Watcher] Add event: ${relativePath}`);
|
|
141
141
|
callbacks.onFileAdded(relativePath);
|
|
142
142
|
});
|
|
143
143
|
watcher.on("unlink", (absolutePath) => {
|
|
144
|
-
const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java", ".cpp", ".cc", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".h++", ".inl", ".ipp"];
|
|
144
|
+
const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java", ".kt", ".kts", ".cpp", ".cc", ".cxx", ".c++", ".hpp", ".hh", ".hxx", ".h++", ".inl", ".ipp"];
|
|
145
145
|
if (!validExtensions.some((ext) => absolutePath.endsWith(ext))) return;
|
|
146
146
|
if (absolutePath.endsWith("_test.go")) return;
|
|
147
147
|
const relativePath = absolutePath.replace(projectRoot + "/", "");
|
|
@@ -159,10 +159,10 @@ function watchProject(projectRoot, callbacks) {
|
|
|
159
159
|
for (const dir of dirs) {
|
|
160
160
|
const files = watched[dir];
|
|
161
161
|
fileCount += files.filter(
|
|
162
|
-
(f) => f.endsWith(".ts") || f.endsWith(".tsx") || f.endsWith(".js") || f.endsWith(".jsx") || f.endsWith(".mjs") || f.endsWith(".cjs") || f.endsWith(".py") || f.endsWith(".go") && !f.endsWith("_test.go") || f.endsWith(".rs") || f.endsWith(".c") || f.endsWith(".h") || f.endsWith(".cs") || f.endsWith(".csx") || f.endsWith(".csproj") || f.endsWith(".java") || f === "pom.xml" || f === "build.gradle" || f === "build.gradle.kts" || f.endsWith(".cpp") || f.endsWith(".cc") || f.endsWith(".cxx") || f.endsWith(".c++") || f.endsWith(".hpp") || f.endsWith(".hh") || f.endsWith(".hxx") || f.endsWith(".h++") || f.endsWith(".inl") || f.endsWith(".ipp") || f === "CMakeLists.txt" || f === "conanfile.txt" || f === "vcpkg.json"
|
|
162
|
+
(f) => f.endsWith(".ts") || f.endsWith(".tsx") || f.endsWith(".js") || f.endsWith(".jsx") || f.endsWith(".mjs") || f.endsWith(".cjs") || f.endsWith(".py") || f.endsWith(".go") && !f.endsWith("_test.go") || f.endsWith(".rs") || f.endsWith(".c") || f.endsWith(".h") || f.endsWith(".cs") || f.endsWith(".csx") || f.endsWith(".csproj") || f.endsWith(".java") || f === "pom.xml" || f === "build.gradle" || f === "build.gradle.kts" || f.endsWith(".kt") || f.endsWith(".kts") || f === "settings.gradle.kts" || f === "settings.gradle" || f.endsWith(".cpp") || f.endsWith(".cc") || f.endsWith(".cxx") || f.endsWith(".c++") || f.endsWith(".hpp") || f.endsWith(".hh") || f.endsWith(".hxx") || f.endsWith(".h++") || f.endsWith(".inl") || f.endsWith(".ipp") || f === "CMakeLists.txt" || f === "conanfile.txt" || f === "vcpkg.json"
|
|
163
163
|
).length;
|
|
164
164
|
}
|
|
165
|
-
console.error(`[Watcher] Watching ${fileCount} TypeScript/JavaScript/Python/Go/Rust/C/C++/C#/Java files in ${dirs.length} directories`);
|
|
165
|
+
console.error(`[Watcher] Watching ${fileCount} TypeScript/JavaScript/Python/Go/Rust/C/C++/C#/Java/Kotlin files in ${dirs.length} directories`);
|
|
166
166
|
});
|
|
167
167
|
return watcher;
|
|
168
168
|
}
|