@stupidloud/codegraph 0.7.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/LICENSE +21 -0
- package/README.md +482 -0
- package/dist/bin/codegraph.d.ts +21 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +1296 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/bin/node-version-check.d.ts +17 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +39 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/uninstall.d.ts +14 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +148 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +342 -0
- package/dist/config.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +244 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +99 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1075 -0
- package/dist/context/index.js.map +1 -0
- package/dist/db/index.d.ts +72 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +200 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +160 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +253 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1202 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +169 -0
- package/dist/db/sqlite-adapter.d.ts +52 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +237 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/directory.d.ts +57 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +264 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/grammars.d.ts +78 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +322 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +130 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +1279 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +4 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +126 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +3 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +72 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +192 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +58 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +45 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +64 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +90 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +253 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +66 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +107 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +114 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +109 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +139 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +91 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +3 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +129 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +52 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +313 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +94 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +272 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +103 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +179 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +233 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +2393 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +36 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +163 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +366 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +493 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +504 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +982 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/claude-md-template.d.ts +10 -0
- package/dist/installer/claude-md-template.d.ts.map +1 -0
- package/dist/installer/claude-md-template.js +46 -0
- package/dist/installer/claude-md-template.js.map +1 -0
- package/dist/installer/config-writer.d.ts +36 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +304 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +12 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +201 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/mcp/index.d.ts +82 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +330 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +19 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +59 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/tools.d.ts +187 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +1250 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +89 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +170 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +213 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +225 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +158 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +41 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +129 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +177 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +248 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +278 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +272 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +198 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +207 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +249 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +376 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +306 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +40 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +663 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +106 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +709 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +32 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +384 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +441 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/types.d.ts +172 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +53 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +347 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/sync/index.d.ts +13 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +17 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watcher.d.ts +81 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +184 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/types.d.ts +438 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +263 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +112 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils.d.ts +205 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +549 -0
- package/dist/utils.js.map +1 -0
- package/dist/vectors/embedder.d.ts +121 -0
- package/dist/vectors/embedder.d.ts.map +1 -0
- package/dist/vectors/embedder.js +237 -0
- package/dist/vectors/embedder.js.map +1 -0
- package/dist/vectors/index.d.ts +9 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +20 -0
- package/dist/vectors/index.js.map +1 -0
- package/dist/vectors/manager.d.ts +124 -0
- package/dist/vectors/manager.d.ts.map +1 -0
- package/dist/vectors/manager.js +322 -0
- package/dist/vectors/manager.js.map +1 -0
- package/dist/vectors/search.d.ts +143 -0
- package/dist/vectors/search.d.ts.map +1 -0
- package/dist/vectors/search.js +460 -0
- package/dist/vectors/search.js.map +1 -0
- package/dist/visualizer/public/index.html +1994 -0
- package/dist/visualizer/server.d.ts +46 -0
- package/dist/visualizer/server.d.ts.map +1 -0
- package/dist/visualizer/server.js +491 -0
- package/dist/visualizer/server.js.map +1 -0
- package/package.json +60 -0
- package/scripts/patch-tree-sitter-dart.js +112 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration Management
|
|
4
|
+
*
|
|
5
|
+
* Load, save, and validate CodeGraph configuration.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.CONFIG_FILENAME = void 0;
|
|
45
|
+
exports.getConfigPath = getConfigPath;
|
|
46
|
+
exports.validateConfig = validateConfig;
|
|
47
|
+
exports.loadConfig = loadConfig;
|
|
48
|
+
exports.saveConfig = saveConfig;
|
|
49
|
+
exports.createDefaultConfig = createDefaultConfig;
|
|
50
|
+
exports.updateConfig = updateConfig;
|
|
51
|
+
exports.addIncludePatterns = addIncludePatterns;
|
|
52
|
+
exports.addExcludePatterns = addExcludePatterns;
|
|
53
|
+
exports.addCustomPattern = addCustomPattern;
|
|
54
|
+
exports.shouldIncludeFile = shouldIncludeFile;
|
|
55
|
+
const fs = __importStar(require("fs"));
|
|
56
|
+
const path = __importStar(require("path"));
|
|
57
|
+
const picomatch_1 = __importDefault(require("picomatch"));
|
|
58
|
+
const types_1 = require("./types");
|
|
59
|
+
const utils_1 = require("./utils");
|
|
60
|
+
/**
|
|
61
|
+
* Configuration filename
|
|
62
|
+
*/
|
|
63
|
+
exports.CONFIG_FILENAME = 'config.json';
|
|
64
|
+
/**
|
|
65
|
+
* Get the config file path for a project
|
|
66
|
+
*/
|
|
67
|
+
function getConfigPath(projectRoot) {
|
|
68
|
+
return path.join(projectRoot, '.codegraph', exports.CONFIG_FILENAME);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if a regex pattern is safe from ReDoS attacks.
|
|
72
|
+
*
|
|
73
|
+
* Rejects patterns with nested quantifiers (e.g., (a+)+, (a*)*) which
|
|
74
|
+
* are the primary source of catastrophic backtracking. Also rejects
|
|
75
|
+
* excessively long patterns and validates compilability.
|
|
76
|
+
*/
|
|
77
|
+
function isSafeRegex(pattern) {
|
|
78
|
+
// Reject excessively long patterns
|
|
79
|
+
if (pattern.length > 500)
|
|
80
|
+
return false;
|
|
81
|
+
// Reject nested quantifiers: (...)+ followed by +, *, or {
|
|
82
|
+
// These are the primary cause of catastrophic backtracking
|
|
83
|
+
if (/([+*}])\s*[+*{]/.test(pattern))
|
|
84
|
+
return false;
|
|
85
|
+
if (/\([^)]*[+*][^)]*\)[+*{]/.test(pattern))
|
|
86
|
+
return false;
|
|
87
|
+
// Verify the pattern is a valid regex
|
|
88
|
+
try {
|
|
89
|
+
new RegExp(pattern);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Validate a configuration object
|
|
98
|
+
*/
|
|
99
|
+
function validateConfig(config) {
|
|
100
|
+
if (typeof config !== 'object' || config === null) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
const c = config;
|
|
104
|
+
// Required fields
|
|
105
|
+
if (typeof c.version !== 'number')
|
|
106
|
+
return false;
|
|
107
|
+
if (typeof c.rootDir !== 'string')
|
|
108
|
+
return false;
|
|
109
|
+
if (!Array.isArray(c.include))
|
|
110
|
+
return false;
|
|
111
|
+
if (!Array.isArray(c.exclude))
|
|
112
|
+
return false;
|
|
113
|
+
if (!Array.isArray(c.languages))
|
|
114
|
+
return false;
|
|
115
|
+
if (!Array.isArray(c.frameworks))
|
|
116
|
+
return false;
|
|
117
|
+
if (typeof c.maxFileSize !== 'number')
|
|
118
|
+
return false;
|
|
119
|
+
if (typeof c.extractDocstrings !== 'boolean')
|
|
120
|
+
return false;
|
|
121
|
+
if (typeof c.trackCallSites !== 'boolean')
|
|
122
|
+
return false;
|
|
123
|
+
// Validate include/exclude are string arrays
|
|
124
|
+
if (!c.include.every((p) => typeof p === 'string'))
|
|
125
|
+
return false;
|
|
126
|
+
if (!c.exclude.every((p) => typeof p === 'string'))
|
|
127
|
+
return false;
|
|
128
|
+
// Validate languages
|
|
129
|
+
const validLanguages = [
|
|
130
|
+
'typescript',
|
|
131
|
+
'javascript',
|
|
132
|
+
'python',
|
|
133
|
+
'go',
|
|
134
|
+
'rust',
|
|
135
|
+
'java',
|
|
136
|
+
'svelte',
|
|
137
|
+
'unknown',
|
|
138
|
+
];
|
|
139
|
+
if (!c.languages.every((l) => validLanguages.includes(l)))
|
|
140
|
+
return false;
|
|
141
|
+
// Validate frameworks
|
|
142
|
+
for (const fw of c.frameworks) {
|
|
143
|
+
if (typeof fw !== 'object' || fw === null)
|
|
144
|
+
return false;
|
|
145
|
+
const framework = fw;
|
|
146
|
+
if (typeof framework.name !== 'string')
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
// Validate custom patterns if present
|
|
150
|
+
if (c.customPatterns !== undefined) {
|
|
151
|
+
if (!Array.isArray(c.customPatterns))
|
|
152
|
+
return false;
|
|
153
|
+
for (const pattern of c.customPatterns) {
|
|
154
|
+
if (typeof pattern !== 'object' || pattern === null)
|
|
155
|
+
return false;
|
|
156
|
+
const p = pattern;
|
|
157
|
+
if (typeof p.name !== 'string')
|
|
158
|
+
return false;
|
|
159
|
+
if (typeof p.pattern !== 'string')
|
|
160
|
+
return false;
|
|
161
|
+
if (typeof p.kind !== 'string')
|
|
162
|
+
return false;
|
|
163
|
+
// Validate regex is compilable and reject patterns with known ReDoS risks
|
|
164
|
+
if (!isSafeRegex(p.pattern))
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (c.semanticSearch !== undefined) {
|
|
169
|
+
if (typeof c.semanticSearch !== 'object' || c.semanticSearch === null)
|
|
170
|
+
return false;
|
|
171
|
+
const s = c.semanticSearch;
|
|
172
|
+
if (typeof s.enabled !== 'boolean')
|
|
173
|
+
return false;
|
|
174
|
+
if (s.provider !== 'gemini')
|
|
175
|
+
return false;
|
|
176
|
+
if (s.apiKey !== undefined && typeof s.apiKey !== 'string')
|
|
177
|
+
return false;
|
|
178
|
+
if (s.model !== undefined && typeof s.model !== 'string')
|
|
179
|
+
return false;
|
|
180
|
+
if (s.outputDimensionality !== undefined && typeof s.outputDimensionality !== 'number')
|
|
181
|
+
return false;
|
|
182
|
+
if (s.batchSize !== undefined && typeof s.batchSize !== 'number')
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Merge configuration with defaults
|
|
189
|
+
*/
|
|
190
|
+
function mergeConfig(defaults, overrides) {
|
|
191
|
+
return {
|
|
192
|
+
version: overrides.version ?? defaults.version,
|
|
193
|
+
rootDir: overrides.rootDir ?? defaults.rootDir,
|
|
194
|
+
include: overrides.include ?? defaults.include,
|
|
195
|
+
exclude: overrides.exclude ?? defaults.exclude,
|
|
196
|
+
languages: overrides.languages ?? defaults.languages,
|
|
197
|
+
frameworks: overrides.frameworks ?? defaults.frameworks,
|
|
198
|
+
maxFileSize: overrides.maxFileSize ?? defaults.maxFileSize,
|
|
199
|
+
extractDocstrings: overrides.extractDocstrings ?? defaults.extractDocstrings,
|
|
200
|
+
trackCallSites: overrides.trackCallSites ?? defaults.trackCallSites,
|
|
201
|
+
customPatterns: overrides.customPatterns ?? defaults.customPatterns,
|
|
202
|
+
semanticSearch: {
|
|
203
|
+
...(defaults.semanticSearch ?? { enabled: false, provider: 'gemini' }),
|
|
204
|
+
...(overrides.semanticSearch ?? {}),
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Load configuration from a project
|
|
210
|
+
*/
|
|
211
|
+
function loadConfig(projectRoot) {
|
|
212
|
+
const configPath = getConfigPath(projectRoot);
|
|
213
|
+
if (!fs.existsSync(configPath)) {
|
|
214
|
+
// Return default config with adjusted rootDir
|
|
215
|
+
return {
|
|
216
|
+
...types_1.DEFAULT_CONFIG,
|
|
217
|
+
rootDir: projectRoot,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
222
|
+
const parsed = JSON.parse(content);
|
|
223
|
+
// Merge with defaults to ensure all fields are present
|
|
224
|
+
const merged = mergeConfig(types_1.DEFAULT_CONFIG, parsed);
|
|
225
|
+
merged.rootDir = projectRoot; // Always use actual project root
|
|
226
|
+
if (!validateConfig(merged)) {
|
|
227
|
+
throw new Error('Invalid configuration format');
|
|
228
|
+
}
|
|
229
|
+
return merged;
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (error instanceof SyntaxError) {
|
|
233
|
+
throw new Error(`Invalid JSON in config file: ${configPath}`);
|
|
234
|
+
}
|
|
235
|
+
throw error;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Save configuration to a project
|
|
240
|
+
*/
|
|
241
|
+
function saveConfig(projectRoot, config) {
|
|
242
|
+
const configPath = getConfigPath(projectRoot);
|
|
243
|
+
const dir = path.dirname(configPath);
|
|
244
|
+
// Ensure directory exists
|
|
245
|
+
if (!fs.existsSync(dir)) {
|
|
246
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
247
|
+
}
|
|
248
|
+
// Create a copy without rootDir (it's always derived from project path)
|
|
249
|
+
const toSave = { ...config };
|
|
250
|
+
delete toSave.rootDir;
|
|
251
|
+
const content = JSON.stringify(toSave, null, 2);
|
|
252
|
+
// Atomic write: write to temp file then rename to prevent partial/corrupt configs
|
|
253
|
+
const tmpPath = configPath + '.tmp';
|
|
254
|
+
fs.writeFileSync(tmpPath, content, 'utf-8');
|
|
255
|
+
fs.renameSync(tmpPath, configPath);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Create default configuration for a new project
|
|
259
|
+
*/
|
|
260
|
+
function createDefaultConfig(projectRoot) {
|
|
261
|
+
return {
|
|
262
|
+
...types_1.DEFAULT_CONFIG,
|
|
263
|
+
rootDir: projectRoot,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Update specific configuration values
|
|
268
|
+
*/
|
|
269
|
+
function updateConfig(projectRoot, updates) {
|
|
270
|
+
const current = loadConfig(projectRoot);
|
|
271
|
+
const updated = mergeConfig(current, updates);
|
|
272
|
+
updated.rootDir = projectRoot;
|
|
273
|
+
saveConfig(projectRoot, updated);
|
|
274
|
+
return updated;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Add patterns to include list
|
|
278
|
+
*/
|
|
279
|
+
function addIncludePatterns(projectRoot, patterns) {
|
|
280
|
+
const config = loadConfig(projectRoot);
|
|
281
|
+
const newPatterns = patterns.filter((p) => !config.include.includes(p));
|
|
282
|
+
config.include = [...config.include, ...newPatterns];
|
|
283
|
+
saveConfig(projectRoot, config);
|
|
284
|
+
return config;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Add patterns to exclude list
|
|
288
|
+
*/
|
|
289
|
+
function addExcludePatterns(projectRoot, patterns) {
|
|
290
|
+
const config = loadConfig(projectRoot);
|
|
291
|
+
const newPatterns = patterns.filter((p) => !config.exclude.includes(p));
|
|
292
|
+
config.exclude = [...config.exclude, ...newPatterns];
|
|
293
|
+
saveConfig(projectRoot, config);
|
|
294
|
+
return config;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Add a custom pattern
|
|
298
|
+
*/
|
|
299
|
+
function addCustomPattern(projectRoot, name, pattern, kind) {
|
|
300
|
+
const config = loadConfig(projectRoot);
|
|
301
|
+
if (!config.customPatterns) {
|
|
302
|
+
config.customPatterns = [];
|
|
303
|
+
}
|
|
304
|
+
// Check for duplicate name
|
|
305
|
+
const existing = config.customPatterns.find((p) => p.name === name);
|
|
306
|
+
if (existing) {
|
|
307
|
+
existing.pattern = pattern;
|
|
308
|
+
existing.kind = kind;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
config.customPatterns.push({ name, pattern, kind });
|
|
312
|
+
}
|
|
313
|
+
saveConfig(projectRoot, config);
|
|
314
|
+
return config;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Check if a file path matches the include/exclude patterns
|
|
318
|
+
*/
|
|
319
|
+
function shouldIncludeFile(filePath, config) {
|
|
320
|
+
// Normalize to forward slashes so Windows backslash paths match glob patterns
|
|
321
|
+
filePath = (0, utils_1.normalizePath)(filePath);
|
|
322
|
+
// Simple glob matching (for now, just check if any pattern matches)
|
|
323
|
+
// A full implementation would use a proper glob library
|
|
324
|
+
const matchesPattern = (pattern, filePath) => {
|
|
325
|
+
return picomatch_1.default.isMatch(filePath, pattern, { dot: true });
|
|
326
|
+
};
|
|
327
|
+
// Check exclude patterns first
|
|
328
|
+
for (const pattern of config.exclude) {
|
|
329
|
+
if (matchesPattern(pattern, filePath)) {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// Check include patterns
|
|
334
|
+
for (const pattern of config.include) {
|
|
335
|
+
if (matchesPattern(pattern, filePath)) {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// Default to not including if no pattern matches
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats TaskContext as markdown or JSON for consumption by Claude.
|
|
5
|
+
*/
|
|
6
|
+
import { Node, TaskContext, Subgraph } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Format context as markdown
|
|
9
|
+
*
|
|
10
|
+
* Creates a compact markdown document optimized for Claude with minimal context usage:
|
|
11
|
+
* - Brief summary
|
|
12
|
+
* - Entry points with locations
|
|
13
|
+
* - Code blocks only for key symbols
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatContextAsMarkdown(context: TaskContext): string;
|
|
16
|
+
/**
|
|
17
|
+
* Format context as JSON
|
|
18
|
+
*
|
|
19
|
+
* Returns a structured JSON representation suitable for programmatic use.
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatContextAsJson(context: TaskContext): string;
|
|
22
|
+
/**
|
|
23
|
+
* Format a subgraph as an ASCII tree structure
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatSubgraphTree(subgraph: Subgraph, entryPoints: Node[]): string;
|
|
26
|
+
/**
|
|
27
|
+
* Format bytes as human-readable string
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatBytes(bytes: number): string;
|
|
30
|
+
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/context/formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAQ,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAsDpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAsBhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,CAqClF;AAsHD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Context Formatter
|
|
4
|
+
*
|
|
5
|
+
* Formats TaskContext as markdown or JSON for consumption by Claude.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.formatContextAsMarkdown = formatContextAsMarkdown;
|
|
9
|
+
exports.formatContextAsJson = formatContextAsJson;
|
|
10
|
+
exports.formatSubgraphTree = formatSubgraphTree;
|
|
11
|
+
exports.formatBytes = formatBytes;
|
|
12
|
+
/**
|
|
13
|
+
* Format context as markdown
|
|
14
|
+
*
|
|
15
|
+
* Creates a compact markdown document optimized for Claude with minimal context usage:
|
|
16
|
+
* - Brief summary
|
|
17
|
+
* - Entry points with locations
|
|
18
|
+
* - Code blocks only for key symbols
|
|
19
|
+
*/
|
|
20
|
+
function formatContextAsMarkdown(context) {
|
|
21
|
+
const lines = [];
|
|
22
|
+
// Header with query
|
|
23
|
+
lines.push('## Code Context\n');
|
|
24
|
+
lines.push(`**Query:** ${context.query}\n`);
|
|
25
|
+
// Entry points - compact format
|
|
26
|
+
if (context.entryPoints.length > 0) {
|
|
27
|
+
lines.push('### Entry Points\n');
|
|
28
|
+
for (const node of context.entryPoints) {
|
|
29
|
+
const location = node.startLine ? `:${node.startLine}` : '';
|
|
30
|
+
lines.push(`- **${node.name}** (${node.kind}) - ${node.filePath}${location}`);
|
|
31
|
+
if (node.signature) {
|
|
32
|
+
lines.push(` \`${node.signature}\``);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
lines.push('');
|
|
36
|
+
}
|
|
37
|
+
// Related symbols - compact list (skip verbose structure tree)
|
|
38
|
+
const otherSymbols = Array.from(context.subgraph.nodes.values())
|
|
39
|
+
.filter(n => !context.entryPoints.some(e => e.id === n.id))
|
|
40
|
+
.slice(0, 10); // Limit to 10 related symbols
|
|
41
|
+
if (otherSymbols.length > 0) {
|
|
42
|
+
lines.push('### Related Symbols\n');
|
|
43
|
+
const byFile = new Map();
|
|
44
|
+
for (const node of otherSymbols) {
|
|
45
|
+
const existing = byFile.get(node.filePath) || [];
|
|
46
|
+
existing.push(node);
|
|
47
|
+
byFile.set(node.filePath, existing);
|
|
48
|
+
}
|
|
49
|
+
for (const [file, nodes] of byFile) {
|
|
50
|
+
const nodeList = nodes.map(n => `${n.name}:${n.startLine}`).join(', ');
|
|
51
|
+
lines.push(`- ${file}: ${nodeList}`);
|
|
52
|
+
}
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
// Code blocks - only for key entry points
|
|
56
|
+
if (context.codeBlocks.length > 0) {
|
|
57
|
+
lines.push('### Code\n');
|
|
58
|
+
for (const block of context.codeBlocks) {
|
|
59
|
+
const nodeName = block.node?.name ?? 'Unknown';
|
|
60
|
+
lines.push(`#### ${nodeName} (${block.filePath}:${block.startLine})\n`);
|
|
61
|
+
lines.push('```' + block.language);
|
|
62
|
+
lines.push(block.content);
|
|
63
|
+
lines.push('```\n');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return lines.join('\n');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Format context as JSON
|
|
70
|
+
*
|
|
71
|
+
* Returns a structured JSON representation suitable for programmatic use.
|
|
72
|
+
*/
|
|
73
|
+
function formatContextAsJson(context) {
|
|
74
|
+
// Convert Map to array for JSON serialization
|
|
75
|
+
const serializable = {
|
|
76
|
+
query: context.query,
|
|
77
|
+
summary: context.summary,
|
|
78
|
+
entryPoints: context.entryPoints.map(serializeNode),
|
|
79
|
+
nodes: Array.from(context.subgraph.nodes.values()).map(serializeNode),
|
|
80
|
+
edges: context.subgraph.edges.map(serializeEdge),
|
|
81
|
+
codeBlocks: context.codeBlocks.map((block) => ({
|
|
82
|
+
filePath: block.filePath,
|
|
83
|
+
startLine: block.startLine,
|
|
84
|
+
endLine: block.endLine,
|
|
85
|
+
language: block.language,
|
|
86
|
+
content: block.content,
|
|
87
|
+
nodeName: block.node?.name,
|
|
88
|
+
nodeKind: block.node?.kind,
|
|
89
|
+
})),
|
|
90
|
+
relatedFiles: context.relatedFiles,
|
|
91
|
+
stats: context.stats,
|
|
92
|
+
};
|
|
93
|
+
return JSON.stringify(serializable, null, 2);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format a subgraph as an ASCII tree structure
|
|
97
|
+
*/
|
|
98
|
+
function formatSubgraphTree(subgraph, entryPoints) {
|
|
99
|
+
const lines = [];
|
|
100
|
+
const printed = new Set();
|
|
101
|
+
// Build adjacency list for outgoing edges
|
|
102
|
+
const outgoing = new Map();
|
|
103
|
+
for (const edge of subgraph.edges) {
|
|
104
|
+
const existing = outgoing.get(edge.source) ?? [];
|
|
105
|
+
existing.push(edge);
|
|
106
|
+
outgoing.set(edge.source, existing);
|
|
107
|
+
}
|
|
108
|
+
// Print each entry point as a tree root
|
|
109
|
+
for (const entry of entryPoints) {
|
|
110
|
+
formatNodeTree(entry, subgraph, outgoing, printed, lines, 0, '');
|
|
111
|
+
lines.push(''); // Blank line between trees
|
|
112
|
+
}
|
|
113
|
+
// Print any remaining nodes not reached from entry points
|
|
114
|
+
const remaining = [];
|
|
115
|
+
for (const node of subgraph.nodes.values()) {
|
|
116
|
+
if (!printed.has(node.id)) {
|
|
117
|
+
remaining.push(node);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (remaining.length > 0 && remaining.length <= 10) {
|
|
121
|
+
lines.push('Other relevant symbols:');
|
|
122
|
+
for (const node of remaining) {
|
|
123
|
+
const location = node.startLine ? `:${node.startLine}` : '';
|
|
124
|
+
lines.push(` ${node.kind}: ${node.name} (${node.filePath}${location})`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else if (remaining.length > 10) {
|
|
128
|
+
lines.push(`... and ${remaining.length} more related symbols`);
|
|
129
|
+
}
|
|
130
|
+
return lines.join('\n').trim();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Format a single node and its relationships
|
|
134
|
+
*/
|
|
135
|
+
function formatNodeTree(node, subgraph, outgoing, printed, lines, depth, prefix) {
|
|
136
|
+
if (printed.has(node.id)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
printed.add(node.id);
|
|
140
|
+
// Node header
|
|
141
|
+
const location = node.startLine ? `:${node.startLine}` : '';
|
|
142
|
+
const signature = node.signature ? ` - ${truncate(node.signature, 50)}` : '';
|
|
143
|
+
lines.push(`${prefix}${node.kind}: ${node.name} (${node.filePath}${location})${signature}`);
|
|
144
|
+
// Outgoing edges
|
|
145
|
+
const edges = outgoing.get(node.id) ?? [];
|
|
146
|
+
const significantEdges = edges.filter((e) => ['calls', 'extends', 'implements', 'imports', 'references'].includes(e.kind));
|
|
147
|
+
// Group by kind
|
|
148
|
+
const edgesByKind = new Map();
|
|
149
|
+
for (const edge of significantEdges) {
|
|
150
|
+
const existing = edgesByKind.get(edge.kind) ?? [];
|
|
151
|
+
existing.push(edge);
|
|
152
|
+
edgesByKind.set(edge.kind, existing);
|
|
153
|
+
}
|
|
154
|
+
// Print edges grouped by kind
|
|
155
|
+
const newPrefix = prefix + ' ';
|
|
156
|
+
for (const [kind, kindEdges] of edgesByKind) {
|
|
157
|
+
if (kindEdges.length > 3) {
|
|
158
|
+
// Summarize if too many
|
|
159
|
+
const names = kindEdges
|
|
160
|
+
.slice(0, 3)
|
|
161
|
+
.map((e) => {
|
|
162
|
+
const target = subgraph.nodes.get(e.target);
|
|
163
|
+
return target?.name ?? 'unknown';
|
|
164
|
+
})
|
|
165
|
+
.join(', ');
|
|
166
|
+
lines.push(`${newPrefix}├── ${kind}: ${names} and ${kindEdges.length - 3} more`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
for (let i = 0; i < kindEdges.length; i++) {
|
|
170
|
+
const edge = kindEdges[i];
|
|
171
|
+
const target = subgraph.nodes.get(edge.target);
|
|
172
|
+
const targetName = target?.name ?? 'unknown';
|
|
173
|
+
const connector = i === kindEdges.length - 1 ? '└──' : '├──';
|
|
174
|
+
lines.push(`${newPrefix}${connector} ${kind} → ${targetName}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Recurse for directly connected nodes (limited depth)
|
|
179
|
+
if (depth < 1) {
|
|
180
|
+
for (const edge of significantEdges.slice(0, 3)) {
|
|
181
|
+
const target = subgraph.nodes.get(edge.target);
|
|
182
|
+
if (target && !printed.has(target.id)) {
|
|
183
|
+
formatNodeTree(target, subgraph, outgoing, printed, lines, depth + 1, newPrefix);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Serialize a node for JSON output
|
|
190
|
+
*/
|
|
191
|
+
function serializeNode(node) {
|
|
192
|
+
return {
|
|
193
|
+
id: node.id,
|
|
194
|
+
kind: node.kind,
|
|
195
|
+
name: node.name,
|
|
196
|
+
qualifiedName: node.qualifiedName,
|
|
197
|
+
filePath: node.filePath,
|
|
198
|
+
language: node.language,
|
|
199
|
+
startLine: node.startLine,
|
|
200
|
+
endLine: node.endLine,
|
|
201
|
+
signature: node.signature,
|
|
202
|
+
docstring: node.docstring,
|
|
203
|
+
visibility: node.visibility,
|
|
204
|
+
isExported: node.isExported,
|
|
205
|
+
isAsync: node.isAsync,
|
|
206
|
+
isStatic: node.isStatic,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Serialize an edge for JSON output
|
|
211
|
+
*/
|
|
212
|
+
function serializeEdge(edge) {
|
|
213
|
+
return {
|
|
214
|
+
source: edge.source,
|
|
215
|
+
target: edge.target,
|
|
216
|
+
kind: edge.kind,
|
|
217
|
+
line: edge.line,
|
|
218
|
+
column: edge.column,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Truncate a string with ellipsis
|
|
223
|
+
*/
|
|
224
|
+
function truncate(str, maxLength) {
|
|
225
|
+
if (str.length <= maxLength) {
|
|
226
|
+
return str;
|
|
227
|
+
}
|
|
228
|
+
return str.slice(0, maxLength - 3) + '...';
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Format bytes as human-readable string
|
|
232
|
+
*/
|
|
233
|
+
function formatBytes(bytes) {
|
|
234
|
+
if (bytes < 1024) {
|
|
235
|
+
return `${bytes} bytes`;
|
|
236
|
+
}
|
|
237
|
+
else if (bytes < 1024 * 1024) {
|
|
238
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/context/formatter.ts"],"names":[],"mappings":"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"}
|