@samchon/graph 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.
- package/LICENSE +21 -0
- package/README.md +129 -0
- package/lib/AsyncSamchonGraphSource.d.ts +2 -0
- package/lib/AsyncSamchonGraphSource.js +3 -0
- package/lib/AsyncSamchonGraphSource.js.map +1 -0
- package/lib/SamchonGraphApplication.d.ts +10 -0
- package/lib/SamchonGraphApplication.js +64 -0
- package/lib/SamchonGraphApplication.js.map +1 -0
- package/lib/SamchonGraphSource.d.ts +2 -0
- package/lib/SamchonGraphSource.js +3 -0
- package/lib/SamchonGraphSource.js.map +1 -0
- package/lib/application.d.ts +3 -0
- package/lib/application.js +20 -0
- package/lib/application.js.map +1 -0
- package/lib/bin.d.ts +2 -0
- package/lib/bin.js +8 -0
- package/lib/bin.js.map +1 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +30 -0
- package/lib/index.js.map +1 -0
- package/lib/indexer/IBuildGraphOptions.d.ts +41 -0
- package/lib/indexer/IBuildGraphOptions.js +3 -0
- package/lib/indexer/IBuildGraphOptions.js.map +1 -0
- package/lib/indexer/IIndexerResult.d.ts +5 -0
- package/lib/indexer/IIndexerResult.js +3 -0
- package/lib/indexer/IIndexerResult.js.map +1 -0
- package/lib/indexer/ILanguageSpec.d.ts +10 -0
- package/lib/indexer/ILanguageSpec.js +3 -0
- package/lib/indexer/ILanguageSpec.js.map +1 -0
- package/lib/indexer/LANGUAGE_SPECS.d.ts +2 -0
- package/lib/indexer/LANGUAGE_SPECS.js +114 -0
- package/lib/indexer/LANGUAGE_SPECS.js.map +1 -0
- package/lib/indexer/allExtensions.d.ts +2 -0
- package/lib/indexer/allExtensions.js +16 -0
- package/lib/indexer/allExtensions.js.map +1 -0
- package/lib/indexer/buildGraph.d.ts +3 -0
- package/lib/indexer/buildGraph.js +10 -0
- package/lib/indexer/buildGraph.js.map +1 -0
- package/lib/indexer/buildGraphDump.d.ts +3 -0
- package/lib/indexer/buildGraphDump.js +394 -0
- package/lib/indexer/buildGraphDump.js.map +1 -0
- package/lib/indexer/buildLspGraph.d.ts +3 -0
- package/lib/indexer/buildLspGraph.js +617 -0
- package/lib/indexer/buildLspGraph.js.map +1 -0
- package/lib/indexer/buildStaticGraph.d.ts +3 -0
- package/lib/indexer/buildStaticGraph.js +479 -0
- package/lib/indexer/buildStaticGraph.js.map +1 -0
- package/lib/indexer/decoratorsAbove.d.ts +1 -0
- package/lib/indexer/decoratorsAbove.js +14 -0
- package/lib/indexer/decoratorsAbove.js.map +1 -0
- package/lib/indexer/languageOf.d.ts +2 -0
- package/lib/indexer/languageOf.js +19 -0
- package/lib/indexer/languageOf.js.map +1 -0
- package/lib/indexer/languages.d.ts +5 -0
- package/lib/indexer/languages.js +22 -0
- package/lib/indexer/languages.js.map +1 -0
- package/lib/indexer/lspIndexer.d.ts +1 -0
- package/lib/indexer/lspIndexer.js +18 -0
- package/lib/indexer/lspIndexer.js.map +1 -0
- package/lib/indexer/overrideEdges.d.ts +2 -0
- package/lib/indexer/overrideEdges.js +45 -0
- package/lib/indexer/overrideEdges.js.map +1 -0
- package/lib/indexer/resolveType.d.ts +2 -0
- package/lib/indexer/resolveType.js +11 -0
- package/lib/indexer/resolveType.js.map +1 -0
- package/lib/indexer/specOf.d.ts +3 -0
- package/lib/indexer/specOf.js +8 -0
- package/lib/indexer/specOf.js.map +1 -0
- package/lib/indexer/staticIndexer.d.ts +1 -0
- package/lib/indexer/staticIndexer.js +18 -0
- package/lib/indexer/staticIndexer.js.map +1 -0
- package/lib/indexer/supertypesOf.d.ts +4 -0
- package/lib/indexer/supertypesOf.js +48 -0
- package/lib/indexer/supertypesOf.js.map +1 -0
- package/lib/lsp/DocumentSymbolResult.d.ts +3 -0
- package/lib/lsp/DocumentSymbolResult.js +3 -0
- package/lib/lsp/DocumentSymbolResult.js.map +1 -0
- package/lib/lsp/IDiagnostic.d.ts +8 -0
- package/lib/lsp/IDiagnostic.js +3 -0
- package/lib/lsp/IDiagnostic.js.map +1 -0
- package/lib/lsp/IDocumentSymbol.d.ts +9 -0
- package/lib/lsp/IDocumentSymbol.js +3 -0
- package/lib/lsp/IDocumentSymbol.js.map +1 -0
- package/lib/lsp/ILocation.d.ts +5 -0
- package/lib/lsp/ILocation.js +3 -0
- package/lib/lsp/ILocation.js.map +1 -0
- package/lib/lsp/IPosition.d.ts +4 -0
- package/lib/lsp/IPosition.js +3 -0
- package/lib/lsp/IPosition.js.map +1 -0
- package/lib/lsp/IRange.d.ts +5 -0
- package/lib/lsp/IRange.js +3 -0
- package/lib/lsp/IRange.js.map +1 -0
- package/lib/lsp/ISymbolInformation.d.ts +7 -0
- package/lib/lsp/ISymbolInformation.js +3 -0
- package/lib/lsp/ISymbolInformation.js.map +1 -0
- package/lib/lsp/LspClient.d.ts +17 -0
- package/lib/lsp/LspClient.js +140 -0
- package/lib/lsp/LspClient.js.map +1 -0
- package/lib/lsp/isDocumentSymbol.d.ts +3 -0
- package/lib/lsp/isDocumentSymbol.js +7 -0
- package/lib/lsp/isDocumentSymbol.js.map +1 -0
- package/lib/lsp/types.d.ts +8 -0
- package/lib/lsp/types.js +25 -0
- package/lib/lsp/types.js.map +1 -0
- package/lib/mcp/createServer.d.ts +3 -0
- package/lib/mcp/createServer.js +1947 -0
- package/lib/mcp/createServer.js.map +1 -0
- package/lib/mcp/startServer.d.ts +5 -0
- package/lib/mcp/startServer.js +23 -0
- package/lib/mcp/startServer.js.map +1 -0
- package/lib/model/GraphMemory.d.ts +25 -0
- package/lib/model/GraphMemory.js +141 -0
- package/lib/model/GraphMemory.js.map +1 -0
- package/lib/operations/bound.d.ts +1 -0
- package/lib/operations/bound.js +8 -0
- package/lib/operations/bound.js.map +1 -0
- package/lib/operations/common.d.ts +15 -0
- package/lib/operations/common.js +32 -0
- package/lib/operations/common.js.map +1 -0
- package/lib/operations/compareEdges.d.ts +2 -0
- package/lib/operations/compareEdges.js +10 -0
- package/lib/operations/compareEdges.js.map +1 -0
- package/lib/operations/edgeRank.d.ts +1 -0
- package/lib/operations/edgeRank.js +25 -0
- package/lib/operations/edgeRank.js.map +1 -0
- package/lib/operations/isExecution.d.ts +1 -0
- package/lib/operations/isExecution.js +11 -0
- package/lib/operations/isExecution.js.map +1 -0
- package/lib/operations/isPublicApiNoisePath.d.ts +2 -0
- package/lib/operations/isPublicApiNoisePath.js +11 -0
- package/lib/operations/isPublicApiNoisePath.js.map +1 -0
- package/lib/operations/isStructural.d.ts +1 -0
- package/lib/operations/isStructural.js +7 -0
- package/lib/operations/isStructural.js.map +1 -0
- package/lib/operations/isSupportPath.d.ts +2 -0
- package/lib/operations/isSupportPath.js +16 -0
- package/lib/operations/isSupportPath.js.map +1 -0
- package/lib/operations/isTestPath.d.ts +1 -0
- package/lib/operations/isTestPath.js +9 -0
- package/lib/operations/isTestPath.js.map +1 -0
- package/lib/operations/isTypeEdge.d.ts +1 -0
- package/lib/operations/isTypeEdge.js +11 -0
- package/lib/operations/isTypeEdge.js.map +1 -0
- package/lib/operations/publicEvidence.d.ts +2 -0
- package/lib/operations/publicEvidence.js +13 -0
- package/lib/operations/publicEvidence.js.map +1 -0
- package/lib/operations/referencesFromEdges.d.ts +3 -0
- package/lib/operations/referencesFromEdges.js +38 -0
- package/lib/operations/referencesFromEdges.js.map +1 -0
- package/lib/operations/resolveHandle.d.ts +6 -0
- package/lib/operations/resolveHandle.js +28 -0
- package/lib/operations/resolveHandle.js.map +1 -0
- package/lib/operations/resultGuide.d.ts +1 -0
- package/lib/operations/resultGuide.js +7 -0
- package/lib/operations/resultGuide.js.map +1 -0
- package/lib/operations/resultNext.d.ts +2 -0
- package/lib/operations/resultNext.js +7 -0
- package/lib/operations/resultNext.js.map +1 -0
- package/lib/operations/runDetails.d.ts +8 -0
- package/lib/operations/runDetails.js +190 -0
- package/lib/operations/runDetails.js.map +1 -0
- package/lib/operations/runEntrypoints.d.ts +9 -0
- package/lib/operations/runEntrypoints.js +122 -0
- package/lib/operations/runEntrypoints.js.map +1 -0
- package/lib/operations/runLookup.d.ts +10 -0
- package/lib/operations/runLookup.js +229 -0
- package/lib/operations/runLookup.js.map +1 -0
- package/lib/operations/runOverview.d.ts +10 -0
- package/lib/operations/runOverview.js +142 -0
- package/lib/operations/runOverview.js.map +1 -0
- package/lib/operations/runTour.d.ts +8 -0
- package/lib/operations/runTour.js +539 -0
- package/lib/operations/runTour.js.map +1 -0
- package/lib/operations/runTrace.d.ts +10 -0
- package/lib/operations/runTrace.js +283 -0
- package/lib/operations/runTrace.js.map +1 -0
- package/lib/operations/signatureOf.d.ts +2 -0
- package/lib/operations/signatureOf.js +45 -0
- package/lib/operations/signatureOf.js.map +1 -0
- package/lib/operations/subwords.d.ts +1 -0
- package/lib/operations/subwords.js +12 -0
- package/lib/operations/subwords.js.map +1 -0
- package/lib/operations/summaryOf.d.ts +2 -0
- package/lib/operations/summaryOf.js +24 -0
- package/lib/operations/summaryOf.js.map +1 -0
- package/lib/runGraph.d.ts +1 -0
- package/lib/runGraph.js +165 -0
- package/lib/runGraph.js.map +1 -0
- package/lib/structures/GraphEdgeKind.d.ts +10 -0
- package/lib/structures/GraphEdgeKind.js +3 -0
- package/lib/structures/GraphEdgeKind.js.map +1 -0
- package/lib/structures/GraphLanguage.d.ts +2 -0
- package/lib/structures/GraphLanguage.js +3 -0
- package/lib/structures/GraphLanguage.js.map +1 -0
- package/lib/structures/GraphNodeKind.d.ts +11 -0
- package/lib/structures/GraphNodeKind.js +3 -0
- package/lib/structures/GraphNodeKind.js.map +1 -0
- package/lib/structures/IGraphDecorator.d.ts +22 -0
- package/lib/structures/IGraphDecorator.js +3 -0
- package/lib/structures/IGraphDecorator.js.map +1 -0
- package/lib/structures/IGraphDetails.d.ts +126 -0
- package/lib/structures/IGraphDetails.js +3 -0
- package/lib/structures/IGraphDetails.js.map +1 -0
- package/lib/structures/IGraphDiagnostic.d.ts +23 -0
- package/lib/structures/IGraphDiagnostic.js +3 -0
- package/lib/structures/IGraphDiagnostic.js.map +1 -0
- package/lib/structures/IGraphDump.d.ts +37 -0
- package/lib/structures/IGraphDump.js +3 -0
- package/lib/structures/IGraphDump.js.map +1 -0
- package/lib/structures/IGraphEdge.d.ts +20 -0
- package/lib/structures/IGraphEdge.js +3 -0
- package/lib/structures/IGraphEdge.js.map +1 -0
- package/lib/structures/IGraphEntrypoints.d.ts +57 -0
- package/lib/structures/IGraphEntrypoints.js +3 -0
- package/lib/structures/IGraphEntrypoints.js.map +1 -0
- package/lib/structures/IGraphEscape.d.ts +40 -0
- package/lib/structures/IGraphEscape.js +3 -0
- package/lib/structures/IGraphEscape.js.map +1 -0
- package/lib/structures/IGraphEvidence.d.ts +24 -0
- package/lib/structures/IGraphEvidence.js +3 -0
- package/lib/structures/IGraphEvidence.js.map +1 -0
- package/lib/structures/IGraphLookup.d.ts +66 -0
- package/lib/structures/IGraphLookup.js +3 -0
- package/lib/structures/IGraphLookup.js.map +1 -0
- package/lib/structures/IGraphNext.d.ts +15 -0
- package/lib/structures/IGraphNext.js +3 -0
- package/lib/structures/IGraphNext.js.map +1 -0
- package/lib/structures/IGraphNode.d.ts +62 -0
- package/lib/structures/IGraphNode.js +3 -0
- package/lib/structures/IGraphNode.js.map +1 -0
- package/lib/structures/IGraphOverview.d.ts +100 -0
- package/lib/structures/IGraphOverview.js +3 -0
- package/lib/structures/IGraphOverview.js.map +1 -0
- package/lib/structures/IGraphTour.d.ts +54 -0
- package/lib/structures/IGraphTour.js +3 -0
- package/lib/structures/IGraphTour.js.map +1 -0
- package/lib/structures/IGraphTrace.d.ts +126 -0
- package/lib/structures/IGraphTrace.js +3 -0
- package/lib/structures/IGraphTrace.js.map +1 -0
- package/lib/structures/ISamchonGraphApplication.d.ts +162 -0
- package/lib/structures/ISamchonGraphApplication.js +3 -0
- package/lib/structures/ISamchonGraphApplication.js.map +1 -0
- package/lib/structures/index.d.ts +18 -0
- package/lib/structures/index.js +35 -0
- package/lib/structures/index.js.map +1 -0
- package/lib/structures.d.ts +1 -0
- package/lib/structures.js +18 -0
- package/lib/structures.js.map +1 -0
- package/lib/utils/DEFAULT_IGNORES.d.ts +1 -0
- package/lib/utils/DEFAULT_IGNORES.js +39 -0
- package/lib/utils/DEFAULT_IGNORES.js.map +1 -0
- package/lib/utils/IWalkOptions.d.ts +5 -0
- package/lib/utils/IWalkOptions.js +3 -0
- package/lib/utils/IWalkOptions.js.map +1 -0
- package/lib/utils/basename.d.ts +1 -0
- package/lib/utils/basename.js +10 -0
- package/lib/utils/basename.js.map +1 -0
- package/lib/utils/dirname.d.ts +1 -0
- package/lib/utils/dirname.js +10 -0
- package/lib/utils/dirname.js.map +1 -0
- package/lib/utils/fileFromUri.d.ts +1 -0
- package/lib/utils/fileFromUri.js +20 -0
- package/lib/utils/fileFromUri.js.map +1 -0
- package/lib/utils/fileUri.d.ts +1 -0
- package/lib/utils/fileUri.js +19 -0
- package/lib/utils/fileUri.js.map +1 -0
- package/lib/utils/fs.d.ts +6 -0
- package/lib/utils/fs.js +23 -0
- package/lib/utils/fs.js.map +1 -0
- package/lib/utils/isSubPath.d.ts +1 -0
- package/lib/utils/isSubPath.js +15 -0
- package/lib/utils/isSubPath.js.map +1 -0
- package/lib/utils/normalizePath.d.ts +1 -0
- package/lib/utils/normalizePath.js +7 -0
- package/lib/utils/normalizePath.js.map +1 -0
- package/lib/utils/path.d.ts +7 -0
- package/lib/utils/path.js +24 -0
- package/lib/utils/path.js.map +1 -0
- package/lib/utils/projectRelative.d.ts +1 -0
- package/lib/utils/projectRelative.js +9 -0
- package/lib/utils/projectRelative.js.map +1 -0
- package/lib/utils/readLines.d.ts +1 -0
- package/lib/utils/readLines.js +8 -0
- package/lib/utils/readLines.js.map +1 -0
- package/lib/utils/readText.d.ts +1 -0
- package/lib/utils/readText.js +17 -0
- package/lib/utils/readText.js.map +1 -0
- package/lib/utils/relativePath.d.ts +1 -0
- package/lib/utils/relativePath.js +12 -0
- package/lib/utils/relativePath.js.map +1 -0
- package/lib/utils/walkSourceFiles.d.ts +2 -0
- package/lib/utils/walkSourceFiles.js +44 -0
- package/lib/utils/walkSourceFiles.js.map +1 -0
- package/package.json +55 -0
- package/src/AsyncSamchonGraphSource.ts +5 -0
- package/src/SamchonGraphApplication.ts +74 -0
- package/src/SamchonGraphSource.ts +3 -0
- package/src/application.ts +3 -0
- package/src/bin.ts +6 -0
- package/src/index.ts +13 -0
- package/src/indexer/IBuildGraphOptions.ts +42 -0
- package/src/indexer/IIndexerResult.ts +6 -0
- package/src/indexer/ILanguageSpec.ts +11 -0
- package/src/indexer/LANGUAGE_SPECS.ts +112 -0
- package/src/indexer/allExtensions.ts +12 -0
- package/src/indexer/buildGraph.ts +10 -0
- package/src/indexer/buildGraphDump.ts +29 -0
- package/src/indexer/buildLspGraph.ts +710 -0
- package/src/indexer/buildStaticGraph.ts +507 -0
- package/src/indexer/decoratorsAbove.ts +9 -0
- package/src/indexer/languageOf.ts +13 -0
- package/src/indexer/languages.ts +5 -0
- package/src/indexer/lspIndexer.ts +1 -0
- package/src/indexer/overrideEdges.ts +42 -0
- package/src/indexer/resolveType.ts +14 -0
- package/src/indexer/specOf.ts +7 -0
- package/src/indexer/staticIndexer.ts +1 -0
- package/src/indexer/supertypesOf.ts +43 -0
- package/src/lsp/DocumentSymbolResult.ts +4 -0
- package/src/lsp/IDiagnostic.ts +9 -0
- package/src/lsp/IDocumentSymbol.ts +10 -0
- package/src/lsp/ILocation.ts +6 -0
- package/src/lsp/IPosition.ts +4 -0
- package/src/lsp/IRange.ts +6 -0
- package/src/lsp/ISymbolInformation.ts +8 -0
- package/src/lsp/LspClient.ts +165 -0
- package/src/lsp/isDocumentSymbol.ts +8 -0
- package/src/lsp/types.ts +8 -0
- package/src/mcp/createServer.ts +23 -0
- package/src/mcp/startServer.ts +23 -0
- package/src/model/GraphMemory.ts +165 -0
- package/src/operations/bound.ts +9 -0
- package/src/operations/common.ts +15 -0
- package/src/operations/compareEdges.ts +10 -0
- package/src/operations/edgeRank.ts +23 -0
- package/src/operations/isExecution.ts +9 -0
- package/src/operations/isPublicApiNoisePath.ts +10 -0
- package/src/operations/isStructural.ts +3 -0
- package/src/operations/isSupportPath.ts +16 -0
- package/src/operations/isTestPath.ts +7 -0
- package/src/operations/isTypeEdge.ts +9 -0
- package/src/operations/publicEvidence.ts +11 -0
- package/src/operations/referencesFromEdges.ts +37 -0
- package/src/operations/resolveHandle.ts +27 -0
- package/src/operations/resultGuide.ts +3 -0
- package/src/operations/resultNext.ts +9 -0
- package/src/operations/runDetails.ts +240 -0
- package/src/operations/runEntrypoints.ts +153 -0
- package/src/operations/runLookup.ts +269 -0
- package/src/operations/runOverview.ts +158 -0
- package/src/operations/runTour.ts +582 -0
- package/src/operations/runTrace.ts +339 -0
- package/src/operations/signatureOf.ts +40 -0
- package/src/operations/subwords.ts +8 -0
- package/src/operations/summaryOf.ts +21 -0
- package/src/runGraph.ts +144 -0
- package/src/structures/GraphEdgeKind.ts +24 -0
- package/src/structures/GraphLanguage.ts +21 -0
- package/src/structures/GraphNodeKind.ts +27 -0
- package/src/structures/IGraphDecorator.ts +25 -0
- package/src/structures/IGraphDetails.ts +153 -0
- package/src/structures/IGraphDiagnostic.ts +29 -0
- package/src/structures/IGraphDump.ts +45 -0
- package/src/structures/IGraphEdge.ts +24 -0
- package/src/structures/IGraphEntrypoints.ts +70 -0
- package/src/structures/IGraphEscape.ts +49 -0
- package/src/structures/IGraphEvidence.ts +29 -0
- package/src/structures/IGraphLookup.ts +80 -0
- package/src/structures/IGraphNext.ts +23 -0
- package/src/structures/IGraphNode.ts +76 -0
- package/src/structures/IGraphOverview.ts +121 -0
- package/src/structures/IGraphTour.ts +68 -0
- package/src/structures/IGraphTrace.ts +154 -0
- package/src/structures/ISamchonGraphApplication.ts +186 -0
- package/src/structures/index.ts +18 -0
- package/src/structures.ts +1 -0
- package/src/utils/DEFAULT_IGNORES.ts +35 -0
- package/src/utils/IWalkOptions.ts +5 -0
- package/src/utils/basename.ts +7 -0
- package/src/utils/dirname.ts +7 -0
- package/src/utils/fileFromUri.ts +14 -0
- package/src/utils/fileUri.ts +13 -0
- package/src/utils/fs.ts +6 -0
- package/src/utils/isSubPath.ts +9 -0
- package/src/utils/normalizePath.ts +3 -0
- package/src/utils/path.ts +7 -0
- package/src/utils/projectRelative.ts +6 -0
- package/src/utils/readLines.ts +5 -0
- package/src/utils/readText.ts +10 -0
- package/src/utils/relativePath.ts +7 -0
- package/src/utils/walkSourceFiles.ts +35 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runDetails = runDetails;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const common_1 = require("./common");
|
|
10
|
+
const DEFAULT_NEIGHBORS = 2;
|
|
11
|
+
const MAX_NEIGHBORS = 3;
|
|
12
|
+
const DEFAULT_MEMBERS = 6;
|
|
13
|
+
const MAX_MEMBERS = 8;
|
|
14
|
+
const DEFAULT_DEPENDENCIES = 2;
|
|
15
|
+
const MAX_DEPENDENCIES = 4;
|
|
16
|
+
// Object literal outlines are navigation aids, not source excerpts.
|
|
17
|
+
const MAX_OBJECT_MEMBER_LINES = 300;
|
|
18
|
+
// Kinds whose value is their member outline, not implementation text.
|
|
19
|
+
const CONTAINER_KINDS = new Set([
|
|
20
|
+
"class",
|
|
21
|
+
"interface",
|
|
22
|
+
"namespace",
|
|
23
|
+
"module",
|
|
24
|
+
"enum",
|
|
25
|
+
"file",
|
|
26
|
+
]);
|
|
27
|
+
const EXECUTION_KINDS = new Set(["calls", "instantiates", "accesses", "renders"]);
|
|
28
|
+
const TYPE_KINDS = new Set(["type_ref", "extends", "implements", "overrides"]);
|
|
29
|
+
/**
|
|
30
|
+
* Resolve each handle to its declared shape: sourceSpan anchors, signature,
|
|
31
|
+
* direct dependencies, and for containers, member outlines. It answers from the
|
|
32
|
+
* graph's resolved structure instead of inlining implementation bodies.
|
|
33
|
+
*/
|
|
34
|
+
function runDetails(graph, props) {
|
|
35
|
+
const neighborLimit = (0, common_1.bound)(props.neighborLimit, DEFAULT_NEIGHBORS, 1, MAX_NEIGHBORS);
|
|
36
|
+
const memberLimit = (0, common_1.bound)(props.memberLimit, DEFAULT_MEMBERS, 1, MAX_MEMBERS);
|
|
37
|
+
const dependencyLimit = (0, common_1.bound)(props.dependencyLimit, DEFAULT_DEPENDENCIES, 1, MAX_DEPENDENCIES);
|
|
38
|
+
const includeExternal = props.includeExternal === true;
|
|
39
|
+
const nodes = [];
|
|
40
|
+
const unknown = [];
|
|
41
|
+
for (const handle of props.handles.slice(0, 6)) {
|
|
42
|
+
const resolved = (0, common_1.resolveHandle)(graph, handle);
|
|
43
|
+
if (resolved.node === undefined) {
|
|
44
|
+
unknown.push(handle);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const node = resolved.node;
|
|
48
|
+
const detail = { ...(0, common_1.summaryOf)(node) };
|
|
49
|
+
const signature = (0, common_1.signatureOf)(graph.project, node);
|
|
50
|
+
if (signature !== undefined)
|
|
51
|
+
detail.signature = signature;
|
|
52
|
+
if (node.decorators !== undefined && node.decorators.length > 0) {
|
|
53
|
+
detail.decorators = node.decorators;
|
|
54
|
+
}
|
|
55
|
+
if (node.implementation !== undefined)
|
|
56
|
+
detail.implementation = (0, common_1.publicEvidence)(node.implementation);
|
|
57
|
+
const calls = (0, common_1.referencesFromEdges)(graph, graph.outgoing(node.id), "to", dependencyLimit, includeExternal, EXECUTION_KINDS);
|
|
58
|
+
if (calls.length > 0)
|
|
59
|
+
detail.calls = calls;
|
|
60
|
+
const types = (0, common_1.referencesFromEdges)(graph, graph.outgoing(node.id), "to", dependencyLimit, includeExternal, TYPE_KINDS);
|
|
61
|
+
if (types.length > 0)
|
|
62
|
+
detail.types = types;
|
|
63
|
+
if (CONTAINER_KINDS.has(node.kind)) {
|
|
64
|
+
const list = containerMembers(graph, node, memberLimit);
|
|
65
|
+
if (list.length > 0)
|
|
66
|
+
detail.members = list;
|
|
67
|
+
}
|
|
68
|
+
// A variable bound to an object literal has no `contains` members; parse its
|
|
69
|
+
// source span for the top-level property/method outline a consumer reaches
|
|
70
|
+
// for, without inlining the body.
|
|
71
|
+
if (node.kind === "variable" && detail.sourceSpan !== undefined) {
|
|
72
|
+
const list = objectLiteralMembers(graph.project, detail.sourceSpan, memberLimit);
|
|
73
|
+
if (list.length > 0)
|
|
74
|
+
detail.members = list;
|
|
75
|
+
}
|
|
76
|
+
if (props.neighbors === true) {
|
|
77
|
+
detail.dependsOn = (0, common_1.referencesFromEdges)(graph, graph.outgoing(node.id), "to", neighborLimit, includeExternal);
|
|
78
|
+
detail.dependedOnBy = (0, common_1.referencesFromEdges)(graph, graph.incoming(node.id), "from", neighborLimit, includeExternal);
|
|
79
|
+
}
|
|
80
|
+
const diagnostics = graph.diagnosticsFor(node.file);
|
|
81
|
+
if (diagnostics.length > 0)
|
|
82
|
+
detail.diagnostics = diagnostics.slice(0, 5);
|
|
83
|
+
nodes.push(detail);
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
type: "details",
|
|
87
|
+
nodes,
|
|
88
|
+
unknown,
|
|
89
|
+
next: (0, common_1.resultNext)("answer", "Selected signatures, members, dependencies, diagnostics, and spans are enough for a shape or reading-anchor answer."),
|
|
90
|
+
guide: (0, common_1.resultGuide)("Use signatures, members, calls, types, diagnostics, and sourceSpan anchors as selected symbol facts."),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** The members a container owns (via `contains`), each with its own signature. */
|
|
94
|
+
function containerMembers(graph, node, limit) {
|
|
95
|
+
const out = [];
|
|
96
|
+
for (const edge of graph.outgoing(node.id)) {
|
|
97
|
+
if (edge.kind !== "contains")
|
|
98
|
+
continue;
|
|
99
|
+
const member = graph.node(edge.to);
|
|
100
|
+
if (member === undefined)
|
|
101
|
+
continue;
|
|
102
|
+
const signature = (0, common_1.signatureOf)(graph.project, member);
|
|
103
|
+
out.push({
|
|
104
|
+
name: member.qualifiedName ?? member.name,
|
|
105
|
+
kind: member.kind,
|
|
106
|
+
...(member.evidence?.startLine !== undefined ? { line: member.evidence.startLine } : {}),
|
|
107
|
+
...(signature !== undefined ? { signature } : {}),
|
|
108
|
+
});
|
|
109
|
+
if (out.length >= limit)
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The top-level members of an object literal, parsed from its source span by
|
|
116
|
+
* bracket depth. A member is a property (`name:`) or method (`name(`) declared
|
|
117
|
+
* directly inside the outermost `{ }`.
|
|
118
|
+
*/
|
|
119
|
+
function objectLiteralMembers(project, span, limit) {
|
|
120
|
+
if (span.endLine === undefined)
|
|
121
|
+
return [];
|
|
122
|
+
if (span.endLine - span.startLine > MAX_OBJECT_MEMBER_LINES)
|
|
123
|
+
return [];
|
|
124
|
+
const lines = fileLines(project, span.file);
|
|
125
|
+
if (lines === undefined)
|
|
126
|
+
return [];
|
|
127
|
+
const start = Math.max(0, span.startLine - 1);
|
|
128
|
+
const end = Math.min(lines.length - 1, span.endLine - 1);
|
|
129
|
+
const members = [];
|
|
130
|
+
let depth = 0;
|
|
131
|
+
let entered = false;
|
|
132
|
+
for (let i = start; i <= end; i++) {
|
|
133
|
+
// `end` is clamped to lines.length-1, so every index is in range; the `?? ""`
|
|
134
|
+
// is a defensive fallback that cannot be reached.
|
|
135
|
+
/* c8 ignore next */
|
|
136
|
+
const raw = lines[i] ?? "";
|
|
137
|
+
const text = stripStrings(raw);
|
|
138
|
+
if (entered && depth === 1) {
|
|
139
|
+
const member = objectMemberOf(raw, i + 1);
|
|
140
|
+
if (member !== undefined) {
|
|
141
|
+
members.push(member);
|
|
142
|
+
if (members.length >= limit)
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
for (const char of text) {
|
|
147
|
+
if (char === "{") {
|
|
148
|
+
depth++;
|
|
149
|
+
entered = true;
|
|
150
|
+
}
|
|
151
|
+
else if (char === "}") {
|
|
152
|
+
depth = Math.max(0, depth - 1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return members;
|
|
157
|
+
}
|
|
158
|
+
function objectMemberOf(line, lineNumber) {
|
|
159
|
+
const text = line.trim();
|
|
160
|
+
if (text === "" || text.startsWith("//") || text.startsWith("/*") || text.startsWith("*")) {
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
const property = /^(['"]?)([A-Za-z_$][\w$-]*)\1\s*\??\s*:/.exec(text);
|
|
164
|
+
if (property !== null) {
|
|
165
|
+
return { name: property[2], kind: "property", line: lineNumber, signature: signatureLine(text) };
|
|
166
|
+
}
|
|
167
|
+
const method = /^(?:async\s+)?(?:get\s+|set\s+)?([A-Za-z_$][\w$-]*)\s*\(/.exec(text);
|
|
168
|
+
if (method !== null) {
|
|
169
|
+
return { name: method[1], kind: "method", line: lineNumber, signature: signatureLine(text) };
|
|
170
|
+
}
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
function signatureLine(text) {
|
|
174
|
+
return text.replace(/\s+/g, " ").replace(/,$/, "");
|
|
175
|
+
}
|
|
176
|
+
function stripStrings(line) {
|
|
177
|
+
return line.replace(/\/\/.*$/, "").replace(/(['"`])(?:\\.|(?!\1).)*\1/g, "");
|
|
178
|
+
}
|
|
179
|
+
/** Read a file's lines once, or undefined when it cannot be read. */
|
|
180
|
+
function fileLines(project, file) {
|
|
181
|
+
if (file === "")
|
|
182
|
+
return undefined;
|
|
183
|
+
try {
|
|
184
|
+
return node_fs_1.default.readFileSync(node_path_1.default.join(project, file), "utf8").split(/\r?\n/);
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=runDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runDetails.js","sourceRoot":"","sources":["../../src/operations/runDetails.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { GraphMemory } from "../model/GraphMemory";
|
|
2
|
+
import { IGraphEntrypoints } from "../structures";
|
|
3
|
+
/**
|
|
4
|
+
* Build the first source-free entrypoints list for a code question. The result
|
|
5
|
+
* gives the model stable handles, declaration signatures, and direct graph
|
|
6
|
+
* context. It is deliberately not a source reader; details adds selected symbol
|
|
7
|
+
* shape and ranges, not implementation text.
|
|
8
|
+
*/
|
|
9
|
+
export declare function runEntrypoints(graph: GraphMemory, props: IGraphEntrypoints.IRequest): IGraphEntrypoints;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runEntrypoints = runEntrypoints;
|
|
4
|
+
const common_1 = require("./common");
|
|
5
|
+
const runLookup_1 = require("./runLookup");
|
|
6
|
+
const DEFAULT_LIMIT = 4;
|
|
7
|
+
const MAX_LIMIT = 8;
|
|
8
|
+
const MAX_SEEDS = 3;
|
|
9
|
+
const NEIGHBOR_LIMIT = 2;
|
|
10
|
+
/**
|
|
11
|
+
* Build the first source-free entrypoints list for a code question. The result
|
|
12
|
+
* gives the model stable handles, declaration signatures, and direct graph
|
|
13
|
+
* context. It is deliberately not a source reader; details adds selected symbol
|
|
14
|
+
* shape and ranges, not implementation text.
|
|
15
|
+
*/
|
|
16
|
+
function runEntrypoints(graph, props) {
|
|
17
|
+
const query = props.query.trim();
|
|
18
|
+
const limit = (0, common_1.bound)(props.limit, DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
19
|
+
const lookup = (0, runLookup_1.runLookup)(graph, {
|
|
20
|
+
type: "lookup",
|
|
21
|
+
query,
|
|
22
|
+
language: props.language,
|
|
23
|
+
limit,
|
|
24
|
+
});
|
|
25
|
+
const ranked = lookup.hits.map((hit) => ({
|
|
26
|
+
...hit,
|
|
27
|
+
reason: reasonOf(graph, hit.id),
|
|
28
|
+
}));
|
|
29
|
+
// Code handles written directly in the query, resolved to concrete nodes.
|
|
30
|
+
const mentions = [];
|
|
31
|
+
const mentionSeen = new Set();
|
|
32
|
+
for (const handle of directMentions(graph, query)) {
|
|
33
|
+
const resolved = (0, common_1.resolveHandle)(graph, handle);
|
|
34
|
+
if (resolved.node !== undefined && !mentionSeen.has(resolved.node.id)) {
|
|
35
|
+
mentionSeen.add(resolved.node.id);
|
|
36
|
+
mentions.push(resolved.node);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Seeds for dependency orientation: resolved mentions first (the user named
|
|
40
|
+
// them), then the ranked hits.
|
|
41
|
+
const seeds = [];
|
|
42
|
+
const seedSeen = new Set();
|
|
43
|
+
const addSeed = (node) => {
|
|
44
|
+
if (node === undefined || node.kind === "file" || seedSeen.has(node.id))
|
|
45
|
+
return;
|
|
46
|
+
seedSeen.add(node.id);
|
|
47
|
+
seeds.push(node);
|
|
48
|
+
};
|
|
49
|
+
for (const node of mentions)
|
|
50
|
+
addSeed(node);
|
|
51
|
+
for (const hit of ranked)
|
|
52
|
+
addSeed(graph.node(hit.id));
|
|
53
|
+
const dependencyOrientation = seeds
|
|
54
|
+
.slice(0, MAX_SEEDS)
|
|
55
|
+
.flatMap((node) => orientationLines(graph, node));
|
|
56
|
+
return {
|
|
57
|
+
type: "entrypoints",
|
|
58
|
+
query,
|
|
59
|
+
ranked,
|
|
60
|
+
mentions: mentions.map(common_1.summaryOf),
|
|
61
|
+
dependencyOrientation,
|
|
62
|
+
next: (0, common_1.resultNext)("inspect", "Use one returned handle for trace/details when the answer needs flow or selected shape.", "trace"),
|
|
63
|
+
guide: (0, common_1.resultGuide)("Use ranked hits, mentions, and dependency orientation as the code index. If they identify the relevant files and symbols, answer or make one focused trace/details call; do not search the repository to verify them."),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function reasonOf(graph, id) {
|
|
67
|
+
const fanIn = graph.incoming(id).filter((edge) => !(0, common_1.isStructural)(edge.kind)).length;
|
|
68
|
+
const fanOut = graph.outgoing(id).filter((edge) => !(0, common_1.isStructural)(edge.kind)).length;
|
|
69
|
+
if (fanOut > fanIn)
|
|
70
|
+
return "High outgoing dependency flow for this query.";
|
|
71
|
+
if (fanIn > 0)
|
|
72
|
+
return "Referenced by other indexed symbols.";
|
|
73
|
+
return "Name/path match in the resident graph.";
|
|
74
|
+
}
|
|
75
|
+
function orientationLines(graph, node) {
|
|
76
|
+
const dependsOn = (0, common_1.referencesFromEdges)(graph, graph.outgoing(node.id), "to", NEIGHBOR_LIMIT, false);
|
|
77
|
+
const dependedOnBy = (0, common_1.referencesFromEdges)(graph, graph.incoming(node.id), "from", NEIGHBOR_LIMIT, false);
|
|
78
|
+
const name = node.qualifiedName ?? node.name;
|
|
79
|
+
const out = [];
|
|
80
|
+
for (const ref of dependsOn)
|
|
81
|
+
out.push(`${name} -[${ref.relation}]-> ${ref.name}`);
|
|
82
|
+
for (const ref of dependedOnBy)
|
|
83
|
+
out.push(`${ref.name} -[${ref.relation}]-> ${name}`);
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
function directMentions(graph, query) {
|
|
87
|
+
const handles = new Set();
|
|
88
|
+
for (const token of query.split(/\s+/)) {
|
|
89
|
+
const handle = normalizeNodeIdToken(token);
|
|
90
|
+
if (handle !== undefined && graph.node(handle) !== undefined)
|
|
91
|
+
handles.add(handle);
|
|
92
|
+
}
|
|
93
|
+
for (const match of query.matchAll(/`([^`]+)`/g)) {
|
|
94
|
+
const raw = match[1];
|
|
95
|
+
const id = normalizeNodeIdToken(raw);
|
|
96
|
+
if (id !== undefined && graph.node(id) !== undefined) {
|
|
97
|
+
handles.add(id);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const handle = normalizeHandle(raw);
|
|
101
|
+
if (handle !== undefined)
|
|
102
|
+
handles.add(handle);
|
|
103
|
+
}
|
|
104
|
+
for (const match of query.matchAll(/\b[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)+\b/g)) {
|
|
105
|
+
const handle = normalizeHandle(match[0]);
|
|
106
|
+
if (handle !== undefined)
|
|
107
|
+
handles.add(handle);
|
|
108
|
+
}
|
|
109
|
+
return [...handles];
|
|
110
|
+
}
|
|
111
|
+
function normalizeNodeIdToken(raw) {
|
|
112
|
+
const value = raw
|
|
113
|
+
.trim()
|
|
114
|
+
.replace(/^[`"'([{]+/, "")
|
|
115
|
+
.replace(/[`"',.;:)\]}]+$/, "");
|
|
116
|
+
return /^[^\s#]+#[^\s#]+:[a-z_]+$/.test(value) ? value : undefined;
|
|
117
|
+
}
|
|
118
|
+
function normalizeHandle(raw) {
|
|
119
|
+
const value = raw.trim();
|
|
120
|
+
return /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*$/.test(value) ? value : undefined;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=runEntrypoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runEntrypoints.js","sourceRoot":"","sources":["../../src/operations/runEntrypoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GraphMemory } from "../model/GraphMemory";
|
|
2
|
+
import { IGraphLookup } from "../structures";
|
|
3
|
+
/**
|
|
4
|
+
* Rank the graph's symbols against a natural query. Scoring blends exact and
|
|
5
|
+
* dotted-name matches, CamelCase/subword coverage, file-path terms, a prefix
|
|
6
|
+
* bonus, and dependency centrality, then dampens external, generated, and test
|
|
7
|
+
* nodes and caps per file so the result is a diverse, relevant shortlist rather
|
|
8
|
+
* than one file's roster.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runLookup(graph: GraphMemory, props: IGraphLookup.IRequest): IGraphLookup;
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runLookup = runLookup;
|
|
4
|
+
const isSupportPath_1 = require("./isSupportPath");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
// One file should not crowd out the rest of the ranking, so cap hits per file.
|
|
7
|
+
const PER_FILE = 3;
|
|
8
|
+
const DEFAULT_LIMIT = 5;
|
|
9
|
+
const MAX_LIMIT = 6;
|
|
10
|
+
/**
|
|
11
|
+
* Rank the graph's symbols against a natural query. Scoring blends exact and
|
|
12
|
+
* dotted-name matches, CamelCase/subword coverage, file-path terms, a prefix
|
|
13
|
+
* bonus, and dependency centrality, then dampens external, generated, and test
|
|
14
|
+
* nodes and caps per file so the result is a diverse, relevant shortlist rather
|
|
15
|
+
* than one file's roster.
|
|
16
|
+
*/
|
|
17
|
+
function runLookup(graph, props) {
|
|
18
|
+
const terms = (0, common_1.subwords)(props.query);
|
|
19
|
+
const codeTerms = exactCodeTerms(props.query);
|
|
20
|
+
const requestedKinds = requestedSymbolKinds(props.query);
|
|
21
|
+
const queryLc = props.query.trim().toLowerCase();
|
|
22
|
+
const wantsInternal = wantsInternalSymbol(queryLc, codeTerms);
|
|
23
|
+
const wantsSupport = wantsSupportSymbol(queryLc);
|
|
24
|
+
const includeExternal = props.includeExternal === true;
|
|
25
|
+
if (terms.length === 0) {
|
|
26
|
+
return {
|
|
27
|
+
type: "lookup",
|
|
28
|
+
hits: [],
|
|
29
|
+
next: (0, common_1.resultNext)("clarify", "No symbol matched; ask for a concrete symbol or scope."),
|
|
30
|
+
guide: (0, common_1.resultGuide)("No symbol matched; answer that the graph did not resolve this name or ask for a more concrete symbol."),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const scored = [];
|
|
34
|
+
for (const node of graph.nodes) {
|
|
35
|
+
if (node.kind === "file")
|
|
36
|
+
continue;
|
|
37
|
+
if (!includeExternal && node.external)
|
|
38
|
+
continue;
|
|
39
|
+
if (props.language !== undefined && node.language !== props.language)
|
|
40
|
+
continue;
|
|
41
|
+
if (props.kind !== undefined && node.kind !== props.kind)
|
|
42
|
+
continue;
|
|
43
|
+
const score = scoreNode(graph, node, queryLc, terms, codeTerms, requestedKinds, wantsInternal, wantsSupport);
|
|
44
|
+
if (score <= 0)
|
|
45
|
+
continue;
|
|
46
|
+
const hit = {
|
|
47
|
+
...(0, common_1.summaryOf)(node),
|
|
48
|
+
score: Math.round(score),
|
|
49
|
+
};
|
|
50
|
+
if (node.decorators !== undefined && node.decorators.length > 0) {
|
|
51
|
+
hit.decorators = node.decorators;
|
|
52
|
+
}
|
|
53
|
+
scored.push(hit);
|
|
54
|
+
}
|
|
55
|
+
scored.sort((a, b) => b.score - a.score);
|
|
56
|
+
// Diversity: keep at most PER_FILE hits per file while filling up to the limit.
|
|
57
|
+
const limit = (0, common_1.bound)(props.limit, DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
58
|
+
const perFile = new Map();
|
|
59
|
+
const hits = [];
|
|
60
|
+
for (const hit of scored) {
|
|
61
|
+
const used = perFile.get(hit.file) ?? 0;
|
|
62
|
+
if (used >= PER_FILE)
|
|
63
|
+
continue;
|
|
64
|
+
perFile.set(hit.file, used + 1);
|
|
65
|
+
hits.push(hit);
|
|
66
|
+
if (hits.length >= limit)
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
// Attach each kept hit's signature only for the shortlist, so the model can
|
|
70
|
+
// often answer from lookup alone without a details call.
|
|
71
|
+
for (const hit of hits) {
|
|
72
|
+
const node = graph.node(hit.id);
|
|
73
|
+
// hits are built from real graph nodes, so the id always resolves.
|
|
74
|
+
/* c8 ignore next */
|
|
75
|
+
if (node === undefined)
|
|
76
|
+
continue;
|
|
77
|
+
const sig = (0, common_1.signatureOf)(graph.project, node);
|
|
78
|
+
if (sig !== undefined)
|
|
79
|
+
hit.signature = sig;
|
|
80
|
+
}
|
|
81
|
+
// Backtick-quoted code handles that matched nothing are worth flagging so the
|
|
82
|
+
// model does not silently assume they resolved.
|
|
83
|
+
const matched = new Set(hits.flatMap((hit) => (0, common_1.subwords)(hit.name)));
|
|
84
|
+
const unknown = codeTerms.filter((term) => !(0, common_1.subwords)(term).every((sub) => matched.has(sub)));
|
|
85
|
+
return {
|
|
86
|
+
type: "lookup",
|
|
87
|
+
hits,
|
|
88
|
+
...(unknown.length > 0 ? { unknown } : {}),
|
|
89
|
+
next: (0, common_1.resultNext)("inspect", "Use one returned id for trace/details when the answer needs flow or shape.", "details"),
|
|
90
|
+
guide: (0, common_1.resultGuide)("Use ranked hits and signatures as symbol evidence. If the target is clear, answer or make one focused trace/details call; do not search files to verify the match."),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** Score one node against the query; 0 means no match. */
|
|
94
|
+
function scoreNode(graph, node, queryLc, terms, codeTerms, requestedKinds, wantsInternal, wantsSupport) {
|
|
95
|
+
const name = node.name.toLowerCase();
|
|
96
|
+
const qualified = (node.qualifiedName ?? node.name).toLowerCase();
|
|
97
|
+
const nameSubs = (0, common_1.subwords)(node.name);
|
|
98
|
+
const qualifiedSubs = (0, common_1.subwords)(node.qualifiedName ?? node.name);
|
|
99
|
+
const pathSubs = (0, common_1.subwords)(node.file);
|
|
100
|
+
let score = 0;
|
|
101
|
+
if (queryLc === name || queryLc === qualified) {
|
|
102
|
+
score += 100;
|
|
103
|
+
}
|
|
104
|
+
else if (qualified.includes(".") && queryLc.includes(qualified)) {
|
|
105
|
+
score += 85;
|
|
106
|
+
}
|
|
107
|
+
else if (queryLc.includes(".") && qualified.includes(queryLc)) {
|
|
108
|
+
score += 60;
|
|
109
|
+
}
|
|
110
|
+
for (const codeTerm of codeTerms) {
|
|
111
|
+
if (name === codeTerm || qualified === codeTerm) {
|
|
112
|
+
score += 110;
|
|
113
|
+
}
|
|
114
|
+
else if (qualified.endsWith(`.${codeTerm}`)) {
|
|
115
|
+
score += 95;
|
|
116
|
+
}
|
|
117
|
+
else if (codeTerm.includes(".") && qualified.endsWith(codeTerm)) {
|
|
118
|
+
score += 85;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (requestedKinds.has(node.kind))
|
|
122
|
+
score += 16;
|
|
123
|
+
let covered = 0;
|
|
124
|
+
for (const term of terms) {
|
|
125
|
+
if (nameSubs.includes(term)) {
|
|
126
|
+
score += 12;
|
|
127
|
+
covered++;
|
|
128
|
+
}
|
|
129
|
+
else if (qualifiedSubs.includes(term)) {
|
|
130
|
+
score += 8;
|
|
131
|
+
covered++;
|
|
132
|
+
}
|
|
133
|
+
else if (name.includes(term)) {
|
|
134
|
+
score += 5;
|
|
135
|
+
covered++;
|
|
136
|
+
}
|
|
137
|
+
else if (pathSubs.includes(term)) {
|
|
138
|
+
score += 3;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Every query term landed somewhere in the name: a strong whole-query match.
|
|
142
|
+
if (covered === terms.length)
|
|
143
|
+
score += 10;
|
|
144
|
+
if (name.startsWith(terms[0]))
|
|
145
|
+
score += 4;
|
|
146
|
+
if (score <= 0)
|
|
147
|
+
return 0;
|
|
148
|
+
// Centrality: a symbol the codebase leans on is a likelier target.
|
|
149
|
+
const fan = degree(graph, node.id);
|
|
150
|
+
score += Math.min(8, Math.log2(1 + fan) * 2);
|
|
151
|
+
// Dampen what is rarely the intended target.
|
|
152
|
+
if (node.ignored)
|
|
153
|
+
score *= 0.3;
|
|
154
|
+
if ((0, common_1.isTestPath)(node.file))
|
|
155
|
+
score *= 0.7;
|
|
156
|
+
if (!wantsSupport && (0, isSupportPath_1.isSupportPath)(node.file))
|
|
157
|
+
score *= 0.35;
|
|
158
|
+
if (!wantsInternal && isInternalish(node))
|
|
159
|
+
score *= 0.82;
|
|
160
|
+
return score;
|
|
161
|
+
}
|
|
162
|
+
function wantsSupportSymbol(queryLc) {
|
|
163
|
+
return /\b(test|tests|spec|fixture|fixtures|sample|samples|example|examples|generated|build|dist)\b/.test(queryLc);
|
|
164
|
+
}
|
|
165
|
+
function wantsInternalSymbol(queryLc, codeTerms) {
|
|
166
|
+
return (/\b(internal|private|implementation|impl)\b/.test(queryLc) ||
|
|
167
|
+
codeTerms.some((term) => term.startsWith("_") || term.includes("internal")));
|
|
168
|
+
}
|
|
169
|
+
function isInternalish(node) {
|
|
170
|
+
const name = node.qualifiedName ?? node.name;
|
|
171
|
+
return (name.startsWith("_") ||
|
|
172
|
+
name.includes("._") ||
|
|
173
|
+
(0, common_1.subwords)(name).some((word) => word === "internal" || word === "internals"));
|
|
174
|
+
}
|
|
175
|
+
function exactCodeTerms(query) {
|
|
176
|
+
const out = new Set();
|
|
177
|
+
for (const match of query.matchAll(/`([^`]+)`/g)) {
|
|
178
|
+
const normalized = normalizeCodeTerm(match[1]);
|
|
179
|
+
if (normalized !== undefined)
|
|
180
|
+
out.add(normalized);
|
|
181
|
+
}
|
|
182
|
+
for (const match of query.matchAll(/\b([A-Za-z_$][\w$]*)\s+(method|function|class|interface|type|variable)\b/gi)) {
|
|
183
|
+
const normalized = normalizeCodeTerm(match[1]);
|
|
184
|
+
if (normalized !== undefined)
|
|
185
|
+
out.add(normalized);
|
|
186
|
+
}
|
|
187
|
+
for (const match of query.matchAll(/\b[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)+\b/g)) {
|
|
188
|
+
const normalized = normalizeCodeTerm(match[0]);
|
|
189
|
+
if (normalized !== undefined)
|
|
190
|
+
out.add(normalized);
|
|
191
|
+
}
|
|
192
|
+
return [...out];
|
|
193
|
+
}
|
|
194
|
+
function requestedSymbolKinds(query) {
|
|
195
|
+
const kinds = new Set();
|
|
196
|
+
const lc = query.toLowerCase();
|
|
197
|
+
if (/\bmethods?\b/.test(lc))
|
|
198
|
+
kinds.add("method");
|
|
199
|
+
if (/\bfunctions?\b/.test(lc)) {
|
|
200
|
+
kinds.add("function");
|
|
201
|
+
kinds.add("method");
|
|
202
|
+
kinds.add("variable");
|
|
203
|
+
}
|
|
204
|
+
if (/\bclasses?\b/.test(lc))
|
|
205
|
+
kinds.add("class");
|
|
206
|
+
if (/\binterfaces?\b/.test(lc))
|
|
207
|
+
kinds.add("interface");
|
|
208
|
+
if (/\btypes?\b/.test(lc))
|
|
209
|
+
kinds.add("type");
|
|
210
|
+
if (/\bvariables?\b|\bconst\b|\blet\b/.test(lc))
|
|
211
|
+
kinds.add("variable");
|
|
212
|
+
return kinds;
|
|
213
|
+
}
|
|
214
|
+
function normalizeCodeTerm(raw) {
|
|
215
|
+
const value = raw.trim().toLowerCase();
|
|
216
|
+
return /^[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*$/.test(value) ? value : undefined;
|
|
217
|
+
}
|
|
218
|
+
/** Non-structural in+out degree (code dependency, not nesting). */
|
|
219
|
+
function degree(graph, id) {
|
|
220
|
+
let n = 0;
|
|
221
|
+
for (const edge of graph.outgoing(id))
|
|
222
|
+
if (!(0, common_1.isStructural)(edge.kind))
|
|
223
|
+
n++;
|
|
224
|
+
for (const edge of graph.incoming(id))
|
|
225
|
+
if (!(0, common_1.isStructural)(edge.kind))
|
|
226
|
+
n++;
|
|
227
|
+
return n;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=runLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runLookup.js","sourceRoot":"","sources":["../../src/operations/runLookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GraphMemory } from "../model/GraphMemory";
|
|
2
|
+
import { IGraphOverview } from "../structures";
|
|
3
|
+
/**
|
|
4
|
+
* Project a compact, source-read-free architecture map: counts by kind, folder
|
|
5
|
+
* layering with export density, the highest-dependency symbols (ranked by real
|
|
6
|
+
* fan-in/out, excluding structural edges so nesting does not masquerade as
|
|
7
|
+
* dependency), and the export surface by file. Output is bounded so a model
|
|
8
|
+
* reads structure cheaply.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runOverview(graph: GraphMemory, props: IGraphOverview.IRequest): IGraphOverview;
|