@nxuss/lemma 1.32.0 → 1.33.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/README.md +14 -2
- package/dist/cjs/language-core/contracts/CapabilityMatrix.d.ts +10 -0
- package/dist/cjs/language-core/contracts/CapabilityMatrix.d.ts.map +1 -0
- package/dist/cjs/language-core/contracts/CapabilityMatrix.js +70 -0
- package/dist/cjs/language-core/contracts/CapabilityMatrix.js.map +1 -0
- package/dist/cjs/language-core/detection/detectProjectType.d.ts +17 -0
- package/dist/cjs/language-core/detection/detectProjectType.d.ts.map +1 -0
- package/dist/cjs/language-core/detection/detectProjectType.js +186 -0
- package/dist/cjs/language-core/detection/detectProjectType.js.map +1 -0
- package/dist/cjs/language-core/registry/adapterRegistry.d.ts +11 -0
- package/dist/cjs/language-core/registry/adapterRegistry.d.ts.map +1 -0
- package/dist/cjs/language-core/registry/adapterRegistry.js +45 -0
- package/dist/cjs/language-core/registry/adapterRegistry.js.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.d.ts +24 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.d.ts.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.js +199 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.js.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts +37 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.js +51 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.js.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.d.ts +25 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.d.ts.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.js +241 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.js.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.d.ts +18 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.d.ts.map +1 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.js +214 -0
- package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.js.map +1 -0
- package/dist/cjs/languages/csharp/csharpSymbols.d.ts +33 -0
- package/dist/cjs/languages/csharp/csharpSymbols.d.ts.map +1 -0
- package/dist/cjs/languages/csharp/csharpSymbols.js +274 -0
- package/dist/cjs/languages/csharp/csharpSymbols.js.map +1 -0
- package/dist/cjs/mcp/cognitiveMap.d.ts +39 -10
- package/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -1
- package/dist/cjs/mcp/cognitiveMap.js +488 -31
- package/dist/cjs/mcp/cognitiveMap.js.map +1 -1
- package/dist/cjs/mcp/index.js +6 -0
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/cjs/mcp/tools/analysis.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/analysis.js +9 -0
- package/dist/cjs/mcp/tools/analysis.js.map +1 -1
- package/dist/cjs/mcp/tools/codenav.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/codenav.js +45 -76
- package/dist/cjs/mcp/tools/codenav.js.map +1 -1
- package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/context-tools.js +28 -0
- package/dist/cjs/mcp/tools/context-tools.js.map +1 -1
- package/dist/cjs/mcp/tools/depgraph.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/depgraph.js +15 -0
- package/dist/cjs/mcp/tools/depgraph.js.map +1 -1
- package/dist/cjs/mcp/tools/dev-utils.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/dev-utils.js +6 -0
- package/dist/cjs/mcp/tools/dev-utils.js.map +1 -1
- package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/devtools.js +51 -39
- package/dist/cjs/mcp/tools/devtools.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +10 -0
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/mcp/tools/misc.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/misc.js +11 -0
- package/dist/cjs/mcp/tools/misc.js.map +1 -1
- package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/refactor.js +9 -0
- package/dist/cjs/mcp/tools/refactor.js.map +1 -1
- package/dist/cjs/mcp/tools.d.ts +1 -0
- package/dist/cjs/mcp/tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools.js +44 -7
- package/dist/cjs/mcp/tools.js.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.d.ts +11 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +8 -0
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/utils/SearchCache.d.ts +2 -2
- package/dist/cjs/utils/SearchCache.d.ts.map +1 -1
- package/dist/cjs/utils/SearchCache.js +6 -6
- package/dist/cjs/utils/SearchCache.js.map +1 -1
- package/dist/cjs/utils/WorkspaceSearch.d.ts +3 -1
- package/dist/cjs/utils/WorkspaceSearch.d.ts.map +1 -1
- package/dist/cjs/utils/WorkspaceSearch.js +5 -2
- package/dist/cjs/utils/WorkspaceSearch.js.map +1 -1
- package/dist/esm/language-core/contracts/CapabilityMatrix.d.ts +10 -0
- package/dist/esm/language-core/contracts/CapabilityMatrix.d.ts.map +1 -0
- package/dist/esm/language-core/contracts/CapabilityMatrix.js +66 -0
- package/dist/esm/language-core/contracts/CapabilityMatrix.js.map +1 -0
- package/dist/esm/language-core/detection/detectProjectType.d.ts +17 -0
- package/dist/esm/language-core/detection/detectProjectType.d.ts.map +1 -0
- package/dist/esm/language-core/detection/detectProjectType.js +150 -0
- package/dist/esm/language-core/detection/detectProjectType.js.map +1 -0
- package/dist/esm/language-core/registry/adapterRegistry.d.ts +11 -0
- package/dist/esm/language-core/registry/adapterRegistry.d.ts.map +1 -0
- package/dist/esm/language-core/registry/adapterRegistry.js +41 -0
- package/dist/esm/language-core/registry/adapterRegistry.js.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.d.ts +24 -0
- package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.d.ts.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.js +162 -0
- package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.js.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts +37 -0
- package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.js +44 -0
- package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.js.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.d.ts +25 -0
- package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.d.ts.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.js +201 -0
- package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.js.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.d.ts +18 -0
- package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.d.ts.map +1 -0
- package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.js +175 -0
- package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.js.map +1 -0
- package/dist/esm/languages/csharp/csharpSymbols.d.ts +33 -0
- package/dist/esm/languages/csharp/csharpSymbols.d.ts.map +1 -0
- package/dist/esm/languages/csharp/csharpSymbols.js +268 -0
- package/dist/esm/languages/csharp/csharpSymbols.js.map +1 -0
- package/dist/esm/mcp/cognitiveMap.d.ts +39 -10
- package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -1
- package/dist/esm/mcp/cognitiveMap.js +442 -25
- package/dist/esm/mcp/cognitiveMap.js.map +1 -1
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/tools/analysis.d.ts.map +1 -1
- package/dist/esm/mcp/tools/analysis.js +9 -0
- package/dist/esm/mcp/tools/analysis.js.map +1 -1
- package/dist/esm/mcp/tools/codenav.d.ts.map +1 -1
- package/dist/esm/mcp/tools/codenav.js +46 -77
- package/dist/esm/mcp/tools/codenav.js.map +1 -1
- package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools/context-tools.js +28 -0
- package/dist/esm/mcp/tools/context-tools.js.map +1 -1
- package/dist/esm/mcp/tools/depgraph.d.ts.map +1 -1
- package/dist/esm/mcp/tools/depgraph.js +15 -0
- package/dist/esm/mcp/tools/depgraph.js.map +1 -1
- package/dist/esm/mcp/tools/dev-utils.d.ts.map +1 -1
- package/dist/esm/mcp/tools/dev-utils.js +6 -0
- package/dist/esm/mcp/tools/dev-utils.js.map +1 -1
- package/dist/esm/mcp/tools/devtools.d.ts.map +1 -1
- package/dist/esm/mcp/tools/devtools.js +51 -39
- package/dist/esm/mcp/tools/devtools.js.map +1 -1
- package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
- package/dist/esm/mcp/tools/memory.js +10 -0
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/mcp/tools/misc.d.ts.map +1 -1
- package/dist/esm/mcp/tools/misc.js +11 -0
- package/dist/esm/mcp/tools/misc.js.map +1 -1
- package/dist/esm/mcp/tools/refactor.d.ts.map +1 -1
- package/dist/esm/mcp/tools/refactor.js +9 -0
- package/dist/esm/mcp/tools/refactor.js.map +1 -1
- package/dist/esm/mcp/tools.d.ts +1 -0
- package/dist/esm/mcp/tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools.js +45 -9
- package/dist/esm/mcp/tools.js.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.d.ts +11 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +8 -0
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/utils/SearchCache.d.ts +2 -2
- package/dist/esm/utils/SearchCache.d.ts.map +1 -1
- package/dist/esm/utils/SearchCache.js +6 -6
- package/dist/esm/utils/SearchCache.js.map +1 -1
- package/dist/esm/utils/WorkspaceSearch.d.ts +3 -1
- package/dist/esm/utils/WorkspaceSearch.d.ts.map +1 -1
- package/dist/esm/utils/WorkspaceSearch.js +5 -2
- package/dist/esm/utils/WorkspaceSearch.js.map +1 -1
- package/mcp-server.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const DOTNET_SUPPORT: {
|
|
2
|
+
readonly get_ast_hologram: "full";
|
|
3
|
+
readonly get_symbol_surgical_context: "full";
|
|
4
|
+
readonly depgraph: "partial";
|
|
5
|
+
readonly validate_patch_sandbox: "partial";
|
|
6
|
+
readonly refactor: "fallback";
|
|
7
|
+
readonly refactor_rename: "fallback";
|
|
8
|
+
readonly refactor_move: "fallback";
|
|
9
|
+
readonly surgical_ast_insert: "fallback";
|
|
10
|
+
readonly type_coverage_report: "fallback";
|
|
11
|
+
readonly entropy_score: "fallback";
|
|
12
|
+
};
|
|
13
|
+
/** True when this file/dir target should be served by the .NET adapter. */
|
|
14
|
+
export declare function isDotNetTarget(root: string, fileOrDir: string): boolean;
|
|
15
|
+
export declare function dotNetHologramResult(root: string, dirRel: string): {
|
|
16
|
+
content: Array<{
|
|
17
|
+
type: string;
|
|
18
|
+
text: string;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
21
|
+
export declare function dotNetSurgicalResult(root: string, filePath: string, symbolName: string): {
|
|
22
|
+
content: Array<{
|
|
23
|
+
type: string;
|
|
24
|
+
text: string;
|
|
25
|
+
}>;
|
|
26
|
+
};
|
|
27
|
+
export declare function dotNetDepgraphResult(root: string, filePath: string, opts: {
|
|
28
|
+
reverse?: boolean;
|
|
29
|
+
depth?: number;
|
|
30
|
+
format?: string;
|
|
31
|
+
}): {
|
|
32
|
+
content: Array<{
|
|
33
|
+
type: string;
|
|
34
|
+
text: string;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=DotNetLanguageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetLanguageAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetLanguageAdapter.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,cAAc;;;;;;;;;;;CAWjB,CAAC;AAEX,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKvE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAIpD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAMpD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAMpD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { resolveAdapterForFile, resolveAdapterForProject, } from "../../../language-core/registry/adapterRegistry.js";
|
|
2
|
+
import { formatDotNetDepGraph } from "./DotNetDependencyGraph.js";
|
|
3
|
+
import { dotNetSurgicalContext, formatDotNetHologram, } from "./DotNetSymbolGraph.js";
|
|
4
|
+
export const DOTNET_SUPPORT = {
|
|
5
|
+
get_ast_hologram: "full",
|
|
6
|
+
get_symbol_surgical_context: "full",
|
|
7
|
+
depgraph: "partial",
|
|
8
|
+
validate_patch_sandbox: "partial",
|
|
9
|
+
refactor: "fallback",
|
|
10
|
+
refactor_rename: "fallback",
|
|
11
|
+
refactor_move: "fallback",
|
|
12
|
+
surgical_ast_insert: "fallback",
|
|
13
|
+
type_coverage_report: "fallback",
|
|
14
|
+
entropy_score: "fallback",
|
|
15
|
+
};
|
|
16
|
+
/** True when this file/dir target should be served by the .NET adapter. */
|
|
17
|
+
export function isDotNetTarget(root, fileOrDir) {
|
|
18
|
+
if (!fileOrDir)
|
|
19
|
+
return resolveAdapterForProject(root) === "dotnet";
|
|
20
|
+
const byFile = resolveAdapterForFile(root, fileOrDir);
|
|
21
|
+
if (byFile)
|
|
22
|
+
return byFile === "dotnet";
|
|
23
|
+
return resolveAdapterForProject(root) === "dotnet";
|
|
24
|
+
}
|
|
25
|
+
export function dotNetHologramResult(root, dirRel) {
|
|
26
|
+
return {
|
|
27
|
+
content: [{ type: "text", text: formatDotNetHologram(root, dirRel) }],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function dotNetSurgicalResult(root, filePath, symbolName) {
|
|
31
|
+
return {
|
|
32
|
+
content: [
|
|
33
|
+
{ type: "text", text: dotNetSurgicalContext(root, filePath, symbolName) },
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function dotNetDepgraphResult(root, filePath, opts) {
|
|
38
|
+
return {
|
|
39
|
+
content: [
|
|
40
|
+
{ type: "text", text: formatDotNetDepGraph(root, filePath, opts) },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=DotNetLanguageAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetLanguageAdapter.js","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetLanguageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GAEzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,gBAAgB,EAAE,MAAM;IACxB,2BAA2B,EAAE,MAAM;IACnC,QAAQ,EAAE,SAAS;IACnB,sBAAsB,EAAE,SAAS;IACjC,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,UAAU;IAC/B,oBAAoB,EAAE,UAAU;IAChC,aAAa,EAAE,UAAU;CACjB,CAAC;AAEX,2EAA2E;AAC3E,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,SAAiB;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;IACnE,MAAM,MAAM,GAAqB,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxE,IAAI,MAAM;QAAE,OAAO,MAAM,KAAK,QAAQ,CAAC;IACvC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,MAAc;IAEd,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,QAAgB,EAChB,UAAkB;IAElB,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;SAC1E;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,QAAgB,EAChB,IAA4D;IAE5D,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;SACnE;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface DotNetValidation {
|
|
2
|
+
verdict: "SAFE TO APPLY" | "DO NOT APPLY -- Issues Found";
|
|
3
|
+
syntaxBalanced: boolean;
|
|
4
|
+
/** Human-readable outcome; explicit about whether a real build ran. */
|
|
5
|
+
csharpCheck: string;
|
|
6
|
+
buildAttempted: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Injectable CLI runner so unit tests never need the .NET SDK installed. */
|
|
9
|
+
export type DotNetRunner = (args: string[], cwd: string) => string;
|
|
10
|
+
export declare function defaultDotNetRunner(args: string[], cwd: string): string;
|
|
11
|
+
/** Cached `dotnet --version` probe. Never throws. */
|
|
12
|
+
export declare function isDotnetAvailable(): boolean;
|
|
13
|
+
export declare function resetDotnetAvailabilityCache(): void;
|
|
14
|
+
/** Nearest .csproj at or above the target file, relative to root. Null if none. */
|
|
15
|
+
export declare function findNearestCsproj(root: string, fileRel: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Three-level C# patch validation:
|
|
18
|
+
* 1. `dotnet build` on a temp copy of the owning project (real compiler).
|
|
19
|
+
* 2. Structural check (brackets + C# parse smoke) with an explicit disclaimer.
|
|
20
|
+
* 3. Never the TypeScript path — callers route here only for C# targets.
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateCSharpPatch(root: string, fileRel: string, patchedContent: string, runner?: DotNetRunner, opts?: {
|
|
23
|
+
dotnetAvailable?: boolean;
|
|
24
|
+
}): DotNetValidation;
|
|
25
|
+
//# sourceMappingURL=DotNetPatchValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetPatchValidator.d.ts","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetPatchValidator.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,GAAG,8BAA8B,CAAC;IAC1D,cAAc,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQvE;AAID,qDAAqD;AACrD,wBAAgB,iBAAiB,IAAI,OAAO,CAY3C;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAiBf;AAyDD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,YAAkC,EAC1C,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,gBAAgB,CAwFlB"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { execFileSync } from "child_process";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as os from "os";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { parseCSharpFile } from "../../csharp/csharpSymbols.js";
|
|
6
|
+
export function defaultDotNetRunner(args, cwd) {
|
|
7
|
+
return execFileSync("dotnet", args, {
|
|
8
|
+
cwd,
|
|
9
|
+
timeout: 120000,
|
|
10
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
11
|
+
encoding: "utf8",
|
|
12
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
let _dotnetAvailable = null;
|
|
16
|
+
/** Cached `dotnet --version` probe. Never throws. */
|
|
17
|
+
export function isDotnetAvailable() {
|
|
18
|
+
if (_dotnetAvailable !== null)
|
|
19
|
+
return _dotnetAvailable;
|
|
20
|
+
try {
|
|
21
|
+
execFileSync("dotnet", ["--version"], {
|
|
22
|
+
timeout: 15000,
|
|
23
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
24
|
+
});
|
|
25
|
+
_dotnetAvailable = true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
_dotnetAvailable = false;
|
|
29
|
+
}
|
|
30
|
+
return _dotnetAvailable;
|
|
31
|
+
}
|
|
32
|
+
export function resetDotnetAvailabilityCache() {
|
|
33
|
+
_dotnetAvailable = null;
|
|
34
|
+
}
|
|
35
|
+
/** Nearest .csproj at or above the target file, relative to root. Null if none. */
|
|
36
|
+
export function findNearestCsproj(root, fileRel) {
|
|
37
|
+
const stop = path.resolve(root);
|
|
38
|
+
let dir = path.dirname(path.resolve(root, fileRel));
|
|
39
|
+
while (true) {
|
|
40
|
+
try {
|
|
41
|
+
const entries = fs.readdirSync(dir);
|
|
42
|
+
const hit = entries.find((f) => f.toLowerCase().endsWith(".csproj"));
|
|
43
|
+
if (hit)
|
|
44
|
+
return path.relative(stop, path.join(dir, hit)).replace(/\\/g, "/");
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (dir === stop)
|
|
50
|
+
return null;
|
|
51
|
+
const parent = path.dirname(dir);
|
|
52
|
+
if (parent === dir || parent.length < stop.length)
|
|
53
|
+
return null;
|
|
54
|
+
dir = parent;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const MAX_COPY_FILES = 100;
|
|
58
|
+
const MAX_COPY_BYTES = 5 * 1024 * 1024;
|
|
59
|
+
const COPY_EXTS = new Set([".cs", ".csproj", ".props", ".targets", ".sln"]);
|
|
60
|
+
function copyProjectForBuild(root, csprojRel, targetRel, patchedContent) {
|
|
61
|
+
const sandboxDir = fs.mkdtempSync(path.join(os.tmpdir(), "lemma-dotnet-"));
|
|
62
|
+
const projectDir = path.dirname(path.join(root, csprojRel));
|
|
63
|
+
const stack = [projectDir];
|
|
64
|
+
let files = 0;
|
|
65
|
+
let bytes = 0;
|
|
66
|
+
while (stack.length > 0) {
|
|
67
|
+
const dir = stack.pop();
|
|
68
|
+
let entries;
|
|
69
|
+
try {
|
|
70
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
for (const e of entries) {
|
|
76
|
+
if (["bin", "obj", ".git", ".vs"].includes(e.name))
|
|
77
|
+
continue;
|
|
78
|
+
const abs = path.join(dir, e.name);
|
|
79
|
+
if (e.isDirectory()) {
|
|
80
|
+
stack.push(abs);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (!COPY_EXTS.has(path.extname(e.name).toLowerCase()))
|
|
84
|
+
continue;
|
|
85
|
+
if (files >= MAX_COPY_FILES)
|
|
86
|
+
break;
|
|
87
|
+
const rel = path.relative(projectDir, abs);
|
|
88
|
+
const dest = path.join(sandboxDir, rel);
|
|
89
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
90
|
+
if (path.relative(root, abs).replace(/\\/g, "/") === targetRel) {
|
|
91
|
+
fs.writeFileSync(dest, patchedContent, "utf8");
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
const st = fs.statSync(abs);
|
|
95
|
+
if (bytes + st.size > MAX_COPY_BYTES)
|
|
96
|
+
continue;
|
|
97
|
+
fs.copyFileSync(abs, dest);
|
|
98
|
+
bytes += st.size;
|
|
99
|
+
}
|
|
100
|
+
files++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return sandboxDir;
|
|
104
|
+
}
|
|
105
|
+
function bracketBalanced(content) {
|
|
106
|
+
const opens = (content.match(/[{[(]/g) || []).length;
|
|
107
|
+
const closes = (content.match(/[}\])]/g) || []).length;
|
|
108
|
+
return Math.abs(opens - closes) <= 2;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Three-level C# patch validation:
|
|
112
|
+
* 1. `dotnet build` on a temp copy of the owning project (real compiler).
|
|
113
|
+
* 2. Structural check (brackets + C# parse smoke) with an explicit disclaimer.
|
|
114
|
+
* 3. Never the TypeScript path — callers route here only for C# targets.
|
|
115
|
+
*/
|
|
116
|
+
export function validateCSharpPatch(root, fileRel, patchedContent, runner = defaultDotNetRunner, opts = {}) {
|
|
117
|
+
const balanced = bracketBalanced(patchedContent);
|
|
118
|
+
let structural;
|
|
119
|
+
try {
|
|
120
|
+
const s = parseCSharpFile(patchedContent);
|
|
121
|
+
const total = s.classes.length +
|
|
122
|
+
s.interfaces.length +
|
|
123
|
+
s.enums.length +
|
|
124
|
+
s.records.length +
|
|
125
|
+
s.structs.length;
|
|
126
|
+
structural = `parsed OK (${total} types, ${s.methods.length} methods)`;
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
return {
|
|
130
|
+
verdict: "DO NOT APPLY -- Issues Found",
|
|
131
|
+
syntaxBalanced: balanced,
|
|
132
|
+
csharpCheck: `C# structural parse failed: ${e?.message ?? e}`,
|
|
133
|
+
buildAttempted: false,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const csproj = findNearestCsproj(root, fileRel);
|
|
137
|
+
if (!csproj) {
|
|
138
|
+
return {
|
|
139
|
+
verdict: balanced ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
|
|
140
|
+
syntaxBalanced: balanced,
|
|
141
|
+
csharpCheck: `No .csproj found near ${fileRel} — structural check only (${structural}), NOT a build.`,
|
|
142
|
+
buildAttempted: false,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const dotnetAvailable = opts.dotnetAvailable ?? isDotnetAvailable();
|
|
146
|
+
if (!dotnetAvailable) {
|
|
147
|
+
return {
|
|
148
|
+
verdict: balanced ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
|
|
149
|
+
syntaxBalanced: balanced,
|
|
150
|
+
csharpCheck: `.NET SDK not available — structural check only (${structural}), NOT a build. Install dotnet for compiler validation.`,
|
|
151
|
+
buildAttempted: false,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const sandboxDir = copyProjectForBuild(root, csproj, fileRel, patchedContent);
|
|
155
|
+
try {
|
|
156
|
+
const projectName = path.basename(csproj);
|
|
157
|
+
let output;
|
|
158
|
+
let exitedOk = true;
|
|
159
|
+
try {
|
|
160
|
+
output = runner([
|
|
161
|
+
"build",
|
|
162
|
+
projectName,
|
|
163
|
+
"--nologo",
|
|
164
|
+
"-v:q",
|
|
165
|
+
"/p:ContinuousIntegrationBuild=true",
|
|
166
|
+
], sandboxDir);
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
exitedOk = false;
|
|
170
|
+
const stdout = typeof e?.stdout === "string" ? e.stdout : "";
|
|
171
|
+
const stderr = typeof e?.stderr === "string" ? e.stderr : "";
|
|
172
|
+
output = `${stdout}\n${stderr}`.trim() || e?.message || String(e);
|
|
173
|
+
}
|
|
174
|
+
const errors = output
|
|
175
|
+
.split("\n")
|
|
176
|
+
.filter((l) => /error\s+CS\d+/i.test(l))
|
|
177
|
+
.slice(0, 40);
|
|
178
|
+
// A thrown runner (timeout, spawn failure) is never a pass, even without CS errors.
|
|
179
|
+
const ok = exitedOk && errors.length === 0 && !/Build FAILED/i.test(output);
|
|
180
|
+
const tail = output.length > 4000 ? `…\n${output.slice(-4000)}` : output;
|
|
181
|
+
return {
|
|
182
|
+
verdict: ok && balanced ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
|
|
183
|
+
syntaxBalanced: balanced,
|
|
184
|
+
csharpCheck: errors.length > 0
|
|
185
|
+
? errors.join("\n")
|
|
186
|
+
: ok
|
|
187
|
+
? `dotnet build passed.\n${tail}`
|
|
188
|
+
: `dotnet build failed.\n${tail}`,
|
|
189
|
+
buildAttempted: true,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
try {
|
|
194
|
+
fs.rmSync(sandboxDir, { recursive: true, force: true });
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// best-effort cleanup of the temp copy
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=DotNetPatchValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetPatchValidator.js","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetPatchValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CSharpFileSymbols } from "../../csharp/csharpSymbols.js";
|
|
2
|
+
export interface DotNetHologramEntry {
|
|
3
|
+
file: string;
|
|
4
|
+
kind: string;
|
|
5
|
+
name: string;
|
|
6
|
+
line: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function symbolsForFile(root: string, rel: string): CSharpFileSymbols | null;
|
|
9
|
+
/** Compact whole-scope symbol map, mirroring the TS hologram's per-file shape. */
|
|
10
|
+
export declare function dotNetHologram(root: string, dirRel: string): {
|
|
11
|
+
entries: DotNetHologramEntry[];
|
|
12
|
+
filesScanned: number;
|
|
13
|
+
truncated: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare function formatDotNetHologram(root: string, dirRel: string): string;
|
|
16
|
+
/** Surgical slice: declaration + signature block for one type or Type.Method. */
|
|
17
|
+
export declare function dotNetSurgicalContext(root: string, rel: string, symbolName: string): string;
|
|
18
|
+
//# sourceMappingURL=DotNetSymbolGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetSymbolGraph.d.ts","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetSymbolGraph.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AA4CpC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,iBAAiB,GAAG,IAAI,CAU1B;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb;IACD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,CA+BA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAqBzE;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,MAAM,CAiER"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { parseCSharpFile, } from "../../csharp/csharpSymbols.js";
|
|
4
|
+
const MAX_FILES = 200;
|
|
5
|
+
const MAX_SYMBOLS = 1000;
|
|
6
|
+
const MAX_SIG_LINES = 10;
|
|
7
|
+
function listCsFiles(root, dirRel) {
|
|
8
|
+
const out = [];
|
|
9
|
+
const base = path.join(root, dirRel);
|
|
10
|
+
const walk = (dir, rel) => {
|
|
11
|
+
if (out.length >= MAX_FILES)
|
|
12
|
+
return;
|
|
13
|
+
let entries;
|
|
14
|
+
try {
|
|
15
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
for (const e of entries) {
|
|
21
|
+
if (["node_modules", ".git", "bin", "obj", "dist", ".lemma"].includes(e.name))
|
|
22
|
+
continue;
|
|
23
|
+
const r = rel ? `${rel}/${e.name}` : e.name;
|
|
24
|
+
if (e.isDirectory())
|
|
25
|
+
walk(path.join(dir, e.name), r);
|
|
26
|
+
else if (e.name.toLowerCase().endsWith(".cs")) {
|
|
27
|
+
out.push(r);
|
|
28
|
+
if (out.length >= MAX_FILES)
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
walk(base, dirRel.replace(/^\//, "").replace(/\/$/, ""));
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
function findDeclLine(lines, name) {
|
|
37
|
+
const re = new RegExp(`\\b${name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`);
|
|
38
|
+
for (let i = 0; i < lines.length; i++) {
|
|
39
|
+
if (re.test(lines[i]))
|
|
40
|
+
return i + 1;
|
|
41
|
+
}
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
export function symbolsForFile(root, rel) {
|
|
45
|
+
let content;
|
|
46
|
+
try {
|
|
47
|
+
const st = fs.statSync(path.join(root, rel));
|
|
48
|
+
if (!st.isFile())
|
|
49
|
+
return null;
|
|
50
|
+
content = fs.readFileSync(path.join(root, rel), "utf8");
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
return parseCSharpFile(content);
|
|
56
|
+
}
|
|
57
|
+
/** Compact whole-scope symbol map, mirroring the TS hologram's per-file shape. */
|
|
58
|
+
export function dotNetHologram(root, dirRel) {
|
|
59
|
+
const files = listCsFiles(root, dirRel || "");
|
|
60
|
+
const entries = [];
|
|
61
|
+
let truncated = false;
|
|
62
|
+
for (const rel of files) {
|
|
63
|
+
const syms = symbolsForFile(root, rel);
|
|
64
|
+
if (!syms)
|
|
65
|
+
continue;
|
|
66
|
+
let lines = null;
|
|
67
|
+
const push = (kind, name) => {
|
|
68
|
+
if (entries.length >= MAX_SYMBOLS) {
|
|
69
|
+
truncated = true;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (!lines) {
|
|
73
|
+
try {
|
|
74
|
+
lines = fs.readFileSync(path.join(root, rel), "utf8").split("\n");
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
lines = [];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
entries.push({ file: rel, kind, name, line: findDeclLine(lines, name) });
|
|
81
|
+
};
|
|
82
|
+
for (const n of syms.classes)
|
|
83
|
+
push("class", n);
|
|
84
|
+
for (const n of syms.interfaces)
|
|
85
|
+
push("interface", n);
|
|
86
|
+
for (const n of syms.enums)
|
|
87
|
+
push("enum", n);
|
|
88
|
+
for (const n of syms.records)
|
|
89
|
+
push("record", n);
|
|
90
|
+
for (const n of syms.structs)
|
|
91
|
+
push("struct", n);
|
|
92
|
+
for (const m of syms.methods)
|
|
93
|
+
push("method", m);
|
|
94
|
+
if (truncated)
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
return { entries, filesScanned: files.length, truncated };
|
|
98
|
+
}
|
|
99
|
+
export function formatDotNetHologram(root, dirRel) {
|
|
100
|
+
const { entries, filesScanned, truncated } = dotNetHologram(root, dirRel);
|
|
101
|
+
const lines = [
|
|
102
|
+
`### .NET symbol hologram for \`${dirRel || "."}\` (${filesScanned} .cs files, ${entries.length} symbols)`,
|
|
103
|
+
];
|
|
104
|
+
const byFile = new Map();
|
|
105
|
+
for (const e of entries) {
|
|
106
|
+
const list = byFile.get(e.file) ?? [];
|
|
107
|
+
list.push(e);
|
|
108
|
+
byFile.set(e.file, list);
|
|
109
|
+
}
|
|
110
|
+
for (const [file, list] of byFile) {
|
|
111
|
+
lines.push(`\n**${file}**`);
|
|
112
|
+
for (const e of list)
|
|
113
|
+
lines.push(` - ${e.kind} ${e.name}${e.line ? ` (line ${e.line})` : ""}`);
|
|
114
|
+
}
|
|
115
|
+
if (truncated)
|
|
116
|
+
lines.push(`\n(truncated at ${MAX_SYMBOLS} symbols — narrow dirPath for the full map)`);
|
|
117
|
+
return lines.join("\n");
|
|
118
|
+
}
|
|
119
|
+
/** Surgical slice: declaration + signature block for one type or Type.Method. */
|
|
120
|
+
export function dotNetSurgicalContext(root, rel, symbolName) {
|
|
121
|
+
let content;
|
|
122
|
+
try {
|
|
123
|
+
content = fs.readFileSync(path.join(root, rel), "utf8");
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return `Symbol \`${symbolName}\` not found: cannot read \`${rel}\`.`;
|
|
127
|
+
}
|
|
128
|
+
const syms = parseCSharpFile(content);
|
|
129
|
+
const lines = content.split("\n");
|
|
130
|
+
const [wantType, wantMember] = symbolName.includes(".")
|
|
131
|
+
? symbolName.split(".", 2)
|
|
132
|
+
: [null, symbolName];
|
|
133
|
+
const allTypes = [
|
|
134
|
+
...syms.classes,
|
|
135
|
+
...syms.interfaces,
|
|
136
|
+
...syms.enums,
|
|
137
|
+
...syms.records,
|
|
138
|
+
...syms.structs,
|
|
139
|
+
];
|
|
140
|
+
const header = syms.namespaces.length > 0
|
|
141
|
+
? `namespace ${syms.namespaces[0]};`
|
|
142
|
+
: "(global namespace)";
|
|
143
|
+
// Member lookup: Type.Member
|
|
144
|
+
if (wantType && allTypes.includes(wantType)) {
|
|
145
|
+
const hits = syms.methods.filter((m) => m === `${wantType}.${wantMember}`);
|
|
146
|
+
if (hits.length > 0) {
|
|
147
|
+
const idx = lines.findIndex((l) => new RegExp(`\\b${wantMember}\\s*\\(`).test(l));
|
|
148
|
+
const sig = idx >= 0
|
|
149
|
+
? lines
|
|
150
|
+
.slice(idx, Math.min(lines.length, idx + MAX_SIG_LINES))
|
|
151
|
+
.join("\n")
|
|
152
|
+
: `${wantType}.${wantMember}`;
|
|
153
|
+
return `# 🧬 Surgical Context: Symbol \`${symbolName}\` in \`${rel}\` (.NET)\n${header}\n## Declaration\n\`\`\`csharp\n${sig}\n\`\`\``;
|
|
154
|
+
}
|
|
155
|
+
const typeIdx = lines.findIndex((l) => new RegExp(`\\b${wantType}\\b`).test(l));
|
|
156
|
+
const decl = typeIdx >= 0
|
|
157
|
+
? lines.slice(typeIdx, Math.min(lines.length, typeIdx + 3)).join("\n")
|
|
158
|
+
: wantType;
|
|
159
|
+
return `# 🧬 Surgical Context: Symbol \`${symbolName}\` in \`${rel}\` (.NET)\n${header}\n## Declaration\n\`\`\`csharp\n${decl}\n\`\`\`\n(Member \`${wantMember}\` not found on \`${wantType}\`.)`;
|
|
160
|
+
}
|
|
161
|
+
// Bare type lookup
|
|
162
|
+
if (allTypes.includes(wantMember)) {
|
|
163
|
+
const idx = lines.findIndex((l) => new RegExp(`\\b${wantMember}\\b`).test(l));
|
|
164
|
+
const decl = idx >= 0
|
|
165
|
+
? lines.slice(idx, Math.min(lines.length, idx + 3)).join("\n")
|
|
166
|
+
: wantMember;
|
|
167
|
+
const members = syms.methods.filter((m) => m.startsWith(`${wantMember}.`));
|
|
168
|
+
const memberList = members.length > 0
|
|
169
|
+
? `\n## Members\n${members.map((m) => ` - ${m}`).join("\n")}`
|
|
170
|
+
: "";
|
|
171
|
+
return `# 🧬 Surgical Context: Symbol \`${symbolName}\` in \`${rel}\` (.NET)\n${header}\n## Declaration\n\`\`\`csharp\n${decl}\n\`\`\`${memberList}`;
|
|
172
|
+
}
|
|
173
|
+
return `Symbol \`${symbolName}\` not found in \`${rel}\` (.NET). Known types: ${allTypes.slice(0, 20).join(", ") || "(none)"}.`;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=DotNetSymbolGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DotNetSymbolGraph.js","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetSymbolGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface CSharpFileSymbols {
|
|
2
|
+
namespaces: string[];
|
|
3
|
+
usings: string[];
|
|
4
|
+
classes: string[];
|
|
5
|
+
interfaces: string[];
|
|
6
|
+
enums: string[];
|
|
7
|
+
records: string[];
|
|
8
|
+
structs: string[];
|
|
9
|
+
/** Best-effort `TypeName.MethodName`; methods that cannot be attributed appear bare. */
|
|
10
|
+
methods: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface CsprojInfo {
|
|
13
|
+
targetFrameworks: string[];
|
|
14
|
+
projectReferences: string[];
|
|
15
|
+
packageReferences: Array<{
|
|
16
|
+
name: string;
|
|
17
|
+
version?: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export declare const CSHARP_MAX_FILE_BYTES = 300000;
|
|
21
|
+
/**
|
|
22
|
+
* Replace comments and string/char literals with spaces (newlines preserved)
|
|
23
|
+
* so declaration regexes never match inside them.
|
|
24
|
+
*/
|
|
25
|
+
export declare function maskNonCode(content: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Deterministic line-based C# symbol extraction. Documented limits:
|
|
28
|
+
* methods are attributed to the innermost lexically-open type; expression edge
|
|
29
|
+
* cases (local functions, lambdas assigned to fields) are ignored by design.
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseCSharpFile(content: string): CSharpFileSymbols;
|
|
32
|
+
export declare function parseCsproj(content: string): CsprojInfo;
|
|
33
|
+
//# sourceMappingURL=csharpSymbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharpSymbols.d.ts","sourceRoot":"","sources":["../../../../src/languages/csharp/csharpSymbols.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wFAAwF;IACxF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,qBAAqB,SAAU,CAAC;AA8B7C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA4GnD;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAgGlE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAgCvD"}
|